feat: Enhance user state management with polling and WebSocket connection handling
This commit is contained in:
@@ -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 };
|
||||
});
|
||||
|
||||
@@ -21,10 +21,19 @@ export const useUserInfo = defineStore('userInfo', () => {
|
||||
async function requestState() {
|
||||
await axios.get(`${api}/status`, {withCredentials: true}).then((response) => {
|
||||
console.log("STATUS DATA:" + response.data.status + response.data.inGame)
|
||||
username.value = response.data.username;
|
||||
if (response.data.gameId) {
|
||||
console.log("GAMEID:" + response.data.gameId)
|
||||
gameId.value = response.data.gameId;
|
||||
if (response.data.status === 'authenticated') {
|
||||
username.value = response.data.username;
|
||||
userId.value = response.data.userId;
|
||||
if (response.data.gameId) {
|
||||
console.log("GAMEID:" + response.data.gameId)
|
||||
gameId.value = response.data.gameId;
|
||||
} else {
|
||||
gameId.value = null;
|
||||
}
|
||||
} else {
|
||||
username.value = null;
|
||||
userId.value = null;
|
||||
gameId.value = null;
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user