diff --git a/src/lib/components/layout/navbar/navbar-user.svelte b/src/lib/components/layout/navbar/navbar-user.svelte index 0c63c87..7232104 100644 --- a/src/lib/components/layout/navbar/navbar-user.svelte +++ b/src/lib/components/layout/navbar/navbar-user.svelte @@ -74,10 +74,6 @@ Mes badges - diff --git a/src/lib/stores/state.ts b/src/lib/stores/state.ts new file mode 100644 index 0000000..c0d3be5 --- /dev/null +++ b/src/lib/stores/state.ts @@ -0,0 +1,23 @@ +import { writable, type Writable } from 'svelte/store'; + +export const createStateStore = () => { + type State = { + requests: T[]; + }; + + const initialState: State = { requests: [] }; + const store: Writable = writable(initialState); + + return { + subscribe: store.subscribe, + addRequest: (newRequest: T) => { + store.update(state => ({ + ...state, + requests: [...state.requests, newRequest] + })); + }, + reset: () => store.set(initialState), + }; +} + +export type StateStore = ReturnType>; diff --git a/src/lib/stores/websocket.ts b/src/lib/stores/websocket.ts new file mode 100644 index 0000000..7194447 --- /dev/null +++ b/src/lib/stores/websocket.ts @@ -0,0 +1,21 @@ +import type { StateStore } from "./state"; + +export const connectWebSocket = (path: string, token: string | undefined, store: StateStore) => { + const ws = new WebSocket(`wss://api.peerat.dev${path}`); + + ws.onopen = () => { + console.log('WebSocket connection opened'); + if (token) { + ws.send(JSON.stringify({ token })); + } + }; + + ws.onclose = () => console.log('WebSocket connection closed'); + ws.onerror = (event) => console.log('WebSocket error:', event); + + ws.onmessage = (event) => { + console.log('WebSocket message:', event.data); + const data: T = JSON.parse(event.data); + store.addRequest(data); + }; +}; diff --git a/src/routes/(app)/+page.svelte b/src/routes/(app)/+page.svelte index 0b70737..cf5d159 100644 --- a/src/routes/(app)/+page.svelte +++ b/src/routes/(app)/+page.svelte @@ -36,7 +36,7 @@ {data.event.name} Participer en équipe de 1 à 4 joueurs - + {/if}