diff options
Diffstat (limited to 'hi-ui/src')
| -rw-r--r-- | hi-ui/src/apiServer.js | 40 | ||||
| -rw-r--r-- | hi-ui/src/store/messages.js | 4 |
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) { |
