Files
entgamers_pro/src/state/sessionSlice.ts
T
2024-07-30 18:20:11 -06:00

52 lines
1.2 KiB
TypeScript

import { createSlice, type PayloadAction } from '@reduxjs/toolkit'
import { type Models } from 'appwrite'
import { type ClanList } from 'entgamers-database/frontend/clanes'
import { type User } from 'entgamers-database/frontend/session'
export type SessionState =
| {
status: 'idle' | 'loading' | 'initializing'
session?: Models.Session
user?: User
clanes?: ClanList
}
const initialState: SessionState = {
status: 'initializing'
}
const sessionSlice = createSlice({
name: 'session',
initialState,
reducers: {
setStatus: (state, action: PayloadAction<SessionState['status']>) => {
return {
...state,
status: action.payload
}
},
setSession: (state, action: PayloadAction<SessionState['session']>) => {
return {
...state,
session: action.payload
}
},
setCurrentUser: (state, action: PayloadAction<SessionState['user']>) => {
return {
...state,
user: action.payload
}
},
setClanes: (state, action: PayloadAction<SessionState['clanes']>) => {
return {
...state,
clanes: action.payload
}
}
}
})
export const { setStatus, setSession, setCurrentUser, setClanes } = sessionSlice.actions
export default sessionSlice