diff options
| author | Hazelnoot <acomputerdog@gmail.com> | 2024-11-02 11:30:56 -0400 |
|---|---|---|
| committer | Hazelnoot <acomputerdog@gmail.com> | 2024-11-20 22:22:30 -0500 |
| commit | 2b0a62287542597f9f53f45cd932efeb8ec0a12e (patch) | |
| tree | 482e13ef93f9b414d49294e5c38650133b503f68 /packages/frontend/src | |
| parent | factor out remote followers warning in SkRemoteFollowersWarning.vue (diff) | |
| download | sharkey-2b0a62287542597f9f53f45cd932efeb8ec0a12e.tar.gz sharkey-2b0a62287542597f9f53f45cd932efeb8ec0a12e.tar.bz2 sharkey-2b0a62287542597f9f53f45cd932efeb8ec0a12e.zip | |
separate following feed's menu component from the actual filter options
Diffstat (limited to 'packages/frontend/src')
| -rw-r--r-- | packages/frontend/src/pages/following-feed.vue | 30 | ||||
| -rw-r--r-- | packages/frontend/src/pages/user/recent-notes.vue | 4 | ||||
| -rw-r--r-- | packages/frontend/src/scripts/following-feed-utils.ts | 72 |
3 files changed, 46 insertions, 60 deletions
diff --git a/packages/frontend/src/pages/following-feed.vue b/packages/frontend/src/pages/following-feed.vue index 9054769034..21e76b9094 100644 --- a/packages/frontend/src/pages/following-feed.vue +++ b/packages/frontend/src/pages/following-feed.vue @@ -25,7 +25,7 @@ SPDX-License-Identifier: AGPL-3.0-only </template> <script lang="ts" setup> -import { computed, Ref, ref, shallowRef } from 'vue'; +import { computed, ComputedRef, Ref, ref, shallowRef } from 'vue'; import { getScrollContainer } from '@@/js/scroll.js'; import { definePageMetadata } from '@/scripts/page-metadata.js'; import { i18n } from '@/i18n.js'; @@ -36,7 +36,7 @@ import { useRouter } from '@/router/supplier.js'; import MkPageHeader from '@/components/global/MkPageHeader.vue'; import SkUserRecentNotes from '@/components/SkUserRecentNotes.vue'; import { useScrollPositionManager } from '@/nirax.js'; -import { createModel, createOptions, followersTab, followingTab, mutualsTab } from '@/scripts/following-feed-utils.js'; +import { createModel, createHeaderItem, followingFeedTabs, followingTabIcon, followingTabName, followingTab } from '@/scripts/following-feed-utils.js'; import SkLazy from '@/components/global/SkLazy.vue'; import SkFollowingRecentNotes from '@/components/SkFollowingRecentNotes.vue'; import SkRemoteFollowersWarning from '@/components/SkRemoteFollowersWarning.vue'; @@ -91,32 +91,20 @@ const headerActions: PageHeaderItem[] = [ text: i18n.ts.reload, handler: () => reload(), }, - createOptions(), + createHeaderItem(), ]; -const headerTabs = computed(() => [ - { - key: followingTab, - icon: 'ph-user-check ph-bold ph-lg', - title: i18n.ts.following, - } satisfies Tab, - { - key: mutualsTab, - icon: 'ph-user-switch ph-bold ph-lg', - title: i18n.ts.mutuals, - } satisfies Tab, - { - key: followersTab, - icon: 'ph-user ph-bold ph-lg', - title: i18n.ts.followers, - } satisfies Tab, -]); +const headerTabs: ComputedRef<Tab[]> = computed(() => followingFeedTabs.map(t => ({ + key: t, + icon: followingTabIcon(t), + title: followingTabName(t), +}))); useScrollPositionManager(() => getScrollContainer(userScroll.value?.rootEl ?? null), router); useScrollPositionManager(() => getScrollContainer(noteScroll.value ?? null), router); definePageMetadata(() => ({ title: i18n.ts.following, - icon: 'ph-user-check ph-bold ph-lg', + icon: followingTabIcon(followingTab), })); </script> diff --git a/packages/frontend/src/pages/user/recent-notes.vue b/packages/frontend/src/pages/user/recent-notes.vue index 6375979c00..d636068408 100644 --- a/packages/frontend/src/pages/user/recent-notes.vue +++ b/packages/frontend/src/pages/user/recent-notes.vue @@ -20,7 +20,7 @@ import { PageHeaderItem } from '@/types/page-header.js'; import MkPageHeader from '@/components/global/MkPageHeader.vue'; import SkUserRecentNotes from '@/components/SkUserRecentNotes.vue'; import { acct } from '@/filters/user.js'; -import { createModel, createOptions } from '@/scripts/following-feed-utils.js'; +import { createModel, createHeaderItem } from '@/scripts/following-feed-utils.js'; import MkStickyContainer from '@/components/global/MkStickyContainer.vue'; defineProps<{ @@ -44,7 +44,7 @@ const headerActions: PageHeaderItem[] = [ text: i18n.ts.reload, handler: () => userRecentNotes.value?.reload(), }, - createOptions(), + createHeaderItem(), ]; // Based on user/index.vue diff --git a/packages/frontend/src/scripts/following-feed-utils.ts b/packages/frontend/src/scripts/following-feed-utils.ts index 3b4020f84b..39f17949d6 100644 --- a/packages/frontend/src/scripts/following-feed-utils.ts +++ b/packages/frontend/src/scripts/following-feed-utils.ts @@ -9,6 +9,7 @@ import { deepMerge } from '@/scripts/merge.js'; import { PageHeaderItem } from '@/types/page-header.js'; import { i18n } from '@/i18n.js'; import { popupMenu } from '@/os.js'; +import { MenuItem } from '@/types/menu.js'; export const followingTab = 'following' as const; export const mutualsTab = 'mutuals' as const; @@ -80,43 +81,40 @@ export function createOptionsMenu(storage?: Ref<StorageInterface>): MenuItem[] { onlyFiles, } = createModel(storage); - return { - icon: 'ti ti-dots', - text: i18n.ts.options, - handler: ev => - popupMenu([ - { - type: 'switch', - text: i18n.ts.showNonPublicNotes, - ref: withNonPublic, - disabled: userList.value === 'followers', - }, - { - type: 'switch', - text: i18n.ts.showQuotes, - ref: withQuotes, - }, - { - type: 'switch', - text: i18n.ts.showBots, - ref: withBots, - }, - { - type: 'switch', - text: i18n.ts.showReplies, - ref: withReplies, - disabled: onlyFiles, - }, - { - type: 'divider', - }, - { - type: 'switch', - text: i18n.ts.fileAttachedOnly, - ref: onlyFiles, - disabled: withReplies, - }, - ], ev.currentTarget ?? ev.target), + return [ + { + type: 'switch', + text: i18n.ts.showNonPublicNotes, + ref: withNonPublic, + disabled: computed(() => userList.value === followersTab), + }, + { + type: 'switch', + text: i18n.ts.showQuotes, + ref: withQuotes, + }, + { + type: 'switch', + text: i18n.ts.showBots, + ref: withBots, + }, + { + type: 'switch', + text: i18n.ts.showReplies, + ref: withReplies, + disabled: onlyFiles, + }, + { + type: 'divider', + }, + { + type: 'switch', + text: i18n.ts.fileAttachedOnly, + ref: onlyFiles, + disabled: withReplies, + }, + ]; +} export function createModel(storage?: Ref<StorageInterface>): FollowingFeedModel { // eslint-disable-next-line no-param-reassign |