summaryrefslogtreecommitdiff
path: root/ui/lib/state/remote/state.svelte.js
diff options
context:
space:
mode:
authorOwen Jacobson <owen@grimoire.ca>2025-06-19 11:33:17 -0400
committerOwen Jacobson <owen@grimoire.ca>2025-06-20 22:27:37 -0400
commit639f4b422adb0a6fc809161dd816d8382cf88138 (patch)
treea84ed9111fbdab697af6e1bd3c2275a5b955a6c3 /ui/lib/state/remote/state.svelte.js
parent4b522c804db8155f74a734c95ed962d996b2c692 (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.js22
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;
}