summaryrefslogtreecommitdiff
path: root/ui/src/lib/apiServer.js
diff options
context:
space:
mode:
Diffstat (limited to 'ui/src/lib/apiServer.js')
-rw-r--r--ui/src/lib/apiServer.js101
1 files changed, 0 insertions, 101 deletions
diff --git a/ui/src/lib/apiServer.js b/ui/src/lib/apiServer.js
deleted file mode 100644
index f6d6148..0000000
--- a/ui/src/lib/apiServer.js
+++ /dev/null
@@ -1,101 +0,0 @@
-import axios from 'axios';
-import { activeChannel, channelsList, logins, messages } from '$lib/store';
-
-export const apiServer = axios.create({
- baseURL: '/api/',
-});
-
-export async function boot() {
- return apiServer.get('/boot');
-}
-
-export async function logIn(username, password) {
- const data = {
- name: username,
- password,
- };
- return apiServer.post('/auth/login', data);
-}
-
-export async function logOut() {
- return apiServer.post('/auth/logout', {});
-}
-
-export async function createChannel(name) {
- return apiServer.post('/channels', { name });
-}
-
-export async function postToChannel(channelId, body) {
- return apiServer.post(`/channels/${channelId}`, { body });
-}
-
-export async function deleteMessage(messageId) {
- // TODO
-}
-
-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.
- /*
- * Known message types as of now:
- * - created: a channel is created.
- * - action: ignore.
- * - message: a message is created.
- * - action: display message in channel.
- * - message_deleted: a message is deleted.
- * - action: replace message with <...>.
- * - deleted: a channel is deleted.
- * - action: remove channel from sidebar.
- */
- evtSource.onmessage = (evt) => {
- const data = JSON.parse(evt.data);
-
- switch (data.type) {
- case 'login':
- onLoginEvent(data);
- break;
- case 'channel':
- onChannelEvent(data);
- break;
- 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;
- }
-}