Browse Source

fix broken start page

imwald
Silberengel 5 months ago
parent
commit
64316941b2
  1. 31
      src/PageManager.tsx
  2. 1
      src/components/NormalFeed/index.tsx
  3. 12
      src/components/NoteList/index.tsx
  4. 13
      src/pages/primary/NoteListPage/RelaysFeed.tsx
  5. 9
      src/pages/primary/NoteListPage/index.tsx
  6. 10
      src/providers/FeedProvider.tsx

31
src/PageManager.tsx

@ -2,7 +2,7 @@ import Sidebar from '@/components/Sidebar' @@ -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() { @@ -197,7 +197,7 @@ export function useSmartHashtagNavigation() {
const hashtag = urlObj.searchParams.get('t')
if (hashtag) {
window.history.replaceState(null, '', url)
setPrimaryNoteView(<NoteListPage index={0} hideTitlebar={true} />, 'hashtag')
setPrimaryNoteView(<NoteListPage />, 'hashtag')
}
} else {
// Normal behavior - use secondary navigation
@ -272,6 +272,13 @@ function MainContentArea({ @@ -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({ @@ -307,17 +314,29 @@ function MainContentArea({
</div>
) : (
// Show normal primary pages
primaryPages.map(({ name, element, props }) => (
primaryPages.map(({ name, element, props }) => {
const isCurrentPage = currentPrimaryPage === name
console.log(`Primary page ${name}:`, { isCurrentPage, currentPrimaryPage })
return (
<div
key={name}
className="flex flex-col h-full w-full"
style={{
display: currentPrimaryPage === name ? 'block' : 'none'
display: isCurrentPage ? 'block' : 'none'
}}
>
{props ? cloneElement(element as React.ReactElement, props) : element}
{(() => {
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 <div>Error rendering {name}: {error instanceof Error ? error.message : String(error)}</div>
}
})()}
</div>
))
)
})
)}
</div>
{showRecommendedRelaysPanel && (

1
src/components/NormalFeed/index.tsx

@ -20,6 +20,7 @@ const NormalFeed = forwardRef<TNoteListRef, { @@ -20,6 +20,7 @@ const NormalFeed = forwardRef<TNoteListRef, {
isMainFeed = false,
showRelayCloseReason = false
}, ref) {
console.log('NormalFeed component rendering with:', { subRequests, areAlgoRelays, isMainFeed })
const { hideUntrustedNotes } = useUserTrust()
const { showKinds } = useKindFilter()
const [temporaryShowKinds, setTemporaryShowKinds] = useState(showKinds)

12
src/components/NoteList/index.tsx

@ -156,6 +156,7 @@ const NoteList = forwardRef( @@ -156,6 +156,7 @@ const NoteList = forwardRef(
useImperativeHandle(ref, () => ({ 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( @@ -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( @@ -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( @@ -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 (

13
src/pages/primary/NoteListPage/RelaysFeed.tsx

@ -5,10 +5,18 @@ import relayInfoService from '@/services/relay-info.service' @@ -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() { @@ -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 (
<NormalFeed
subRequests={[{ urls: relayUrls, filter: {} }]}
subRequests={subRequests}
areAlgoRelays={areAlgoRelays}
isMainFeed
showRelayCloseReason

9
src/pages/primary/NoteListPage/index.tsx

@ -28,6 +28,7 @@ import FollowingFeed from './FollowingFeed' @@ -28,6 +28,7 @@ import FollowingFeed from './FollowingFeed'
import RelaysFeed from './RelaysFeed'
const NoteListPage = forwardRef((_, ref) => {
console.log('NoteListPage component rendering')
const { t } = useTranslation()
const { addRelayUrls, removeRelayUrls } = useCurrentRelays()
const layoutRef = useRef<TPageRef>(null)
@ -51,6 +52,14 @@ const NoteListPage = forwardRef((_, ref) => { @@ -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 = <div className="text-center text-sm text-muted-foreground">{t('loading...')}</div>

10
src/providers/FeedProvider.tsx

@ -42,6 +42,7 @@ export function FeedProvider({ children }: { children: React.ReactNode }) { @@ -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 }) { @@ -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 }) { @@ -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 }) { @@ -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') {

Loading…
Cancel
Save