Implement desktop sync protocol handling

This commit is contained in:
Misaka
2026-05-15 21:19:27 +08:00
parent 498251ad79
commit 4c314c510b
9 changed files with 253 additions and 14 deletions

View File

@@ -1,5 +1,8 @@
namespace WirelessTextSyncer.Windows.Models;
using System.Text.Json.Serialization;
[JsonConverter(typeof(SyncActionJsonConverter))]
public enum SyncAction
{
InsertText,

View File

@@ -0,0 +1,41 @@
using System.Text.Json;
using System.Text.Json.Serialization;
namespace WirelessTextSyncer.Windows.Models;
public sealed class SyncActionJsonConverter : JsonConverter<SyncAction>
{
public override SyncAction Read(
ref Utf8JsonReader reader,
Type typeToConvert,
JsonSerializerOptions options)
{
var value = reader.GetString();
return value switch
{
"insertText" => SyncAction.InsertText,
"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.Backspace => "backspace",
SyncAction.Enter => "enter",
SyncAction.Ping => "ping",
_ => throw new JsonException($"Unsupported sync action: {value}")
};
writer.WriteStringValue(action);
}
}