From 187d43a4e57147b856f21a173d0f10f7a9b8159b Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Tue, 24 Jun 2025 17:01:17 +0300 Subject: [PATCH] better handling of bookmarks --- src/components/nav_panel/nav_panel.js | 7 ++++--- src/components/navigation/filter.js | 3 ++- src/components/navigation/navigation.js | 11 ++++++++++- src/components/navigation/navigation_pins.js | 2 ++ 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/components/nav_panel/nav_panel.js b/src/components/nav_panel/nav_panel.js index 2cdb4c45b..70d378e86 100644 --- a/src/components/nav_panel/nav_panel.js +++ b/src/components/nav_panel/nav_panel.js @@ -117,6 +117,8 @@ const NavPanel = { return filterNavigation( Object .entries({ ...TIMELINES }) + // do not show in timeliens list since it's in a better place now + .filter(([key]) => key !== 'bookmarks') .map(([k, v]) => ({ ...v, name: k })), { hasChats: this.pleromaChatMessagesAvailable, @@ -124,7 +126,6 @@ const NavPanel = { isFederating: this.federating, isPrivate: this.privateMode, currentUser: this.currentUser, - supportsBookmarkFolders: this.bookmarkFolders, supportsBubbleTimeline: this.bubbleTimeline } ) @@ -140,8 +141,8 @@ const NavPanel = { isFederating: this.federating, isPrivate: this.privateMode, currentUser: this.currentUser, - supportsBookmarkFolders: this.bookmarkFolders, - supportsBubbleTimeline: this.bubbleTimeline + supportsBubbleTimeline: this.bubbleTimeline, + supportsBookmarkFolders: this.bookmarkFolders } ) }, diff --git a/src/components/navigation/filter.js b/src/components/navigation/filter.js index 69d0b43cb..54abb67b4 100644 --- a/src/components/navigation/filter.js +++ b/src/components/navigation/filter.js @@ -15,8 +15,9 @@ export const filterNavigation = (list = [], { if ((!currentUser || !currentUser.locked) && set.has('lockedUser')) return false if (!hasChats && set.has('chats')) return false if (!hasAnnouncements && set.has('announcements')) return false - if (!supportsBookmarkFolders && set.has('supportsBookmarkFolders')) return false if (!supportsBubbleTimeline && set.has('supportsBubbleTimeline')) return false + if (!supportsBookmarkFolders && set.has('supportsBookmarkFolders')) return false + if (supportsBookmarkFolders && set.has('!supportsBookmarkFolders')) return false return true }) } diff --git a/src/components/navigation/navigation.js b/src/components/navigation/navigation.js index 80da8f52d..d1c2b6763 100644 --- a/src/components/navigation/navigation.js +++ b/src/components/navigation/navigation.js @@ -41,11 +41,11 @@ export const TIMELINES = { label: 'nav.twkn', criteria: ['!private', 'federating'] }, + // bookmarks are still technically a timeline so we should show it in the dropdown bookmarks: { route: 'bookmarks', icon: 'bookmark', label: 'nav.bookmarks', - criteria: ['supportsBookmarkFolders'] }, favorites: { routeObject: { name: 'user-profile', query: { tab: 'favorites' } }, @@ -60,6 +60,15 @@ export const TIMELINES = { } export const ROOT_ITEMS = { + bookmarks: { + route: 'bookmarks', + icon: 'bookmark', + label: 'nav.bookmarks', + // shows bookmarks entry in a better suited location + // hides it when bookmark folders are supported since + // we show custom component instead of it + criteria: ['!supportsBookmarkFolders'] + }, interactions: { route: 'interactions', icon: 'bell', diff --git a/src/components/navigation/navigation_pins.js b/src/components/navigation/navigation_pins.js index 2d1922acb..f9a900fc6 100644 --- a/src/components/navigation/navigation_pins.js +++ b/src/components/navigation/navigation_pins.js @@ -84,6 +84,7 @@ const NavPanel = { isPrivate: this.privateMode, currentUser: this.currentUser, supportsBubbleTimeline: this.bubbleTimeline, + supportsBookmarkFolders: this.bookmarks }) } return filterNavigation( @@ -103,6 +104,7 @@ const NavPanel = { hasChats: this.pleromaChatMessagesAvailable, hasAnnouncements: this.supportsAnnouncements, supportsBubbleTimeline: this.bubbleTimeline, + supportsBookmarkFolders: this.bookmarks, isFederating: this.federating, isPrivate: this.privateMode, currentUser: this.currentUser