diff --git a/src/app.tsx b/src/app.tsx index b510aae..8a3a52f 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -8,7 +8,7 @@ import { AppProvider, useAppContext } from "./providers/AuthProvider"; const HomePage: FunctionComponent = () => { const { route } = useLocation(); const { isLoggedIn } = useAppContext(); - if (isLoggedIn) route("/profile/tasks", true); + if (isLoggedIn.value) route("/profile/tasks", true); else route("/login", true); return
Redirecting...
; }; diff --git a/src/pages/login.tsx b/src/pages/login.tsx index 0375a2d..697a1b3 100644 --- a/src/pages/login.tsx +++ b/src/pages/login.tsx @@ -22,6 +22,7 @@ const LoginPage: FunctionComponent = () => { color="secondary" onClick={() => { isLoggedIn.value = true; + localStorage.setItem("loggedIn", "true"); route("/profile/tasks", true); }} > diff --git a/src/pages/profile_settings.tsx b/src/pages/profile_settings.tsx index e756fd1..ba15871 100644 --- a/src/pages/profile_settings.tsx +++ b/src/pages/profile_settings.tsx @@ -29,6 +29,7 @@ const ProfileSettings: FunctionComponent = () => { color="secondary" onClick={() => { isLoggedIn.value = false; + localStorage.setItem("loggedIn", "false"); route("/login", true); }} > diff --git a/src/providers/AuthProvider.tsx b/src/providers/AuthProvider.tsx index 60a2d18..f001a9a 100644 --- a/src/providers/AuthProvider.tsx +++ b/src/providers/AuthProvider.tsx @@ -1,3 +1,4 @@ +import { stringToBoolean } from "@/utils/converter"; import { signal, Signal } from "@preact/signals"; import { createContext, JSX } from "preact"; import { useContext } from "preact/hooks"; @@ -5,14 +6,15 @@ import { useContext } from "preact/hooks"; interface AppContextValue { isLoggedIn: Signal; } +const ininitialValue = stringToBoolean(localStorage.getItem("loggedIn")); const AppContext = createContext({ - isLoggedIn: signal(false), + isLoggedIn: signal(ininitialValue), }); const AppProvider = ({ children }: { children: JSX.Element }) => { const value: AppContextValue = { - isLoggedIn: signal(false), + isLoggedIn: signal(ininitialValue), }; return {children}; diff --git a/src/utils/converter.ts b/src/utils/converter.ts new file mode 100644 index 0000000..0e9ea14 --- /dev/null +++ b/src/utils/converter.ts @@ -0,0 +1,5 @@ +export const stringToBoolean = (value: string | null): boolean => { + if (value === "true") return true; + if (value === "false") return false; + return false; +};