Size: 926 B Modified: 27/06/2026 2:54 AM
using System.Text.Json;

namespace KaiChat.Mobile;

public sealed class OutboxService
{
    private const string QueueKey = "kaichat.mobile.outbox";
    private readonly JsonSerializerOptions _jsonOptions = new(JsonSerializerDefaults.Web) { WriteIndented = false };

    public List<OutboxMessage> Load()
    {
        var raw = Preferences.Default.Get(QueueKey, "");
        if (string.IsNullOrWhiteSpace(raw)) return new();

        try
        {
            return JsonSerializer.Deserialize<List<OutboxMessage>>(raw, _jsonOptions) ?? new();
        }
        catch
        {
            return new();
        }
    }

    public void Save(List<OutboxMessage> messages)
    {
        Preferences.Default.Set(QueueKey, JsonSerializer.Serialize(messages, _jsonOptions));
    }

    public void Enqueue(OutboxMessage message)
    {
        var messages = Load();
        messages.Add(message);
        Save(messages);
    }
}
Offline