diff options
Diffstat (limited to '')
| -rw-r--r-- | packages/mobile/lib/session.ts | 20 | ||||
| -rw-r--r-- | packages/mobile/lib/storage-state.ts | 1 |
2 files changed, 21 insertions, 0 deletions
diff --git a/packages/mobile/lib/session.ts b/packages/mobile/lib/session.ts new file mode 100644 index 00000000..e2ab245b --- /dev/null +++ b/packages/mobile/lib/session.ts @@ -0,0 +1,20 @@ +import { useCallback, useMemo } from "react"; + +import useAppSettings from "./settings"; + +export function useSession() { + const { settings, isLoading, setSettings } = useAppSettings(); + const isLoggedIn = useMemo(() => { + return isLoading ? undefined : !!settings.apiKey; + }, [isLoading, settings]); + + const logout = useCallback(() => { + setSettings({ ...settings, apiKey: undefined }); + }, [settings]); + + return { + isLoggedIn, + isLoading, + logout, + }; +} diff --git a/packages/mobile/lib/storage-state.ts b/packages/mobile/lib/storage-state.ts index 09917c79..4988f0e0 100644 --- a/packages/mobile/lib/storage-state.ts +++ b/packages/mobile/lib/storage-state.ts @@ -31,6 +31,7 @@ export function useStorageState<T>(key: string): UseStateHook<T> { React.useEffect(() => { SecureStore.getItemAsync(key).then((value) => { if (!value) { + setState(null); return null; } setState(JSON.parse(value)); |
