106 lines
2.6 KiB
JavaScript
106 lines
2.6 KiB
JavaScript
import { mark, stop } from '../../_utils/marks.js'
|
|
|
|
export function navComputations (store) {
|
|
mark('navComputations')
|
|
|
|
store.compute(
|
|
'pinnedListTitle',
|
|
['lists', 'pinnedPage'],
|
|
(lists, pinnedPage) => {
|
|
if (!pinnedPage.startsWith('/lists')) {
|
|
return
|
|
}
|
|
const listId = pinnedPage.split('/').slice(-1)[0]
|
|
const list = lists.find(_ => _.id === listId)
|
|
return list ? list.title : ''
|
|
}
|
|
)
|
|
|
|
store.compute(
|
|
'navPages',
|
|
['pinnedPage', 'pinnedListTitle'],
|
|
(pinnedPage, pinnedListTitle) => {
|
|
let pinnedPageObject
|
|
if (pinnedPage === '/federated') {
|
|
pinnedPageObject = {
|
|
name: 'federated',
|
|
href: '/federated',
|
|
svg: '#fa-globe',
|
|
label: 'intl.federated'
|
|
}
|
|
} else if (pinnedPage === '/direct') {
|
|
pinnedPageObject = {
|
|
name: 'direct',
|
|
href: '/direct',
|
|
svg: '#fa-envelope',
|
|
label: 'intl.directMessages'
|
|
}
|
|
} else if (pinnedPage === '/favorites') {
|
|
pinnedPageObject = {
|
|
name: 'favorites',
|
|
href: '/favorites',
|
|
svg: '#fa-star',
|
|
label: 'intl.favorites'
|
|
}
|
|
} else if (pinnedPage === '/bookmarks') {
|
|
pinnedPageObject = {
|
|
name: 'bookmarks',
|
|
href: '/bookmarks',
|
|
svg: '#fa-bookmark',
|
|
label: 'intl.bookmarks'
|
|
}
|
|
} else if (pinnedPage.startsWith('/lists/')) {
|
|
pinnedPageObject = {
|
|
name: `lists/${pinnedPage.split('/').slice(-1)[0]}`,
|
|
href: pinnedPage,
|
|
svg: '#fa-bars',
|
|
label: pinnedListTitle
|
|
}
|
|
} else { // local
|
|
pinnedPageObject = {
|
|
name: 'local',
|
|
href: '/local',
|
|
svg: '#fa-users',
|
|
label: 'intl.local'
|
|
}
|
|
}
|
|
|
|
return [
|
|
{
|
|
name: 'home',
|
|
href: '/',
|
|
svg: '#semaphore-logo',
|
|
label: 'intl.home'
|
|
},
|
|
{
|
|
name: 'notifications',
|
|
href: '/notifications',
|
|
svg: '#fa-bell',
|
|
label: 'intl.notifications'
|
|
},
|
|
pinnedPageObject,
|
|
{
|
|
name: 'community',
|
|
href: '/community',
|
|
svg: '#fa-comments',
|
|
label: 'intl.community'
|
|
},
|
|
{
|
|
name: 'search',
|
|
href: '/search',
|
|
svg: '#fa-search',
|
|
label: 'intl.search'
|
|
},
|
|
{
|
|
name: 'settings',
|
|
href: '/settings',
|
|
svg: '#fa-gear',
|
|
label: 'intl.settings'
|
|
}
|
|
]
|
|
}
|
|
)
|
|
|
|
stop('navComputations')
|
|
}
|