aboutsummaryrefslogtreecommitdiff
path: root/src/components/navigation/navigation_pins.js
diff options
context:
space:
mode:
authorHenry Jameson <me@hjkos.com>2022-08-11 21:56:30 +0300
committerHenry Jameson <me@hjkos.com>2022-08-11 21:56:30 +0300
commit3a16a59f37b9b637bb4cbc1c3575810a65515cbc (patch)
tree291021eaf0c3630c7b29b97481ae3fe5f24a0547 /src/components/navigation/navigation_pins.js
parent9e453372b37dde652c054c13febb97bb40bc1814 (diff)
navigation refactored, used in mobile nav as well
Diffstat (limited to 'src/components/navigation/navigation_pins.js')
-rw-r--r--src/components/navigation/navigation_pins.js68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/components/navigation/navigation_pins.js b/src/components/navigation/navigation_pins.js
new file mode 100644
index 00000000..c71f6d24
--- /dev/null
+++ b/src/components/navigation/navigation_pins.js
@@ -0,0 +1,68 @@
+import { getListEntries } from '../lists_menu/lists_menu_content.vue'
+import { mapState } from 'vuex'
+import { TIMELINES, ROOT_ITEMS } from 'src/components/navigation/navigation.js'
+import { filterNavigation } from 'src/components/navigation/filter.js'
+
+import { library } from '@fortawesome/fontawesome-svg-core'
+import {
+ faUsers,
+ faGlobe,
+ faBookmark,
+ faEnvelope,
+ faComments,
+ faBell,
+ faInfoCircle,
+ faStream,
+ faList
+} from '@fortawesome/free-solid-svg-icons'
+
+library.add(
+ faUsers,
+ faGlobe,
+ faBookmark,
+ faEnvelope,
+ faComments,
+ faBell,
+ faInfoCircle,
+ faStream,
+ faList
+)
+const NavPanel = {
+ computed: {
+ getters () {
+ return this.$store.getters
+ },
+ ...mapState({
+ lists: getListEntries,
+ currentUser: state => state.users.currentUser,
+ followRequestCount: state => state.api.followRequests.length,
+ privateMode: state => state.instance.private,
+ federating: state => state.instance.federating,
+ pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable,
+ pinnedItems: state => new Set(state.serverSideStorage.prefsStorage.collections.pinnedNavItems)
+ }),
+ pinnedList () {
+ return filterNavigation(
+ [
+ ...Object
+ .entries({ ...TIMELINES })
+ .filter(([k]) => this.pinnedItems.has(k))
+ .map(([k, v]) => ({ ...v, name: k })),
+ ...this.lists.filter((k) => this.pinnedItems.has(k.name)),
+ ...Object
+ .entries({ ...ROOT_ITEMS })
+ .filter(([k]) => this.pinnedItems.has(k))
+ .map(([k, v]) => ({ ...v, name: k }))
+ ],
+ {
+ hasChats: this.pleromaChatMessagesAvailable,
+ isFederating: this.federating,
+ isPrivate: this.private,
+ currentUser: this.currentUser
+ }
+ )
+ }
+ }
+}
+
+export default NavPanel