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') {