front-hub/src/stores/user.ts

34 lines
851 B
TypeScript
Raw Normal View History

2023-05-17 11:20:11 +00:00
import { User } from "@root/model/auth";
import { create } from "zustand";
import { createJSONStorage, devtools, persist } from "zustand/middleware";
interface UserStore {
userId: string | null;
user: User | null;
}
const initialState: UserStore = {
userId: null,
user: null,
};
export const useUserStore = create<UserStore>()(
persist(
devtools(
(set, get) => initialState,
{
name: "User store",
}
),
{
name: "user",
storage: createJSONStorage(() => localStorage),
}
)
);
export const setUserId = (userId: string | null) => useUserStore.setState({ userId });
export const setUser = (user: User | null) => useUserStore.setState({ user });
export const clearUser = () => useUserStore.setState({ ...initialState });