diff --git a/samples/eve-browser-network/Program.cs b/samples/eve-browser-network/Program.cs index 68f72e05..c26d654b 100644 --- a/samples/eve-browser-network/Program.cs +++ b/samples/eve-browser-network/Program.cs @@ -467,9 +467,9 @@ sealed class Args [MessagePackObject] public sealed class CounterState { - [Key("counterId")] public string CounterId { get; set; } = ""; - [Key("count")] public int Count { get; set; } - [Key("receipts")] public Dictionary Receipts { get; set; } = new(StringComparer.Ordinal); + [Key(0)] public string CounterId { get; set; } = ""; + [Key(1)] public int Count { get; set; } + [Key(2)] public Dictionary Receipts { get; set; } = new(StringComparer.Ordinal); public static CounterState Initial(string counterId) => new() { CounterId = counterId }; } diff --git a/samples/eve-browser-network/browser/main.ts b/samples/eve-browser-network/browser/main.ts index b04ee5c8..fac4cc43 100644 --- a/samples/eve-browser-network/browser/main.ts +++ b/samples/eve-browser-network/browser/main.ts @@ -7,6 +7,10 @@ import { decodeCultNetPayload, } from "cultmesh-browser"; +// CounterState is an integer-keyed MessagePack object: [counterId, count, receipts]. +const counterCount = (record: Parameters[0]) => + decodeCultNetPayload<[string, number, unknown]>(record)[1]; + declare global { interface Window { __sampleReady?: boolean; @@ -83,17 +87,17 @@ try { stateBindingResolver: async binding => { if (binding.pointerId !== "sample.counter.count") return undefined; return { - latest: async () => decodeCultNetPayload<{ count: number }>(counter.current!).count, + latest: async () => counterCount(counter.current!), watch: callback => counter.watch(record => { if (!record) return; - const count = decodeCultNetPayload<{ count: number }>(record).count; + const count = counterCount(record); window.__sampleCount = count; callback(count); }), }; }, }); - window.__sampleCount = decodeCultNetPayload<{ count: number }>(counter.current!).count; + window.__sampleCount = counterCount(counter.current!); window.__sampleReady = true; } catch (error) { const details = error instanceof AggregateError diff --git a/src/GameCult.Mesh/docs/getting-started/01-persist-typed-state.md b/src/GameCult.Mesh/docs/getting-started/01-persist-typed-state.md index 7520d67f..f7924ec8 100644 --- a/src/GameCult.Mesh/docs/getting-started/01-persist-typed-state.md +++ b/src/GameCult.Mesh/docs/getting-started/01-persist-typed-state.md @@ -15,8 +15,8 @@ using MessagePack; [MessagePackObject] public sealed class CounterState { - [Key("counterId")] public string CounterId { get; set; } = ""; - [Key("count")] public int Count { get; set; } + [Key(0)] public string CounterId { get; set; } = ""; + [Key(1)] public int Count { get; set; } } ```