feat: Enhance user state management with polling and WebSocket connection handling

This commit is contained in:
2026-01-07 21:42:21 +01:00
parent ef073afd5e
commit 02869fff8b
8 changed files with 163 additions and 25 deletions

View File

@@ -9,12 +9,17 @@ const api = window?.__RUNTIME_CONFIG__?.API_URL;
export const useIngame = defineStore('ingame', () => {
const state: Ref<'Lobby' | 'InGame' | 'SelectTrump' | 'TieBreak' | 'FinishedMatch' | null> = ref(null);
const data: Ref<GameInfo | LobbyInfo | TieInfo | TrumpInfo | WonInfo | null> = ref(null);
const isWsConnected: Ref<boolean> = ref(false);
function setIngame(newState: 'Lobby' | 'InGame' | 'SelectTrump' | 'TieBreak' | 'FinishedMatch', newData: GameInfo | LobbyInfo | TieInfo | TrumpInfo | WonInfo) {
state.value = newState;
data.value = newData;
}
function setWsConnected(connected: boolean) {
isWsConnected.value = connected;
}
async function requestGame(gameId: string) {
await axios.get(`${api}/status/${gameId}`, {withCredentials: true}).then((response) => {
setIngame(response.data.state, response.data.data);
@@ -24,7 +29,8 @@ export const useIngame = defineStore('ingame', () => {
function clearIngame() {
state.value = null;
data.value = null;
isWsConnected.value = false;
}
return { state, data, requestGame, setIngame, clearIngame };
return { state, data, isWsConnected, requestGame, setIngame, clearIngame, setWsConnected };
});