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 50acbbaf1..f9a900fc6 100644 --- a/src/components/navigation/navigation_pins.js +++ b/src/components/navigation/navigation_pins.js @@ -9,6 +9,7 @@ import { library } from '@fortawesome/fontawesome-svg-core' import { faUsers, faGlobe, + faCity, faBookmark, faEnvelope, faComments, @@ -25,6 +26,7 @@ import { useServerSideStorageStore } from 'src/stores/serverSideStorage' library.add( faUsers, faGlobe, + faCity, faBookmark, faEnvelope, faComments, @@ -65,7 +67,8 @@ const NavPanel = { followRequestCount: state => state.api.followRequests.length, privateMode: state => state.instance.private, federating: state => state.instance.federating, - pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable + pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable, + bubbleTimeline: state => state.instance.localBubbleInstances.length > 0 }), pinnedList () { if (!this.currentUser) { @@ -79,7 +82,9 @@ const NavPanel = { hasAnnouncements: this.supportsAnnouncements, isFederating: this.federating, isPrivate: this.privateMode, - currentUser: this.currentUser + currentUser: this.currentUser, + supportsBubbleTimeline: this.bubbleTimeline, + supportsBookmarkFolders: this.bookmarks }) } return filterNavigation( @@ -98,6 +103,8 @@ const NavPanel = { { hasChats: this.pleromaChatMessagesAvailable, hasAnnouncements: this.supportsAnnouncements, + supportsBubbleTimeline: this.bubbleTimeline, + supportsBookmarkFolders: this.bookmarks, isFederating: this.federating, isPrivate: this.privateMode, currentUser: this.currentUser diff --git a/src/components/settings_modal/tabs/notifications_tab.js b/src/components/settings_modal/tabs/notifications_tab.js index 76007773b..c53b5889d 100644 --- a/src/components/settings_modal/tabs/notifications_tab.js +++ b/src/components/settings_modal/tabs/notifications_tab.js @@ -18,7 +18,7 @@ const NotificationsTab = { }, canReceiveReports () { if (!this.user) { return false } - return this.user.privileges?.includes('reports_manage_reports') + return this.user.privileges.includes('reports_manage_reports') }, ...SharedComputedObject() }, diff --git a/src/components/user_card/user_card.js b/src/components/user_card/user_card.js index f4ae5f12e..55c76225c 100644 --- a/src/components/user_card/user_card.js +++ b/src/components/user_card/user_card.js @@ -136,7 +136,7 @@ export default { const privileges = this.loggedIn.privileges return this.loggedIn.role === 'admin' || privileges.includes('users_manage_activation_state') || - privileges.includes('users_delete')|| + privileges.includes('users_delete') || privileges.includes('users_manage_tags') }, hasNote () { diff --git a/src/modules/instance.js b/src/modules/instance.js index 98917e791..39d1fc662 100644 --- a/src/modules/instance.js +++ b/src/modules/instance.js @@ -163,6 +163,7 @@ const defaultState = { suggestionsWeb: '', quotingAvailable: false, groupActorAvailable: false, + localBubbleInstances: [], // Akkoma // Html stuff instanceSpecificPanelContent: '',