From 64316941b2fdb62605f6ad20fbe8c32f6af5f87b Mon Sep 17 00:00:00 2001 From: Silberengel Date: Sun, 26 Oct 2025 00:31:32 +0200 Subject: [PATCH] fix broken start page --- src/PageManager.tsx | 45 +++++++++++++------ src/components/NormalFeed/index.tsx | 1 + src/components/NoteList/index.tsx | 12 +++++ src/pages/primary/NoteListPage/RelaysFeed.tsx | 13 +++++- src/pages/primary/NoteListPage/index.tsx | 9 ++++ src/providers/FeedProvider.tsx | 10 +++++ 6 files changed, 76 insertions(+), 14 deletions(-) diff --git a/src/PageManager.tsx b/src/PageManager.tsx index f159e44..38979af 100644 --- a/src/PageManager.tsx +++ b/src/PageManager.tsx @@ -2,7 +2,7 @@ import Sidebar from '@/components/Sidebar' import { Button } from '@/components/ui/button' import { cn } from '@/lib/utils' import { ChevronLeft } from 'lucide-react' -import NoteListPage from '@/pages/secondary/NoteListPage' +import NoteListPage from '@/pages/primary/NoteListPage' import HomePage from '@/pages/secondary/HomePage' import NotePage from '@/pages/secondary/NotePage' import SettingsPage from '@/pages/secondary/SettingsPage' @@ -197,7 +197,7 @@ export function useSmartHashtagNavigation() { const hashtag = urlObj.searchParams.get('t') if (hashtag) { window.history.replaceState(null, '', url) - setPrimaryNoteView(, 'hashtag') + setPrimaryNoteView(, 'hashtag') } } else { // Normal behavior - use secondary navigation @@ -272,6 +272,13 @@ function MainContentArea({ }) { const { showRecommendedRelaysPanel } = useUserPreferences() + console.log('MainContentArea rendering:', { + currentPrimaryPage, + primaryPages: primaryPages.map(p => p.name), + showRecommendedRelaysPanel, + primaryNoteView: !!primaryNoteView + }) + // If recommended relays panel is shown, use two-column layout // Otherwise use single column layout const gridClass = showRecommendedRelaysPanel ? "grid-cols-2" : "grid-cols-1" @@ -307,17 +314,29 @@ function MainContentArea({ ) : ( // Show normal primary pages - primaryPages.map(({ name, element, props }) => ( -
- {props ? cloneElement(element as React.ReactElement, props) : element} -
- )) + primaryPages.map(({ name, element, props }) => { + const isCurrentPage = currentPrimaryPage === name + console.log(`Primary page ${name}:`, { isCurrentPage, currentPrimaryPage }) + return ( +
+ {(() => { + try { + console.log(`Rendering ${name} component`) + return props ? cloneElement(element as React.ReactElement, props) : element + } catch (error) { + console.error(`Error rendering ${name} component:`, error) + return
Error rendering {name}: {error instanceof Error ? error.message : String(error)}
+ } + })()} +
+ ) + }) )} {showRecommendedRelaysPanel && ( diff --git a/src/components/NormalFeed/index.tsx b/src/components/NormalFeed/index.tsx index 7efd726..1e17d6e 100644 --- a/src/components/NormalFeed/index.tsx +++ b/src/components/NormalFeed/index.tsx @@ -20,6 +20,7 @@ const NormalFeed = forwardRef ({ scrollToTop, refresh }), []) useEffect(() => { + console.log('NoteList useEffect:', { subRequests, subRequestsLength: subRequests.length }) if (!subRequests.length) return async function init() { @@ -171,6 +172,15 @@ const NoteList = forwardRef( return () => {} } + console.log('NoteList subscribing to timeline with:', subRequests.map(({ urls, filter }) => ({ + urls, + filter: { + kinds: showKinds, + ...filter, + limit: areAlgoRelays ? ALGO_LIMIT : LIMIT + } + }))) + const { closer, timelineKey } = await client.subscribeTimeline( subRequests.map(({ urls, filter }) => ({ urls, @@ -182,6 +192,7 @@ const NoteList = forwardRef( })), { onEvents: (events, eosed) => { + console.log('NoteList received events:', { eventsCount: events.length, eosed }) if (events.length > 0) { setEvents(events) // Stop loading as soon as we have events, don't wait for all relays @@ -209,6 +220,7 @@ const NoteList = forwardRef( } }, onClose: (url, reason) => { + console.log('Relay connection closed:', { url, reason }) if (!showRelayCloseReason) return // ignore reasons from nostr-tools if ( diff --git a/src/pages/primary/NoteListPage/RelaysFeed.tsx b/src/pages/primary/NoteListPage/RelaysFeed.tsx index ecf5112..0818a4b 100644 --- a/src/pages/primary/NoteListPage/RelaysFeed.tsx +++ b/src/pages/primary/NoteListPage/RelaysFeed.tsx @@ -5,10 +5,18 @@ import relayInfoService from '@/services/relay-info.service' import { useEffect, useState } from 'react' export default function RelaysFeed() { + console.log('RelaysFeed component rendering') const { feedInfo, relayUrls } = useFeed() const [isReady, setIsReady] = useState(false) const [areAlgoRelays, setAreAlgoRelays] = useState(false) + // Debug logging + console.log('RelaysFeed debug:', { + feedInfo, + relayUrls, + isReady + }) + useEffect(() => { const init = async () => { const relayInfos = await relayInfoService.getRelayInfos(relayUrls) @@ -26,9 +34,12 @@ export default function RelaysFeed() { return null } + const subRequests = [{ urls: relayUrls, filter: {} }] + console.log('RelaysFeed rendering NormalFeed with:', { subRequests, relayUrls, areAlgoRelays }) + return ( { + console.log('NoteListPage component rendering') const { t } = useTranslation() const { addRelayUrls, removeRelayUrls } = useCurrentRelays() const layoutRef = useRef(null) @@ -51,6 +52,14 @@ const NoteListPage = forwardRef((_, ref) => { } }, [relayUrls]) + // Debug logging + console.log('NoteListPage debug:', { + isReady, + feedInfo, + relayUrls, + pubkey: !!pubkey + }) + let content: React.ReactNode = null if (!isReady) { content =
{t('loading...')}
diff --git a/src/providers/FeedProvider.tsx b/src/providers/FeedProvider.tsx index 89038eb..30bae34 100644 --- a/src/providers/FeedProvider.tsx +++ b/src/providers/FeedProvider.tsx @@ -42,6 +42,7 @@ export function FeedProvider({ children }: { children: React.ReactNode }) { useEffect(() => { const init = async () => { + console.log('FeedProvider init:', { isInitialized, pubkey }) if (!isInitialized) { return } @@ -52,8 +53,11 @@ export function FeedProvider({ children }: { children: React.ReactNode }) { feedType: 'relay', id: visibleRelays[0] ?? DEFAULT_FAVORITE_RELAYS[0] } + console.log('Initial feedInfo setup:', { visibleRelays, favoriteRelays, blockedRelays, feedInfo }) + if (pubkey) { const storedFeedInfo = storage.getFeedInfo(pubkey) + console.log('Stored feed info:', storedFeedInfo) if (storedFeedInfo) { feedInfo = storedFeedInfo } @@ -108,10 +112,14 @@ export function FeedProvider({ children }: { children: React.ReactNode }) { relay?: string | null } = {} ) => { + console.log('switchFeed called:', { feedType, options }) setIsReady(false) if (feedType === 'relay') { const normalizedUrl = normalizeUrl(options.relay ?? '') + console.log('Relay switchFeed:', { normalizedUrl, isWebsocketUrl: isWebsocketUrl(normalizedUrl), blockedRelays }) + if (!normalizedUrl || !isWebsocketUrl(normalizedUrl)) { + console.log('Invalid relay URL, setting isReady to true') setIsReady(true) return } @@ -124,11 +132,13 @@ export function FeedProvider({ children }: { children: React.ReactNode }) { } const newFeedInfo = { feedType, id: normalizedUrl } + console.log('Setting relay feed info:', newFeedInfo) setFeedInfo(newFeedInfo) feedInfoRef.current = newFeedInfo setRelayUrls([normalizedUrl]) storage.setFeedInfo(newFeedInfo, pubkey) setIsReady(true) + console.log('Relay feed setup complete, isReady set to true') return } if (feedType === 'relays') {