summaryrefslogtreecommitdiff
path: root/hi-ui/src/apiServer.js
diff options
context:
space:
mode:
authorOwen Jacobson <owen@grimoire.ca>2024-10-05 20:12:25 -0400
committerOwen Jacobson <owen@grimoire.ca>2024-10-05 20:23:54 -0400
commit8edd5625ad5dde0ef1637d5c89e9901b3ee65d73 (patch)
tree2dfa09776511bdae04e116a478a605957d2db2fe /hi-ui/src/apiServer.js
parentbc514e0ea5f0a553f15ab8275961907877181520 (diff)
Provide named operations for stored state.
Diffstat (limited to 'hi-ui/src/apiServer.js')
-rw-r--r--hi-ui/src/apiServer.js37
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 = '&laquo;&hellip;&raquo;';
- 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;