summaryrefslogtreecommitdiff
path: root/hi-ui/src/lib/store
diff options
context:
space:
mode:
Diffstat (limited to 'hi-ui/src/lib/store')
-rw-r--r--hi-ui/src/lib/store/channels.js4
-rw-r--r--hi-ui/src/lib/store/logins.js22
-rw-r--r--hi-ui/src/lib/store/messages.js29
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) {