From 6182fc914e4cdfbd86de1de6e39f153eb7d8179e Mon Sep 17 00:00:00 2001 From: codytseng Date: Tue, 14 Jan 2025 11:55:43 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=F0=9F=90=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/PageManager.tsx | 42 ++++++++++++++++++++----------- src/components/NoteList/index.tsx | 12 +++------ src/providers/FeedProvider.tsx | 10 ++------ 3 files changed, 32 insertions(+), 32 deletions(-) diff --git a/src/PageManager.tsx b/src/PageManager.tsx index ab438082..152f5227 100644 --- a/src/PageManager.tsx +++ b/src/PageManager.tsx @@ -4,7 +4,7 @@ import { Separator } from '@/components/ui/separator' import { cn } from '@/lib/utils' import NoteListPage from '@/pages/primary/NoteListPage' import HomePage from '@/pages/secondary/HomePage' -import { cloneElement, createContext, useContext, useEffect, useState } from 'react' +import { cloneElement, createContext, ReactNode, useContext, useEffect, useState } from 'react' import MePage from './pages/primary/MePage' import NotificationListPage from './pages/primary/NotificationListPage' import { useScreenSize } from './providers/ScreenSizeProvider' @@ -57,6 +57,14 @@ export function useSecondaryPage() { export function PageManager({ maxStackSize = 5 }: { maxStackSize?: number }) { const [currentPrimaryPage, setCurrentPrimaryPage] = useState('home') + const [primaryPages, setPrimaryPages] = useState< + { name: TPrimaryPageName; element: ReactNode }[] + >([ + { + name: 'home', + element: PRIMARY_PAGE_MAP.home + } + ]) const [secondaryStack, setSecondaryStack] = useState([]) const { isSmallScreen } = useScreenSize() @@ -104,6 +112,10 @@ export function PageManager({ maxStackSize = 5 }: { maxStackSize?: number }) { }, []) const navigatePrimaryPage = (page: TPrimaryPageName) => { + const exists = primaryPages.find((p) => p.name === page) + if (!exists) { + setPrimaryPages((prev) => [...prev, { name: page, element: PRIMARY_PAGE_MAP[page] }]) + } setCurrentPrimaryPage(page) if (isSmallScreen) { clearSecondaryPages() @@ -159,15 +171,15 @@ export function PageManager({ maxStackSize = 5 }: { maxStackSize?: number }) { {item.component} ))} - {Object.entries(PRIMARY_PAGE_MAP).map(([pageName, page]) => ( + {primaryPages.map(({ name, element }) => (
- {page} + {element}
))} @@ -194,16 +206,16 @@ export function PageManager({ maxStackSize = 5 }: { maxStackSize?: number }) { -
- -
-
- -
+ {primaryPages.map(({ name, element }) => ( +
+ {element} +
+ ))}
diff --git a/src/components/NoteList/index.tsx b/src/components/NoteList/index.tsx index c7dd27c8..71455f6b 100644 --- a/src/components/NoteList/index.tsx +++ b/src/components/NoteList/index.tsx @@ -32,7 +32,7 @@ export default function NoteList({ const { t } = useTranslation() const { isSmallScreen } = useScreenSize() const { signEvent, checkLogin } = useNostr() - const { isFetching: isFetchingRelayInfo, areAlgoRelays } = useFetchRelayInfos([...relayUrls]) + const { areAlgoRelays } = useFetchRelayInfos([...relayUrls]) const [refreshCount, setRefreshCount] = useState(0) const [timelineKey, setTimelineKey] = useState(undefined) const [events, setEvents] = useState([]) @@ -58,7 +58,7 @@ export default function NoteList({ }, [JSON.stringify(filter), areAlgoRelays, isPictures]) useEffect(() => { - if (isFetchingRelayInfo || relayUrls.length === 0) return + if (relayUrls.length === 0) return async function init() { setRefreshing(true) @@ -108,13 +108,7 @@ export default function NoteList({ return () => { promise.then((closer) => closer()) } - }, [ - JSON.stringify(relayUrls), - JSON.stringify(noteFilter), - isFetchingRelayInfo, - areAlgoRelays, - refreshCount - ]) + }, [JSON.stringify(relayUrls), noteFilter, areAlgoRelays, refreshCount]) useEffect(() => { if (refreshing) return diff --git a/src/providers/FeedProvider.tsx b/src/providers/FeedProvider.tsx index d5ee5d0b..5d13c0c9 100644 --- a/src/providers/FeedProvider.tsx +++ b/src/providers/FeedProvider.tsx @@ -55,21 +55,15 @@ export function FeedProvider({ children }: { children: React.ReactNode }) { } if (feedType === 'following') { + if (!pubkey) return return await switchFeed('following', { pubkey }) } else { - console.log('activeRelaySetId', activeRelaySetId) await switchFeed('relays', { activeRelaySetId }) } } init() - }, []) - - useEffect(() => { - if (pubkey && feedType === 'following') { - switchFeed('following', { pubkey }) - } - }, [feedType, pubkey]) + }, [pubkey]) const switchFeed = async ( feedType: TFeedType,