summaryrefslogtreecommitdiff
path: root/packages/frontend/src
diff options
context:
space:
mode:
authorsyuilo <4439005+syuilo@users.noreply.github.com>2025-06-01 07:57:18 +0900
committersyuilo <4439005+syuilo@users.noreply.github.com>2025-06-01 07:57:18 +0900
commitc5d33661b22da423d82d5c5ce20a1a5a056c8116 (patch)
treef69901e9cc65fdee5ceb89930102c57f8d9fffbf /packages/frontend/src
parent[skip ci] Update CHANGELOG.md (prepend template) (diff)
downloadmisskey-c5d33661b22da423d82d5c5ce20a1a5a056c8116.tar.gz
misskey-c5d33661b22da423d82d5c5ce20a1a5a056c8116.tar.bz2
misskey-c5d33661b22da423d82d5c5ce20a1a5a056c8116.zip
chore(frontend): improve type def
Diffstat (limited to 'packages/frontend/src')
-rw-r--r--packages/frontend/src/preferences/def.ts10
-rw-r--r--packages/frontend/src/preferences/manager.ts8
2 files changed, 13 insertions, 5 deletions
diff --git a/packages/frontend/src/preferences/def.ts b/packages/frontend/src/preferences/def.ts
index 86d5c8af98..2cbeea2883 100644
--- a/packages/frontend/src/preferences/def.ts
+++ b/packages/frontend/src/preferences/def.ts
@@ -6,12 +6,12 @@
import * as Misskey from 'misskey-js';
import { hemisphere } from '@@/js/intl-const.js';
import { v4 as uuid } from 'uuid';
+import { definePreferences } from './manager.js';
import type { Theme } from '@/theme.js';
import type { SoundType } from '@/utility/sound.js';
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 { DEFAULT_DEVICE_KIND } from '@/utility/device-kind.js';
import { deepEqual } from '@/utility/deep-equal.js';
@@ -33,7 +33,7 @@ export type SoundStore = {
// NOTE: デフォルト値は他の設定の状態に依存してはならない(依存していた場合、ユーザーがその設定項目単体で「初期値にリセット」した場合不具合の原因になる)
-export const PREF_DEF = {
+export const PREF_DEF = definePreferences({
accounts: {
default: [] as [host: string, user: {
id: string;
@@ -88,7 +88,7 @@ export const PREF_DEF = {
emojis: string[];
}[],
mergeStrategy: (a, b) => {
- const mergedItems = [] as (typeof a)[];
+ const mergedItems = [] as typeof a;
for (const x of a.concat(b)) {
const sameIdItem = mergedItems.find(y => y.id === x.id);
if (sameIdItem != null) {
@@ -119,7 +119,7 @@ export const PREF_DEF = {
themes: {
default: [] as Theme[],
mergeStrategy: (a, b) => {
- const mergedItems = [] as (typeof a)[];
+ const mergedItems = [] as typeof a;
for (const x of a.concat(b)) {
const sameIdItem = mergedItems.find(y => y.id === x.id);
if (sameIdItem != null) {
@@ -464,4 +464,4 @@ export const PREF_DEF = {
'experimental.enableFolderPageView': {
default: false,
},
-} satisfies PreferencesDefinition;
+});
diff --git a/packages/frontend/src/preferences/manager.ts b/packages/frontend/src/preferences/manager.ts
index cede145e74..603aac851c 100644
--- a/packages/frontend/src/preferences/manager.ts
+++ b/packages/frontend/src/preferences/manager.ts
@@ -96,6 +96,14 @@ type PreferencesDefinitionRecord<Default, T = Default extends (...args: any) =>
export type PreferencesDefinition = Record<string, PreferencesDefinitionRecord<any>>;
+export function definePreferences<T extends Record<string, unknown>>(x: {
+ [K in keyof T]: PreferencesDefinitionRecord<T[K]>
+}): {
+ [K in keyof T]: PreferencesDefinitionRecord<T[K]>
+ } {
+ return x;
+}
+
export function getInitialPrefValue<K extends keyof PREF>(k: K): ValueOf<K> {
if (typeof PREF_DEF[k].default === 'function') { // factory
return PREF_DEF[k].default();