From c9fef5804bb28e9ccee04384e811ef1925c13a23 Mon Sep 17 00:00:00 2001 From: Gigi Date: Mon, 20 Oct 2025 10:48:44 +0200 Subject: [PATCH] chore(debug): add [archive] debug logs in archiveController, Me, and ContentPanel to trace archive filter behavior --- src/components/ContentPanel.tsx | 7 ++++++- src/components/Me.tsx | 13 +++++++++++++ src/services/archiveController.ts | 9 +++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/components/ContentPanel.tsx b/src/components/ContentPanel.tsx index 9e27f67d..0bfcb008 100644 --- a/src/components/ContentPanel.tsx +++ b/src/components/ContentPanel.tsx @@ -573,6 +573,7 @@ const ContentPanel: React.FC = ({ try { const naddr = nip19.naddrEncode({ kind: 30023, pubkey: currentArticle.pubkey, identifier: dTag }) hasRead = hasRead || archiveController.isMarked(naddr) + console.log('[archive][content] check article', { naddr: naddr.slice(0, 24) + '...', hasRead }) } catch {} } } else { @@ -582,7 +583,9 @@ const ContentPanel: React.FC = ({ relayPool ) // Also check archiveController - hasRead = hasRead || archiveController.isMarked(selectedUrl) + const ctrl = archiveController.isMarked(selectedUrl) + hasRead = hasRead || ctrl + console.log('[archive][content] check url', { url: selectedUrl, hasRead, ctrl }) } setIsMarkedAsRead(hasRead) } catch (error) { @@ -628,6 +631,7 @@ const ContentPanel: React.FC = ({ // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore private update for instant UI; controller will confirm via stream archiveController['markedIds'].add(naddr) + console.log('[archive][content] optimistic mark article', naddr.slice(0, 24) + '...') } } catch {} } else if (selectedUrl) { @@ -639,6 +643,7 @@ const ContentPanel: React.FC = ({ // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore private update for instant UI; controller will confirm via stream archiveController['markedIds'].add(selectedUrl) + console.log('[archive][content] optimistic mark url', selectedUrl) } } catch (error) { console.error('Failed to mark as read:', error) diff --git a/src/components/Me.tsx b/src/components/Me.tsx index 8bdc50e8..c0ed4ba7 100644 --- a/src/components/Me.tsx +++ b/src/components/Me.tsx @@ -632,6 +632,19 @@ const Me: React.FC = ({ readingProgressFilter, highlights ) + + // Debug logs for archive filter issues + if (readingProgressFilter === 'archive') { + console.log('[archive][me] counts', { + reads: reads.length, + readsWithProgress: readsWithProgress.length, + filteredReads: filteredReads.length, + links: links.length, + linksWithProgress: linksWithProgress.length, + filteredLinks: filteredLinks.length, + markedIds: archiveController.getMarkedIds().length + }) + } const sections: Array<{ key: string; title: string; items: IndividualBookmark[] }> = groupingMode === 'flat' ? [{ key: 'all', title: `All Bookmarks (${filteredBookmarks.length})`, items: filteredBookmarks }] diff --git a/src/services/archiveController.ts b/src/services/archiveController.ts index 724f7193..d6260005 100644 --- a/src/services/archiveController.ts +++ b/src/services/archiveController.ts @@ -58,11 +58,13 @@ class ArchiveController { const startGen = this.generation if (!force && this.isLoadedFor(pubkey)) { + console.log('[archive] start() skipped - already loaded for pubkey') return } // Mark as loaded immediately (fetch runs non-blocking) this.lastLoadedPubkey = pubkey + console.log('[archive] start() begin for pubkey:', pubkey.slice(0, 12), '...') const seenIds = new Set() @@ -73,6 +75,7 @@ class ArchiveController { if (!rTag) return this.markedIds.add(rTag) this.emit() + console.log('[archive] mark url:', rTag) } const pendingEventIds = new Set() @@ -81,6 +84,7 @@ class ArchiveController { const eTag = evt.tags.find(t => t[0] === 'e')?.[1] if (!eTag) return pendingEventIds.add(eTag) + console.log('[archive] pending event id:', eTag) } try { @@ -95,25 +99,30 @@ class ArchiveController { // Include EOSE events kind17.forEach(handleUrlReaction) kind7.forEach(handleEventReaction) + console.log('[archive] EOSE sizes kind17:', kind17.length, 'kind7:', kind7.length, 'pendingEventIds:', pendingEventIds.size) if (pendingEventIds.size > 0) { // Fetch referenced articles (kind:30023) and map event IDs to naddr const ids = Array.from(pendingEventIds) const articleEvents = await queryEvents(relayPool, { kinds: [KINDS.BlogPost], ids }, { relayUrls: RELAYS }) + console.log('[archive] fetched articles for mapping:', articleEvents.length) for (const article of articleEvents) { const dTag = article.tags.find(t => t[0] === 'd')?.[1] if (!dTag) continue try { const naddr = nip19.naddrEncode({ kind: KINDS.BlogPost, pubkey: article.pubkey, identifier: dTag }) this.markedIds.add(naddr) + console.log('[archive] mark naddr:', naddr.slice(0, 24), '...') } catch { // skip invalid } } this.emit() } + console.log('[archive] total marked ids:', this.markedIds.size) } catch (err) { // Non-blocking fetch; ignore errors here + console.warn('[archive] start() error:', err) } } }