summaryrefslogtreecommitdiff
path: root/packages/frontend/src
diff options
context:
space:
mode:
authorHazelnoot <acomputerdog@gmail.com>2025-05-10 13:19:47 -0400
committerHazelnoot <acomputerdog@gmail.com>2025-05-10 18:40:06 -0400
commit42d4fc9d97b2df220216ae0635ea8a4b69948900 (patch)
treea874f864a8076b1d82194fd5e04a8b9b060606e4 /packages/frontend/src
parentmerge: put back buttons "show/hide replies-to-others from all" (!1009) (diff)
downloadsharkey-42d4fc9d97b2df220216ae0635ea8a4b69948900.tar.gz
sharkey-42d4fc9d97b2df220216ae0635ea8a4b69948900.tar.bz2
sharkey-42d4fc9d97b2df220216ae0635ea8a4b69948900.zip
refactor following feed to avoid circular dependency
Diffstat (limited to 'packages/frontend/src')
-rw-r--r--packages/frontend/src/components/SkFollowingRecentNotes.vue2
-rw-r--r--packages/frontend/src/components/SkRemoteFollowersWarning.vue4
-rw-r--r--packages/frontend/src/pages/following-feed.vue3
-rw-r--r--packages/frontend/src/preferences/def.ts4
-rw-r--r--packages/frontend/src/store.ts4
-rw-r--r--packages/frontend/src/types/following-feed.ts36
-rw-r--r--packages/frontend/src/ui/deck/following-column.vue7
-rw-r--r--packages/frontend/src/utility/following-feed-utils.ts32
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;