summaryrefslogtreecommitdiff
path: root/hi-ui/src
diff options
context:
space:
mode:
Diffstat (limited to 'hi-ui/src')
-rw-r--r--hi-ui/src/apiServer.js40
-rw-r--r--hi-ui/src/store/messages.js4
2 files changed, 29 insertions, 15 deletions
diff --git a/hi-ui/src/apiServer.js b/hi-ui/src/apiServer.js
index ec94e82..648edf5 100644
--- a/hi-ui/src/apiServer.js
+++ b/hi-ui/src/apiServer.js
@@ -55,22 +55,36 @@ export function subscribeToEvents(resume_point) {
const data = JSON.parse(evt.data);
switch (data.type) {
- case 'created':
- channelsList.update((value) => value.addChannel(data.id, data.name))
+ case 'channel':
+ onChannelEvent(data);
break;
case 'message':
- messages.update((value) => value.addMessage(data));
- break;
- case 'message_deleted':
- messages.update((value) => value.deleteMessage(data.channel.id, data.id));
- break;
- case 'deleted':
- activeChannel.update((value) => value.deleteChannel(data.id));
- channelsList.update((value) => value.deleteChannel(data.id));
- messages.update((value) => value.deleteChannel(data.id));
- break;
- default:
+ onMessageEvent(data);
break;
}
}
}
+
+function onChannelEvent(data) {
+ switch (data.event) {
+ case 'created':
+ channelsList.update((value) => value.addChannel(data.id, data.name))
+ break;
+ case 'deleted':
+ activeChannel.update((value) => value.deleteChannel(data.id));
+ channelsList.update((value) => value.deleteChannel(data.id));
+ messages.update((value) => value.deleteChannel(data.id));
+ break;
+ }
+}
+
+function onMessageEvent(data) {
+ switch (data.event) {
+ case 'sent':
+ messages.update((value) => value.addMessage(data));
+ break;
+ case 'deleted':
+ messages.update((value) => value.deleteMessage(data.channel.id, data.id));
+ break;
+ }
+}
diff --git a/hi-ui/src/store/messages.js b/hi-ui/src/store/messages.js
index 560b9e1..cefd725 100644
--- a/hi-ui/src/store/messages.js
+++ b/hi-ui/src/store/messages.js
@@ -24,8 +24,8 @@ export class Messages {
deleteMessage(channel, message) {
- let messages = this.messages(channel).filter((msg) => msg.message.id != message);
- this.channels[channel] = messages;
+ this.updateChannel(channel, (messages) => messages.filter((msg) => msg.id != message));
+ return this;
}
deleteChannel(id) {