From 2f0b77e8fd02a137047c8975a573626cd76310ff Mon Sep 17 00:00:00 2001 From: Owen Jacobson Date: Wed, 9 Oct 2024 01:43:34 -0400 Subject: Return a flat message list on boot, not nested lists by channel. This is a bit easier to compute, and sets us up nicely for pulling message boot out of the `/api/boot` response entirely. --- hi-ui/src/store/logins.js | 3 ++- hi-ui/src/store/messages.js | 16 +++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) (limited to 'hi-ui/src/store') diff --git a/hi-ui/src/store/logins.js b/hi-ui/src/store/logins.js index 207b757..5b45206 100644 --- a/hi-ui/src/store/logins.js +++ b/hi-ui/src/store/logins.js @@ -8,7 +8,8 @@ export class Logins { return this; } - addLogins(logins) { + setLogins(logins) { + this.logins = {}; for (let { id, name } of logins) { this.addLogin(id, name); } diff --git a/hi-ui/src/store/messages.js b/hi-ui/src/store/messages.js index f9e0856..931b8fb 100644 --- a/hi-ui/src/store/messages.js +++ b/hi-ui/src/store/messages.js @@ -4,16 +4,22 @@ export class Messages { } inChannel(channel) { - return this.channels[channel] || []; + return this.channels[channel] = (this.channels[channel] || []); } - addMessage(channel, at, sender, body) { - this.updateChannel(channel, (messages) => [...messages, { at, sender, body }]); + addMessage(channel, id, at, sender, body) { + this.updateChannel(channel, (messages) => [...messages, { id, at, sender, body }]); return this; } - addMessages(channel, payloads) { - this.updateChannel(channel, (messages) => [...messages, ...payloads]); + setMessages(messages) { + this.channels = {}; + for (let { channel, id, at, sender, body } of messages) { + this.inChannel(channel).push({ id, at, sender, body, }); + } + for (let channel in this.channels) { + this.channels[channel].sort((a, b) => a.at - b.at); + } return this; } -- cgit v1.2.3