diff options
| author | Hazelnoot <acomputerdog@gmail.com> | 2025-05-10 13:19:47 -0400 |
|---|---|---|
| committer | Hazelnoot <acomputerdog@gmail.com> | 2025-05-10 18:40:06 -0400 |
| commit | 42d4fc9d97b2df220216ae0635ea8a4b69948900 (patch) | |
| tree | a874f864a8076b1d82194fd5e04a8b9b060606e4 /packages | |
| parent | merge: put back buttons "show/hide replies-to-others from all" (!1009) (diff) | |
| download | sharkey-42d4fc9d97b2df220216ae0635ea8a4b69948900.tar.gz sharkey-42d4fc9d97b2df220216ae0635ea8a4b69948900.tar.bz2 sharkey-42d4fc9d97b2df220216ae0635ea8a4b69948900.zip | |
refactor following feed to avoid circular dependency
Diffstat (limited to 'packages')
| -rw-r--r-- | packages/frontend/src/components/SkFollowingRecentNotes.vue | 2 | ||||
| -rw-r--r-- | packages/frontend/src/components/SkRemoteFollowersWarning.vue | 4 | ||||
| -rw-r--r-- | packages/frontend/src/pages/following-feed.vue | 3 | ||||
| -rw-r--r-- | packages/frontend/src/preferences/def.ts | 4 | ||||
| -rw-r--r-- | packages/frontend/src/store.ts | 4 | ||||
| -rw-r--r-- | packages/frontend/src/types/following-feed.ts | 36 | ||||
| -rw-r--r-- | packages/frontend/src/ui/deck/following-column.vue | 7 | ||||
| -rw-r--r-- | packages/frontend/src/utility/following-feed-utils.ts | 32 |
8 files changed, 51 insertions, 41 deletions
diff --git a/packages/frontend/src/components/SkFollowingRecentNotes.vue b/packages/frontend/src/components/SkFollowingRecentNotes.vue index df5e7da5c0..bc8560bbb0 100644 --- a/packages/frontend/src/components/SkFollowingRecentNotes.vue +++ b/packages/frontend/src/components/SkFollowingRecentNotes.vue @@ -25,7 +25,7 @@ SPDX-License-Identifier: AGPL-3.0-only <script setup lang="ts"> import * as Misskey from 'misskey-js'; import { computed, shallowRef } from 'vue'; -import type { FollowingFeedTab } from '@/utility/following-feed-utils.js'; +import type { FollowingFeedTab } from '@/types/following-feed.js'; import type { Paging } from '@/components/MkPagination.vue'; import { infoImageUrl } from '@/instance.js'; import { i18n } from '@/i18n.js'; diff --git a/packages/frontend/src/components/SkRemoteFollowersWarning.vue b/packages/frontend/src/components/SkRemoteFollowersWarning.vue index bc15dd40ba..32d57477de 100644 --- a/packages/frontend/src/components/SkRemoteFollowersWarning.vue +++ b/packages/frontend/src/components/SkRemoteFollowersWarning.vue @@ -11,10 +11,10 @@ SPDX-License-Identifier: AGPL-3.0-only <script setup lang="ts"> import { computed } from 'vue'; -import type { FollowingFeedModel } from '@/utility/following-feed-utils.js'; +import type { FollowingFeedModel } from '@/types/following-feed.js'; import { i18n } from '@/i18n.js'; import MkInfo from '@/components/MkInfo.vue'; -import { followersTab } from '@/utility/following-feed-utils.js'; +import { followersTab } from '@/types/following-feed.js'; const props = defineProps<{ model: FollowingFeedModel, diff --git a/packages/frontend/src/pages/following-feed.vue b/packages/frontend/src/pages/following-feed.vue index 05fe45ba47..2b8dcce6a6 100644 --- a/packages/frontend/src/pages/following-feed.vue +++ b/packages/frontend/src/pages/following-feed.vue @@ -33,7 +33,8 @@ import { i18n } from '@/i18n.js'; import MkSwiper from '@/components/MkSwiper.vue'; import MkPageHeader from '@/components/global/MkPageHeader.vue'; import SkUserRecentNotes from '@/components/SkUserRecentNotes.vue'; -import { createModel, createHeaderItem, followingFeedTabs, followingTabIcon, followingTabName, followingTab } from '@/utility/following-feed-utils.js'; +import { createModel, createHeaderItem, followingTabIcon, followingTabName } from '@/utility/following-feed-utils.js'; +import { followingTab, followingFeedTabs } from '@/types/following-feed.js'; import SkFollowingRecentNotes from '@/components/SkFollowingRecentNotes.vue'; import SkRemoteFollowersWarning from '@/components/SkRemoteFollowersWarning.vue'; import { useRouter } from '@/router.js'; diff --git a/packages/frontend/src/preferences/def.ts b/packages/frontend/src/preferences/def.ts index 58e26cb005..277508d79d 100644 --- a/packages/frontend/src/preferences/def.ts +++ b/packages/frontend/src/preferences/def.ts @@ -11,10 +11,10 @@ import type { Plugin } from '@/plugin.js'; import type { DeviceKind } from '@/utility/device-kind.js'; import type { DeckProfile } from '@/deck.js'; import type { PreferencesDefinition } from './manager.js'; -import type { FollowingFeedState } from '@/utility/following-feed-utils.js'; +import type { FollowingFeedState } from '@/types/following-feed.js'; import { DEFAULT_DEVICE_KIND } from '@/utility/device-kind.js'; import { searchEngineMap } from '@/utility/search-engine-map.js'; -import { defaultFollowingFeedState } from '@/utility/following-feed-utils.js'; +import { defaultFollowingFeedState } from '@/types/following-feed.js'; /** サウンド設定 */ export type SoundStore = { diff --git a/packages/frontend/src/store.ts b/packages/frontend/src/store.ts index 0626779869..c5ee1883b8 100644 --- a/packages/frontend/src/store.ts +++ b/packages/frontend/src/store.ts @@ -10,11 +10,11 @@ import darkTheme from '@@/themes/d-green-lime.json5'; import { hemisphere } from '@@/js/intl-const.js'; import type { DeviceKind } from '@/utility/device-kind.js'; import type { Plugin } from '@/plugin.js'; +import type { FollowingFeedState } from '@/types/following-feed.js'; import { miLocalStorage } from '@/local-storage.js'; import { Pizzax } from '@/lib/pizzax.js'; import { DEFAULT_DEVICE_KIND } from '@/utility/device-kind.js'; -import { defaultFollowingFeedState } from '@/utility/following-feed-utils.js'; -import type { FollowingFeedState } from '@/utility/following-feed-utils.js'; +import { defaultFollowingFeedState } from '@/types/following-feed.js'; import { searchEngineMap } from '@/utility/search-engine-map.js'; /** diff --git a/packages/frontend/src/types/following-feed.ts b/packages/frontend/src/types/following-feed.ts new file mode 100644 index 0000000000..c38c19722a --- /dev/null +++ b/packages/frontend/src/types/following-feed.ts @@ -0,0 +1,36 @@ +/* + * SPDX-FileCopyrightText: hazelnoot and other Sharkey contributors + * SPDX-License-Identifier: AGPL-3.0-only + */ + +import type { WritableComputedRef } from 'vue'; + +export const followingTab = 'following' as const; +export const mutualsTab = 'mutuals' as const; +export const followersTab = 'followers' as const; +export const followingFeedTabs = [followingTab, mutualsTab, followersTab] as const; +export type FollowingFeedTab = typeof followingFeedTabs[number]; + +export type FollowingFeedState = { + withNonPublic: boolean, + withQuotes: boolean, + withBots: boolean, + withReplies: boolean, + onlyFiles: boolean, + userList: FollowingFeedTab, + remoteWarningDismissed: boolean, +}; + +export type FollowingFeedModel = { + [Key in keyof FollowingFeedState]: WritableComputedRef<FollowingFeedState[Key]>; +}; + +export const defaultFollowingFeedState: FollowingFeedState = { + withNonPublic: false, + withQuotes: false, + withBots: true, + withReplies: false, + onlyFiles: false, + userList: followingTab, + remoteWarningDismissed: false, +}; diff --git a/packages/frontend/src/ui/deck/following-column.vue b/packages/frontend/src/ui/deck/following-column.vue index 8e3a6388f2..ed24d119d3 100644 --- a/packages/frontend/src/ui/deck/following-column.vue +++ b/packages/frontend/src/ui/deck/following-column.vue @@ -19,18 +19,19 @@ SPDX-License-Identifier: AGPL-3.0-only <script lang="ts"> import { computed, shallowRef } from 'vue'; import type { Column } from '@/deck.js'; -import type { FollowingFeedState } from '@/utility/following-feed-utils.js'; +import type { FollowingFeedState } from '@/types/following-feed.js'; export type FollowingColumn = Column & Partial<FollowingFeedState>; </script> <script setup lang="ts"> -import type { FollowingFeedTab } from '@/utility/following-feed-utils.js'; +import type { FollowingFeedTab } from '@/types/following-feed.js'; import type { MenuItem } from '@/types/menu.js'; import { getColumn, updateColumn } from '@/deck.js'; import XColumn from '@/ui/deck/column.vue'; import SkFollowingRecentNotes from '@/components/SkFollowingRecentNotes.vue'; import SkRemoteFollowersWarning from '@/components/SkRemoteFollowersWarning.vue'; -import { createModel, createOptionsMenu, followingTab, followingTabName, followingTabIcon, followingFeedTabs } from '@/utility/following-feed-utils.js'; +import { followingTab, followingFeedTabs } from '@/types/following-feed.js'; +import { createModel, createOptionsMenu, followingTabName, followingTabIcon } from '@/utility/following-feed-utils.js'; import * as os from '@/os.js'; import { i18n } from '@/i18n.js'; import { useRouter } from '@/router.js'; diff --git a/packages/frontend/src/utility/following-feed-utils.ts b/packages/frontend/src/utility/following-feed-utils.ts index ca528f5174..d821a80fb0 100644 --- a/packages/frontend/src/utility/following-feed-utils.ts +++ b/packages/frontend/src/utility/following-feed-utils.ts @@ -7,16 +7,12 @@ import { computed } from 'vue'; import type { Ref, WritableComputedRef } from 'vue'; import type { PageHeaderItem } from '@/types/page-header.js'; import type { MenuItem } from '@/types/menu.js'; +import type { FollowingFeedTab, FollowingFeedState, FollowingFeedModel } from '@/types/following-feed.js'; import { deepMerge } from '@/utility/merge.js'; import { i18n } from '@/i18n.js'; import { popupMenu } from '@/os.js'; import { prefer } from '@/preferences.js'; - -export const followingTab = 'following' as const; -export const mutualsTab = 'mutuals' as const; -export const followersTab = 'followers' as const; -export const followingFeedTabs = [followingTab, mutualsTab, followersTab] as const; -export type FollowingFeedTab = typeof followingFeedTabs[number]; +import { followingTab, followersTab, mutualsTab, defaultFollowingFeedState } from '@/types/following-feed.js'; export function followingTabName(tab: FollowingFeedTab): string; export function followingTabName(tab: FollowingFeedTab | null | undefined): null; @@ -33,30 +29,6 @@ export function followingTabIcon(tab: FollowingFeedTab | null | undefined): stri return 'ph-user-check ph-bold ph-lg'; } -export type FollowingFeedModel = { - [Key in keyof FollowingFeedState]: WritableComputedRef<FollowingFeedState[Key]>; -}; - -export type FollowingFeedState = { - withNonPublic: boolean, - withQuotes: boolean, - withBots: boolean, - withReplies: boolean, - onlyFiles: boolean, - userList: FollowingFeedTab, - remoteWarningDismissed: boolean, -}; - -export const defaultFollowingFeedState: FollowingFeedState = { - withNonPublic: false, - withQuotes: false, - withBots: true, - withReplies: false, - onlyFiles: false, - userList: followingTab, - remoteWarningDismissed: false, -}; - interface StorageInterface { readonly state: Ref<Partial<FollowingFeedState>>; save(updated: Partial<FollowingFeedState>): void; |