diff options
| author | Owen Jacobson <owen@grimoire.ca> | 2024-10-05 20:12:25 -0400 |
|---|---|---|
| committer | Owen Jacobson <owen@grimoire.ca> | 2024-10-05 20:23:54 -0400 |
| commit | 8edd5625ad5dde0ef1637d5c89e9901b3ee65d73 (patch) | |
| tree | 2dfa09776511bdae04e116a478a605957d2db2fe /hi-ui/src/apiServer.js | |
| parent | bc514e0ea5f0a553f15ab8275961907877181520 (diff) | |
Provide named operations for stored state.
Diffstat (limited to 'hi-ui/src/apiServer.js')
| -rw-r--r-- | hi-ui/src/apiServer.js | 37 |
1 files changed, 6 insertions, 31 deletions
diff --git a/hi-ui/src/apiServer.js b/hi-ui/src/apiServer.js index 5e521de..6273576 100644 --- a/hi-ui/src/apiServer.js +++ b/hi-ui/src/apiServer.js @@ -1,5 +1,5 @@ import axios from 'axios'; -import { activeChannel, channelsList, events } from './store'; +import { activeChannel, channelsList, messages } from './store'; export const apiServer = axios.create({ baseURL: '/api/', @@ -39,7 +39,6 @@ export async function deleteMessage(messageId) { export function subscribeToEvents() { const evtSource = new EventSource("/api/events"); - events.update(() => []); // TODO: this should process all incoming events and store them. // TODO: eventually we'll need to handle expiring old info, so as not to use // infinite browser memory. @@ -61,39 +60,15 @@ export function subscribeToEvents() { case 'created': break; case 'message': - events.update((value) => { - const eventList = [...value, data]; - eventList.sort((a, b) => a.at - b.at); - return eventList; - }); + messages.update((value) => value.addMessage(data)); break; case 'message_deleted': - events.update((value) => { - const eventList = value.map((el) => { - if (el.message?.id === data.message) { - el.message.body = '«…»'; - return el - } else { - return el; - } - }); - return eventList; - }); + messages.update((value) => value.deleteMessage(data.channel.id, data.message)); break; case 'deleted': - activeChannel.update((value) => { - if (value?.id === data.channel) { - return null; - } - return value; - }); - channelsList.update((value) => { - const channelIndex = value.map((e) => e.id).indexOf(data.channel); - if (channelIndex !== -1) { - value.splice(channelIndex, 1); - } - return value; - }); + activeChannel.update((value) => value.deleteChannel(data.channel)); + channelsList.update((value) => value.deleteChannel(data.channel)); + messages.update((value) => value.deleteChannel(data.channel)); break; default: break; |
