diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2021-11-12 02:02:25 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2021-11-12 02:02:25 +0900 |
| commit | 0e4a111f81cceed275d9bec2695f6e401fb654d8 (patch) | |
| tree | 40874799472fa07416f17b50a398ac33b7771905 /packages/client/src/menu.ts | |
| parent | update deps (diff) | |
| download | misskey-0e4a111f81cceed275d9bec2695f6e401fb654d8.tar.gz misskey-0e4a111f81cceed275d9bec2695f6e401fb654d8.tar.bz2 misskey-0e4a111f81cceed275d9bec2695f6e401fb654d8.zip | |
refactoring
Resolve #7779
Diffstat (limited to 'packages/client/src/menu.ts')
| -rw-r--r-- | packages/client/src/menu.ts | 224 |
1 files changed, 224 insertions, 0 deletions
diff --git a/packages/client/src/menu.ts b/packages/client/src/menu.ts new file mode 100644 index 0000000000..ae74740bb8 --- /dev/null +++ b/packages/client/src/menu.ts @@ -0,0 +1,224 @@ +import { computed, ref } from 'vue'; +import { search } from '@/scripts/search'; +import * as os from '@/os'; +import { i18n } from '@/i18n'; +import { ui } from '@/config'; +import { $i } from './account'; +import { unisonReload } from '@/scripts/unison-reload'; +import { router } from './router'; + +export const menuDef = { + notifications: { + title: 'notifications', + icon: 'fas fa-bell', + show: computed(() => $i != null), + indicated: computed(() => $i != null && $i.hasUnreadNotification), + to: '/my/notifications', + }, + messaging: { + title: 'messaging', + icon: 'fas fa-comments', + show: computed(() => $i != null), + indicated: computed(() => $i != null && $i.hasUnreadMessagingMessage), + to: '/my/messaging', + }, + drive: { + title: 'drive', + icon: 'fas fa-cloud', + show: computed(() => $i != null), + to: '/my/drive', + }, + followRequests: { + title: 'followRequests', + icon: 'fas fa-user-clock', + show: computed(() => $i != null && $i.isLocked), + indicated: computed(() => $i != null && $i.hasPendingReceivedFollowRequest), + to: '/my/follow-requests', + }, + featured: { + title: 'featured', + icon: 'fas fa-fire-alt', + to: '/featured', + }, + explore: { + title: 'explore', + icon: 'fas fa-hashtag', + to: '/explore', + }, + announcements: { + title: 'announcements', + icon: 'fas fa-broadcast-tower', + indicated: computed(() => $i != null && $i.hasUnreadAnnouncement), + to: '/announcements', + }, + search: { + title: 'search', + icon: 'fas fa-search', + action: () => search(), + }, + lists: { + title: 'lists', + icon: 'fas fa-list-ul', + show: computed(() => $i != null), + active: computed(() => router.currentRoute.value.path.startsWith('/timeline/list/') || router.currentRoute.value.path === '/my/lists' || router.currentRoute.value.path.startsWith('/my/lists/')), + action: (ev) => { + const items = ref([{ + type: 'pending' + }]); + os.api('users/lists/list').then(lists => { + const _items = [...lists.map(list => ({ + type: 'link', + text: list.name, + to: `/timeline/list/${list.id}` + })), null, { + type: 'link', + to: '/my/lists', + text: i18n.locale.manageLists, + icon: 'fas fa-cog', + }]; + items.value = _items; + }); + os.popupMenu(items, ev.currentTarget || ev.target); + }, + }, + groups: { + title: 'groups', + icon: 'fas fa-users', + show: computed(() => $i != null), + to: '/my/groups', + }, + antennas: { + title: 'antennas', + icon: 'fas fa-satellite', + show: computed(() => $i != null), + active: computed(() => router.currentRoute.value.path.startsWith('/timeline/antenna/') || router.currentRoute.value.path === '/my/antennas' || router.currentRoute.value.path.startsWith('/my/antennas/')), + action: (ev) => { + const items = ref([{ + type: 'pending' + }]); + os.api('antennas/list').then(antennas => { + const _items = [...antennas.map(antenna => ({ + type: 'link', + text: antenna.name, + to: `/timeline/antenna/${antenna.id}` + })), null, { + type: 'link', + to: '/my/antennas', + text: i18n.locale.manageAntennas, + icon: 'fas fa-cog', + }]; + items.value = _items; + }); + os.popupMenu(items, ev.currentTarget || ev.target); + }, + }, + mentions: { + title: 'mentions', + icon: 'fas fa-at', + show: computed(() => $i != null), + indicated: computed(() => $i != null && $i.hasUnreadMentions), + to: '/my/mentions', + }, + messages: { + title: 'directNotes', + icon: 'fas fa-envelope', + show: computed(() => $i != null), + indicated: computed(() => $i != null && $i.hasUnreadSpecifiedNotes), + to: '/my/messages', + }, + favorites: { + title: 'favorites', + icon: 'fas fa-star', + show: computed(() => $i != null), + to: '/my/favorites', + }, + pages: { + title: 'pages', + icon: 'fas fa-file-alt', + to: '/pages', + }, + gallery: { + title: 'gallery', + icon: 'fas fa-icons', + to: '/gallery', + }, + clips: { + title: 'clip', + icon: 'fas fa-paperclip', + show: computed(() => $i != null), + to: '/my/clips', + }, + channels: { + title: 'channel', + icon: 'fas fa-satellite-dish', + to: '/channels', + }, + federation: { + title: 'federation', + icon: 'fas fa-globe', + to: '/federation', + }, + emojis: { + title: 'emojis', + icon: 'fas fa-laugh', + to: '/emojis', + }, + games: { + title: 'games', + icon: 'fas fa-gamepad', + to: '/games/reversi', + }, + scratchpad: { + title: 'scratchpad', + icon: 'fas fa-terminal', + to: '/scratchpad', + }, + rooms: { + title: 'rooms', + icon: 'fas fa-door-closed', + show: computed(() => $i != null), + to: computed(() => `/@${$i.username}/room`), + }, + ui: { + title: 'switchUi', + icon: 'fas fa-columns', + action: (ev) => { + os.popupMenu([{ + text: i18n.locale.default, + active: ui === 'default' || ui === null, + action: () => { + localStorage.setItem('ui', 'default'); + unisonReload(); + } + }, { + text: i18n.locale.deck, + active: ui === 'deck', + action: () => { + localStorage.setItem('ui', 'deck'); + unisonReload(); + } + }, { + text: i18n.locale.classic, + active: ui === 'classic', + action: () => { + localStorage.setItem('ui', 'classic'); + unisonReload(); + } + }, { + text: 'Chat (β)', + active: ui === 'chat', + action: () => { + localStorage.setItem('ui', 'chat'); + unisonReload(); + } + }, /*{ + text: i18n.locale.desktop + ' (β)', + active: ui === 'desktop', + action: () => { + localStorage.setItem('ui', 'desktop'); + unisonReload(); + } + }*/], ev.currentTarget || ev.target); + }, + }, +}; |