diff options
| author | Owen Jacobson <owen@grimoire.ca> | 2025-06-19 11:33:17 -0400 |
|---|---|---|
| committer | Owen Jacobson <owen@grimoire.ca> | 2025-06-20 22:27:37 -0400 |
| commit | 639f4b422adb0a6fc809161dd816d8382cf88138 (patch) | |
| tree | a84ed9111fbdab697af6e1bd3c2275a5b955a6c3 /ui/lib/state/remote/state.svelte.js | |
| parent | 4b522c804db8155f74a734c95ed962d996b2c692 (diff) | |
Boot the client by consuming events.
We use the same event processing glue that the client has for keeping up with live events, which means that a significant chunk of state management code goes away entirely.
Diffstat (limited to 'ui/lib/state/remote/state.svelte.js')
| -rw-r--r-- | ui/lib/state/remote/state.svelte.js | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/ui/lib/state/remote/state.svelte.js b/ui/lib/state/remote/state.svelte.js index a30e0fe..fb46489 100644 --- a/ui/lib/state/remote/state.svelte.js +++ b/ui/lib/state/remote/state.svelte.js @@ -4,27 +4,25 @@ import { Messages } from './messages.svelte.js'; export class State { currentUser = $state(); - users = $state(); - channels = $state(); - messages = $state(); + users = $state(new Users()); + channels = $state(new Channels()); + messages = $state(new Messages()); - static boot({ currentUser, heartbeat, users, channels, messages, resumePoint }) { - return new State({ + static boot({ currentUser, heartbeat, resumePoint, events }) { + const state = new State({ currentUser: User.boot(currentUser), heartbeat, - users: Users.boot(users), - channels: Channels.boot(channels), - messages: Messages.boot(messages), resumePoint, }); + for (const event of events) { + state.onEvent(event); + } + return state; } - constructor({ currentUser, heartbeat, users, channels, messages, resumePoint }) { + constructor({ currentUser, heartbeat, resumePoint }) { this.currentUser = currentUser; this.heartbeat = heartbeat; - this.users = users; - this.channels = channels; - this.messages = messages; this.resumePoint = resumePoint; } |
