using System.Text.Json; using System.Text.Json.Serialization; namespace WirelessTextSyncer.Windows.Models; public sealed class SyncActionJsonConverter : JsonConverter { public override SyncAction Read( ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { var value = reader.GetString(); return value switch { "insertText" => SyncAction.InsertText, "replaceAll" => SyncAction.ReplaceAll, "backspace" => SyncAction.Backspace, "enter" => SyncAction.Enter, "ping" => SyncAction.Ping, _ => throw new JsonException($"Unsupported sync action: {value}") }; } public override void Write( Utf8JsonWriter writer, SyncAction value, JsonSerializerOptions options) { var action = value switch { SyncAction.InsertText => "insertText", SyncAction.ReplaceAll => "replaceAll", SyncAction.Backspace => "backspace", SyncAction.Enter => "enter", SyncAction.Ping => "ping", _ => throw new JsonException($"Unsupported sync action: {value}") }; writer.WriteStringValue(action); } }