From fd7da8ad7c53bddc5fe6bd4be49824b482cd3986 Mon Sep 17 00:00:00 2001 From: Shusui MOYATANI Date: Sat, 18 Mar 2023 12:11:03 +0900 Subject: [PATCH] fix: rollback h-fill-available --- src/hooks/useLoginStatus.ts | 40 --------------------------- src/hooks/usePersistStatus.ts | 52 +++++++++++++++++++++++++++++++++++ src/pages/Hello.tsx | 7 +++-- src/pages/Home.tsx | 8 +++--- 4 files changed, 60 insertions(+), 47 deletions(-) delete mode 100644 src/hooks/useLoginStatus.ts create mode 100644 src/hooks/usePersistStatus.ts diff --git a/src/hooks/useLoginStatus.ts b/src/hooks/useLoginStatus.ts deleted file mode 100644 index 714647a..0000000 --- a/src/hooks/useLoginStatus.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { Accessor } from 'solid-js'; -import { - createSignalWithStorage, - createStorageWithSerializer, -} from '@/hooks/createSignalWithStorage'; - -type LoginStatus = { - loggedIn: boolean; -}; - -type UseLoginStatus = { - loginStatus: Accessor; - loggedIn: () => void; -}; - -const InitialLoginStatus = { - loggedIn: false, -}; - -const serializer = (loginStatus: LoginStatus): string => JSON.stringify(loginStatus); -// TODO zod使う -const deserializer = (json: string): LoginStatus => JSON.parse(json) as LoginStatus; - -const storage = createStorageWithSerializer(() => window.localStorage, serializer, deserializer); - -const [loginStatus, setLoginStatus] = createSignalWithStorage( - 'RabbitLoginStatus', - InitialLoginStatus, - storage, -); - -const useLoginStatus = (): UseLoginStatus => { - const loggedIn = () => { - setLoginStatus((current) => ({ ...current, loggedIn: true })); - }; - - return { loginStatus, loggedIn }; -}; - -export default useLoginStatus; diff --git a/src/hooks/usePersistStatus.ts b/src/hooks/usePersistStatus.ts new file mode 100644 index 0000000..7c5257a --- /dev/null +++ b/src/hooks/usePersistStatus.ts @@ -0,0 +1,52 @@ +import { Accessor } from 'solid-js'; +import { + createSignalWithStorage, + createStorageWithSerializer, +} from '@/hooks/createSignalWithStorage'; + +type PersistStatus = { + loggedIn: boolean; + agreeWithNostrBuild: boolean; +}; + +type UsePersistStatus = { + persistStatus: Accessor; + loggedIn: () => void; +}; + +const InitialLoginStatus = { + loggedIn: false, + agreeWithNostrBuild: false, +}; + +const serializer = (persistStatus: PersistStatus): string => JSON.stringify(persistStatus); +// TODO zod使う +const deserializer = (json: string): PersistStatus => JSON.parse(json) as PersistStatus; + +const storage = createStorageWithSerializer(() => window.localStorage, serializer, deserializer); + +const [persistStatus, setLoginStatus] = createSignalWithStorage( + 'RabbitLoginStatus', + InitialLoginStatus, + storage, +); + +const usePersistStatus = (): UsePersistStatus => { + const loggedIn = () => { + setLoginStatus((current) => ({ ...current, loggedIn: true })); + }; + + return { + persistStatus: () => ({ + get loggedIn() { + return persistStatus().loggedIn ?? false; + }, + get agreeWithNostrBuild() { + return persistStatus().agreeWithNostrBuild ?? false; + }, + }), + loggedIn, + }; +}; + +export default usePersistStatus; diff --git a/src/pages/Hello.tsx b/src/pages/Hello.tsx index 6b6c50a..c5497dd 100644 --- a/src/pages/Hello.tsx +++ b/src/pages/Hello.tsx @@ -1,6 +1,7 @@ import { createSignal, onMount, Switch, Match, type Component } from 'solid-js'; import { useNavigate } from '@solidjs/router'; -import useLoginStatus from '@/hooks/useLoginStatus'; +import usePersistStatus from '@/hooks/usePersistStatus'; +import { persistQueryClient } from '@tanstack/react-query-persist-client'; type SignerStatus = 'checking' | 'available' | 'unavailable'; @@ -30,7 +31,7 @@ const useSignerStatus = () => { const Hello: Component = () => { const signerStatus = useSignerStatus(); const navigate = useNavigate(); - const { loginStatus, loggedIn } = useLoginStatus(); + const { persistStatus, loggedIn } = usePersistStatus(); const handleLogin = () => { loggedIn(); @@ -38,7 +39,7 @@ const Hello: Component = () => { }; onMount(() => { - if (loginStatus().loggedIn) { + if (persistStatus().loggedIn) { navigate('/'); } }); diff --git a/src/pages/Home.tsx b/src/pages/Home.tsx index 09f47d1..8100665 100644 --- a/src/pages/Home.tsx +++ b/src/pages/Home.tsx @@ -14,13 +14,13 @@ import useFollowings from '@/nostr/useFollowings'; import usePubkey from '@/nostr/usePubkey'; import { useMountShortcutKeys } from '@/hooks/useShortcutKeys'; -import useLoginStatus from '@/hooks/useLoginStatus'; +import usePersistStatus from '@/hooks/usePersistStatus'; import ensureNonNull from '@/utils/ensureNonNull'; const Home: Component = () => { useMountShortcutKeys(); const navigate = useNavigate(); - const { loginStatus } = useLoginStatus(); + const { persistStatus } = usePersistStatus(); const pool = usePool(); const { config } = useConfig(); @@ -129,13 +129,13 @@ const Home: Component = () => { */ onMount(() => { - if (!loginStatus().loggedIn) { + if (!persistStatus().loggedIn) { navigate('/hello'); } }); return ( -
+