summaryrefslogtreecommitdiff
path: root/hi-ui/src/lib/apiServer.js
diff options
context:
space:
mode:
authorKit La Touche <kit@transneptune.net>2024-10-10 13:26:15 -0400
committerKit La Touche <kit@transneptune.net>2024-10-10 13:26:15 -0400
commit03f8d9ad603a4e523a0e2a0e60ad62c8725f0875 (patch)
treeb01543c0c2dadbd4be17320d47fc2e3d2fdb280d /hi-ui/src/lib/apiServer.js
parentefae871b1bdb1e01081a44218281950cf0177f3b (diff)
parentd173bc08f2b699f58c8cca752ff688ad46f33ced (diff)
Merge branch 'main' into wip/path-routing-for-channels
Diffstat (limited to 'hi-ui/src/lib/apiServer.js')
-rw-r--r--hi-ui/src/lib/apiServer.js57
1 files changed, 41 insertions, 16 deletions
diff --git a/hi-ui/src/lib/apiServer.js b/hi-ui/src/lib/apiServer.js
index 9a51715..f6d6148 100644
--- a/hi-ui/src/lib/apiServer.js
+++ b/hi-ui/src/lib/apiServer.js
@@ -1,5 +1,5 @@
import axios from 'axios';
-import { activeChannel, channelsList, messages } from '$lib/store';
+import { activeChannel, channelsList, logins, messages } from '$lib/store';
export const apiServer = axios.create({
baseURL: '/api/',
@@ -25,8 +25,8 @@ export async function createChannel(name) {
return apiServer.post('/channels', { name });
}
-export async function postToChannel(channelId, message) {
- return apiServer.post(`/channels/${channelId}`, { message });
+export async function postToChannel(channelId, body) {
+ return apiServer.post(`/channels/${channelId}`, { body });
}
export async function deleteMessage(messageId) {
@@ -55,22 +55,47 @@ export function subscribeToEvents(resume_point) {
const data = JSON.parse(evt.data);
switch (data.type) {
- case 'created':
- channelsList.update((value) => value.addChannel(data.channel))
+ case 'login':
+ onLoginEvent(data);
break;
- case 'message':
- messages.update((value) => value.addMessage(data));
- break;
- case 'message_deleted':
- messages.update((value) => value.deleteMessage(data.channel.id, data.message));
+ case 'channel':
+ onChannelEvent(data);
break;
- case 'deleted':
- activeChannel.update((value) => value.deleteChannel(data.channel));
- channelsList.update((value) => value.deleteChannel(data.channel));
- messages.update((value) => value.deleteChannel(data.channel));
- break;
- default:
+ case 'message':
+ onMessageEvent(data);
break;
}
}
}
+
+function onLoginEvent(data) {
+ switch (data.event) {
+ case 'created':
+ logins.update((value) => value.addLogin(data.id, data.name))
+ 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.channel, data.id, data.at, data.sender, data.body));
+ break;
+ case 'deleted':
+ messages.update((value) => value.deleteMessage(data.id));
+ break;
+ }
+}