← Back to Files
OutboxService.cs
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);
}
}