From 03d92e9e7c25d5dc0a39eb5496783ba16fba6966 Mon Sep 17 00:00:00 2001 From: Arseniy Klempner Date: Thu, 3 Apr 2025 18:32:19 -0700 Subject: [PATCH] matchmaking and message sending scenarios --- .../src/lib/components/ActionButtons.svelte | 420 ++++++++++-------- .../lib/components/ConnectionButton.svelte | 213 +++++---- .../src/lib/components/History.svelte | 104 ++--- .../src/lib/components/HistoryItem.svelte | 8 +- .../lib/components/StateGraphDashboard.svelte | 143 ------ .../lib/components/StateGraphSummary.svelte | 81 +++- examples/sds-demo/src/lib/sds.svelte.ts | 15 +- .../sds-demo/src/lib/sds/channel.svelte.ts | 12 +- examples/sds-demo/src/lib/sds/message.ts | 4 + .../sds-demo/src/lib/sds/stream.svelte.ts | 70 +-- .../sds-demo/src/lib/utils/event.svelte.ts | 52 +++ examples/sds-demo/src/lib/utils/event.ts | 20 - examples/sds-demo/src/lib/utils/hash.ts | 7 + .../sds-demo/src/lib/utils/match.svelte.ts | 11 + .../src/lib/utils/stateGraph.svelte.ts | 52 +-- .../sds-demo/src/lib/waku/lobby.svelte.ts | 216 +++++++++ .../sds-demo/src/lib/waku/pingpong.svelte.ts | 210 +++++++++ examples/sds-demo/src/lib/waku/waku.svelte.ts | 185 +++++++- examples/sds-demo/src/routes/+layout.svelte | 2 +- .../sds-demo/src/routes/lobby/+page.svelte | 81 ++++ .../src/routes/state-graph/+page.svelte | 60 +-- 21 files changed, 1321 insertions(+), 645 deletions(-) delete mode 100644 examples/sds-demo/src/lib/components/StateGraphDashboard.svelte create mode 100644 examples/sds-demo/src/lib/utils/event.svelte.ts delete mode 100644 examples/sds-demo/src/lib/utils/event.ts create mode 100644 examples/sds-demo/src/lib/utils/hash.ts create mode 100644 examples/sds-demo/src/lib/utils/match.svelte.ts create mode 100644 examples/sds-demo/src/lib/waku/lobby.svelte.ts create mode 100644 examples/sds-demo/src/lib/waku/pingpong.svelte.ts create mode 100644 examples/sds-demo/src/routes/lobby/+page.svelte diff --git a/examples/sds-demo/src/lib/components/ActionButtons.svelte b/examples/sds-demo/src/lib/components/ActionButtons.svelte index 599e91c..c1530e8 100644 --- a/examples/sds-demo/src/lib/components/ActionButtons.svelte +++ b/examples/sds-demo/src/lib/components/ActionButtons.svelte @@ -1,213 +1,247 @@
- - -
- - - - - {#if showDropdown} - - {/if} -
+ {#if !match} + + {/if} + +
+ + + + + {#if showDropdown} + + {/if} +
\ No newline at end of file + .send-button:hover { + background-color: #2563eb; + } + + .send-dropdown-container { + position: relative; + display: flex; + } + + .dropdown-toggle { + background-color: #2563eb; + color: white; + border-radius: 0 4px 4px 0; + border-left: 1px solid rgba(255, 255, 255, 0.3); + display: flex; + align-items: center; + padding: 0.4rem 0.6rem; + min-width: auto; + } + + .dropdown-toggle .arrow { + font-size: 0.7rem; + margin-left: 4px; + } + + .send-button { + border-radius: 4px 0 0 4px; + } + + .dropdown-menu { + position: absolute; + top: 100%; + right: 0; + background-color: white; + border-radius: 4px; + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); + z-index: 10; + min-width: 120px; + margin-top: 4px; + } + + .dropdown-item { + padding: 0.5rem 1rem; + font-size: 0.85rem; + cursor: pointer; + transition: background-color 0.2s; + } + + .dropdown-item:hover { + background-color: #f0f9ff; + } + diff --git a/examples/sds-demo/src/lib/components/ConnectionButton.svelte b/examples/sds-demo/src/lib/components/ConnectionButton.svelte index a273647..a7b1c16 100644 --- a/examples/sds-demo/src/lib/components/ConnectionButton.svelte +++ b/examples/sds-demo/src/lib/components/ConnectionButton.svelte @@ -1,112 +1,141 @@
- {#if $connectionState.status === "disconnected"} - - {:else if $connectionState.status === "connecting"} - Starting node . . . - {:else if $connectionState.status === "waiting_for_peers"} - Waiting for peers . . . - {:else if $connectionState.status === "setting_up_subscriptions"} - Setting up subscriptions . . . - {:else if $connectionState.status === "connected"} - Connected - {:else if $connectionState.status === "error"} -
- Error: {$connectionState.error} - -
- {/if} + {#if $connectionState.status === 'disconnected'} + + {:else if $connectionState.status === 'connecting'} + Starting node . . . + {:else if $connectionState.status === 'waiting_for_peers'} + Waiting for peers . . . + {:else if $connectionState.status === 'setting_up_subscriptions'} + Setting up subscriptions . . . + {:else if $connectionState.status === 'connected'} + {#if afterConnectState !== ''} + {afterConnectState} + {:else} + Connected + {/if} + {:else if $connectionState.status === 'error'} +
+ Error: {$connectionState.error} + +
+ {/if}
diff --git a/examples/sds-demo/src/lib/components/History.svelte b/examples/sds-demo/src/lib/components/History.svelte index bb99e89..dcda668 100644 --- a/examples/sds-demo/src/lib/components/History.svelte +++ b/examples/sds-demo/src/lib/components/History.svelte @@ -1,5 +1,5 @@
@@ -181,18 +137,18 @@
- {#if currentIdFilter} + {#if currentIdFilter.id }
- ID: {currentIdFilter} + ID: {currentIdFilter.id}
{/if} {#each filteredHistory as event, index} - diff --git a/examples/sds-demo/src/lib/components/HistoryItem.svelte b/examples/sds-demo/src/lib/components/HistoryItem.svelte index 5906f11..8e87374 100644 --- a/examples/sds-demo/src/lib/components/HistoryItem.svelte +++ b/examples/sds-demo/src/lib/components/HistoryItem.svelte @@ -20,7 +20,9 @@ [MessageChannelEvent.MessageReceived]: '#8B5CF6', // purple [MessageChannelEvent.MessageAcknowledged]: '#059669', // dark green [MessageChannelEvent.PartialAcknowledgement]: '#6D28D9', // dark purple - [MessageChannelEvent.MissedMessages]: '#EF4444' // red + [MessageChannelEvent.MissedMessages]: '#EF4444', // red + [MessageChannelEvent.SyncSent]: '#F59E0B', // orange + [MessageChannelEvent.SyncReceived]: '#F59E0B' // dark orange }; // Event type to display name using index signature @@ -30,7 +32,9 @@ [MessageChannelEvent.MessageReceived]: 'Received', [MessageChannelEvent.MessageAcknowledged]: 'Acknowledged', [MessageChannelEvent.PartialAcknowledgement]: 'Partially Acknowledged', - [MessageChannelEvent.MissedMessages]: 'Missed' + [MessageChannelEvent.MissedMessages]: 'Missed', + [MessageChannelEvent.SyncSent]: 'Sync Sent', + [MessageChannelEvent.SyncReceived]: 'Sync Received' }; $: id = event ? getMessageId(event) : null; diff --git a/examples/sds-demo/src/lib/components/StateGraphDashboard.svelte b/examples/sds-demo/src/lib/components/StateGraphDashboard.svelte deleted file mode 100644 index eafe0b1..0000000 --- a/examples/sds-demo/src/lib/components/StateGraphDashboard.svelte +++ /dev/null @@ -1,143 +0,0 @@ - - -
- {#if grid} -
-
- {#each grid as row} -
- {#each row as cell} - - {#if cell} - {@const id = getMessageId(cell)} - {#if id && identicons[id]} - - {/if} - {/if} - {/each} -
- {/each} -
-
- {/if} -
- - diff --git a/examples/sds-demo/src/lib/components/StateGraphSummary.svelte b/examples/sds-demo/src/lib/components/StateGraphSummary.svelte index 61a1659..77bd484 100644 --- a/examples/sds-demo/src/lib/components/StateGraphSummary.svelte +++ b/examples/sds-demo/src/lib/components/StateGraphSummary.svelte @@ -1,27 +1,30 @@ + + +
+
+ Waku Logo +
+
+ + +
+ +
+
+
+ + diff --git a/examples/sds-demo/src/routes/state-graph/+page.svelte b/examples/sds-demo/src/routes/state-graph/+page.svelte index beda3b7..1db5deb 100644 --- a/examples/sds-demo/src/routes/state-graph/+page.svelte +++ b/examples/sds-demo/src/routes/state-graph/+page.svelte @@ -1,42 +1,48 @@ -
- -
+ +
- -
+ > + +
-
- -
+ +
- + > + +
-
-
+{/if}