From 51b7e53385a4d8fc70aaba59306fc8e73ddcdcaa Mon Sep 17 00:00:00 2001 From: Gigi Date: Fri, 17 Oct 2025 23:27:04 +0200 Subject: [PATCH] debug: add extensive logging to track bookmark flow Simplified to only show unencrypted bookmarks: - Skip encrypted events entirely (no decrypt for now) - This eliminates all parse errors Added comprehensive logging: - Controller: log when building, how many items, how many listeners, when emitting - App: log when subscribing, when receiving bookmarks, when loading state changes This will help identify where the disconnect is between controller and sidebar. --- src/App.tsx | 12 ++++++++++-- src/services/bookmarkController.ts | 11 ++++------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index f42864c8..1826e57b 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -42,10 +42,18 @@ function AppRoutes({ // Subscribe to bookmark controller useEffect(() => { - const unsubBookmarks = bookmarkController.onBookmarks(setBookmarks) - const unsubLoading = bookmarkController.onLoading(setBookmarksLoading) + console.log('[app] 🎧 Subscribing to bookmark controller') + const unsubBookmarks = bookmarkController.onBookmarks((bookmarks) => { + console.log('[app] 📥 Received bookmarks:', bookmarks.length) + setBookmarks(bookmarks) + }) + const unsubLoading = bookmarkController.onLoading((loading) => { + console.log('[app] 📥 Loading state:', loading) + setBookmarksLoading(loading) + }) return () => { + console.log('[app] 🔇 Unsubscribing from bookmark controller') unsubBookmarks() unsubLoading() } diff --git a/src/services/bookmarkController.ts b/src/services/bookmarkController.ts index aa46b429..0d4f3151 100644 --- a/src/services/bookmarkController.ts +++ b/src/services/bookmarkController.ts @@ -106,14 +106,10 @@ class BookmarkController { ): Promise { const allEvents = Array.from(this.currentEvents.values()) - // Only process events that are ready (unencrypted or already decrypted) - const readyEvents = allEvents.filter(evt => { - const isEncrypted = hasEncryptedContent(evt) - if (!isEncrypted) return true // Unencrypted - ready - return this.decryptedEvents.has(evt.id) // Encrypted - only if decrypted - }) + // Only process unencrypted events for now (skip encrypted entirely) + const readyEvents = allEvents.filter(evt => !hasEncryptedContent(evt)) - console.log('[controller] 📋 Building bookmarks:', readyEvents.length, 'ready of', allEvents.length, 'total') + console.log('[controller] 📋 Building bookmarks:', readyEvents.length, 'unencrypted of', allEvents.length, 'total') if (readyEvents.length === 0) { this.bookmarksListeners.forEach(cb => cb([])) @@ -231,6 +227,7 @@ class BookmarkController { } console.log('[controller] 📋 Built bookmark with', sortedBookmarks.length, 'items') + console.log('[controller] 📤 Emitting to', this.bookmarksListeners.length, 'listeners') this.bookmarksListeners.forEach(cb => cb([bookmark])) } catch (error) { console.error('[controller] ❌ Failed to build bookmarks:', error)