aboutsummaryrefslogtreecommitdiffstats
path: root/packages/mobile/lib
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--packages/mobile/lib/session.ts20
-rw-r--r--packages/mobile/lib/storage-state.ts1
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));