From c5d33661b22da423d82d5c5ce20a1a5a056c8116 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Sun, 1 Jun 2025 07:57:18 +0900 Subject: [PATCH] chore(frontend): improve type def --- packages/frontend/src/preferences/def.ts | 10 +++++----- packages/frontend/src/preferences/manager.ts | 8 ++++++++ 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 export type PreferencesDefinition = Record>; +export function definePreferences>(x: { + [K in keyof T]: PreferencesDefinitionRecord +}): { + [K in keyof T]: PreferencesDefinitionRecord + } { + return x; +} + export function getInitialPrefValue(k: K): ValueOf { if (typeof PREF_DEF[k].default === 'function') { // factory return PREF_DEF[k].default();