Files
aerbim-ht-monitor/frontend/app/store/userStore.ts

38 lines
1.2 KiB
TypeScript

import { create } from 'zustand'
import { User, UserState } from '../types'
interface UserStore extends UserState {
// состояние
isAuthenticated: boolean
user: User | null
// действия
setUser: (user: User | null) => void
setAuthenticated: (isAuthenticated: boolean) => void
logout: () => void
// асинхронные действия
//! что пользователь может делать асинхронно?
}
const useUserStore = create<UserStore>(set => ({
// начальное состояние
isAuthenticated: false,
user: null,
favorites: [],
// синхронные действия
setUser: user => set({ user }),
setAuthenticated: isAuthenticated => set({ isAuthenticated }),
logout: () => {
set({ isAuthenticated: false, user: null })
},
}))
export default useUserStore
// пример использования
// const { user, isAuthenticated } = useUserStore() -- получаем данные из стора
// const { setUser, setAuthenticated } = useUserStore() -- устанавливаем данные в стор
// const { logout } = useUserStore() -- выходим из пользовательского аккаунта