fix: persist auth across refresh

This commit is contained in:
2026-04-22 14:00:19 -04:00
parent f0b3338f08
commit 4b8a41d928
+31 -5
View File
@@ -19,13 +19,39 @@ interface AppState {
logout: () => void;
}
const initialUser =
typeof window !== "undefined"
? (() => {
const raw = localStorage.getItem("user");
return raw ? (JSON.parse(raw) as User) : null;
})()
: null;
const initialToken =
typeof window !== "undefined" ? localStorage.getItem("token") : null;
export const useStore = create<AppState>()((set) => ({
user: null,
token: null,
isAuthenticated: false,
setUser: (user) => set({ user, isAuthenticated: !!user }),
setToken: (token) => set({ token }),
user: initialUser,
token: initialToken,
isAuthenticated: !!initialToken,
setUser: (user) => {
if (typeof window !== "undefined") {
if (user) localStorage.setItem("user", JSON.stringify(user));
else localStorage.removeItem("user");
}
set({ user, isAuthenticated: !!user });
},
setToken: (token) => {
if (typeof window !== "undefined") {
if (token) localStorage.setItem("token", token);
else localStorage.removeItem("token");
}
set({ token, isAuthenticated: !!token });
},
logout: () => {
if (typeof window !== "undefined") {
localStorage.removeItem("user");
localStorage.removeItem("token");
}
set({ user: null, token: null, isAuthenticated: false });
},
}));