refactor(lst): added side bar plus dummy menus

This commit is contained in:
2025-02-20 07:22:18 -06:00
parent 5f8943492e
commit 54b1b6081a
43 changed files with 1795 additions and 188 deletions

View File

@@ -1,11 +1,17 @@
import {useRouter} from "@tanstack/react-router";
import {useSessionStore} from "../store/sessionStore";
import {useQueryClient} from "@tanstack/react-query";
export const useLogout = () => {
const clearSession = useSessionStore((state) => state.clearSession);
const logout = () => {
clearSession(); // Clears Zustand state
return "Logged out";
const {clearSession} = useSessionStore();
const router = useRouter();
const queryClient = useQueryClient();
const logout = async () => {
router.invalidate();
router.clearCache();
await clearSession();
queryClient.invalidateQueries();
window.location.reload();
};
return logout;

View File

@@ -35,10 +35,9 @@ export const useSession = () => {
gcTime: 10 * 60 * 1000, // 10 mins
refetchOnWindowFocus: true,
});
useEffect(() => {
if (data) {
setSession(data.token);
setSession(data.data.user, data.data.token);
}
if (error) {
clearSession();
@@ -47,5 +46,3 @@ export const useSession = () => {
return {session: data && token ? {user: data.user, token: data.token} : null, status, error};
};
export type SessionType = ReturnType<typeof useSession>;

View File

@@ -1,36 +1,39 @@
import {create} from "zustand";
// type User = {
// id: number;
// username: string;
// };
type User = {
id: number;
username: string;
role: string;
};
type SessionState = {
//user: User | null;
export type SessionState = {
user: User | null;
token: string | null;
setSession: (token: string) => void;
setSession: (user: SessionState["user"], token: string) => void;
clearSession: () => void;
};
export const useSessionStore = create<SessionState>((set) => {
// Initialize from localStorage
//const storedUser = localStorage.getItem("user");
const storedUser = localStorage.getItem("user");
const storedToken = localStorage.getItem("auth_token");
return {
//user: storedUser ? JSON.parse(storedUser) : null,
user: storedUser ? JSON.parse(storedUser) : null,
token: storedToken || null,
setSession: (token) => {
setSession: (user, token) => {
localStorage.setItem("auth_token", token);
//localStorage.setItem("user", JSON.stringify(user));
set({token});
set({user, token});
},
clearSession: () => {
localStorage.removeItem("auth_token");
//localStorage.removeItem("user");
set({token: null});
set({user: null, token: null});
},
};
});
export type SessionType = ReturnType<typeof useSessionStore>;