diff options
Diffstat (limited to 'hi-ui/src/lib/apiServer.js')
| -rw-r--r-- | hi-ui/src/lib/apiServer.js | 57 |
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; + } +} |
