diff options
| author | Kit La Touche <kit@transneptune.net> | 2024-10-10 13:26:15 -0400 |
|---|---|---|
| committer | Kit La Touche <kit@transneptune.net> | 2024-10-10 13:26:15 -0400 |
| commit | 03f8d9ad603a4e523a0e2a0e60ad62c8725f0875 (patch) | |
| tree | b01543c0c2dadbd4be17320d47fc2e3d2fdb280d /hi-ui/src/lib/store | |
| parent | efae871b1bdb1e01081a44218281950cf0177f3b (diff) | |
| parent | d173bc08f2b699f58c8cca752ff688ad46f33ced (diff) | |
Merge branch 'main' into wip/path-routing-for-channels
Diffstat (limited to 'hi-ui/src/lib/store')
| -rw-r--r-- | hi-ui/src/lib/store/channels.js | 4 | ||||
| -rw-r--r-- | hi-ui/src/lib/store/logins.js | 22 | ||||
| -rw-r--r-- | hi-ui/src/lib/store/messages.js | 29 |
3 files changed, 40 insertions, 15 deletions
diff --git a/hi-ui/src/lib/store/channels.js b/hi-ui/src/lib/store/channels.js index 20702cc..bb6c86c 100644 --- a/hi-ui/src/lib/store/channels.js +++ b/hi-ui/src/lib/store/channels.js @@ -9,8 +9,8 @@ export class Channels { return this; } - addChannel(channel) { - this.channels = [...this.channels, channel]; + addChannel(id, name) { + this.channels = [...this.channels, { id, name }]; this.sort(); return this; } diff --git a/hi-ui/src/lib/store/logins.js b/hi-ui/src/lib/store/logins.js new file mode 100644 index 0000000..5b45206 --- /dev/null +++ b/hi-ui/src/lib/store/logins.js @@ -0,0 +1,22 @@ +export class Logins { + constructor() { + this.logins = {}; + } + + addLogin(id, name) { + this.logins[id] = name; + return this; + } + + setLogins(logins) { + this.logins = {}; + for (let { id, name } of logins) { + this.addLogin(id, name); + } + return this; + } + + get(id) { + return this.logins[id]; + } +} diff --git a/hi-ui/src/lib/store/messages.js b/hi-ui/src/lib/store/messages.js index 560b9e1..931b8fb 100644 --- a/hi-ui/src/lib/store/messages.js +++ b/hi-ui/src/lib/store/messages.js @@ -4,28 +4,31 @@ export class Messages { } inChannel(channel) { - return this.channels[channel] || []; + return this.channels[channel] = (this.channels[channel] || []); } - addMessage(message) { - let { - channel, - ...payload - } = message; - let channel_id = channel.id; - this.updateChannel(channel_id, (messages) => [...messages, payload]); + 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; } - deleteMessage(channel, message) { - let messages = this.messages(channel).filter((msg) => msg.message.id != message); - this.channels[channel] = messages; + deleteMessage(message) { + for (let channel in this.channels) { + this.updateChannel(channel, (messages) => messages.filter((msg) => msg.id != message)); + } + return this; } deleteChannel(id) { |
