summaryrefslogtreecommitdiff
path: root/hi-ui/src/apiServer.js
diff options
context:
space:
mode:
authorOwen Jacobson <owen@grimoire.ca>2024-10-05 23:00:58 -0400
committerOwen Jacobson <owen@grimoire.ca>2024-10-05 23:00:58 -0400
commit05de3c7b211727039b3912311aa4bab6787a7457 (patch)
tree08a3860b68391514390f42872ccc1cb4c6e6afd2 /hi-ui/src/apiServer.js
parentbc514e0ea5f0a553f15ab8275961907877181520 (diff)
parent6a10fcaf64938da52b326ea80013d9f30ed62a6c (diff)
Merge branch 'wip/boot'
Diffstat (limited to 'hi-ui/src/apiServer.js')
-rw-r--r--hi-ui/src/apiServer.js48
1 files changed, 11 insertions, 37 deletions
diff --git a/hi-ui/src/apiServer.js b/hi-ui/src/apiServer.js
index 5e521de..f4a89a4 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/',
@@ -21,10 +21,6 @@ export async function logOut() {
return apiServer.post('/auth/logout', {});
}
-export async function listChannels() {
- return apiServer.get('/channels');
-}
-
export async function createChannel(name) {
return apiServer.post('/channels', { name });
}
@@ -37,9 +33,10 @@ export async function deleteMessage(messageId) {
// TODO
}
-export function subscribeToEvents() {
- const evtSource = new EventSource("/api/events");
- events.update(() => []);
+export function subscribeToEvents(resume_point) {
+ const eventsUrl = new URL('/api/events', window.location);
+ eventsUrl.searchParams.append('resume_point', resume_point);
+ const evtSource = new EventSource(eventsUrl.toString());
// 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.
@@ -59,41 +56,18 @@ export function subscribeToEvents() {
switch (data.type) {
case 'created':
+ channelsList.update((value) => value.addChannel(data.channel))
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;