From df0ca5bb2e96918e61b46792fd70ca51fc75b13c Mon Sep 17 00:00:00 2001 From: fullex <0xfullex@gmail.com> Date: Tue, 2 Dec 2025 15:09:32 +0800 Subject: [PATCH] refactor(preferences): rename and update multiple preferences result type - Renamed `MultiPreferencesResultType` to `PreferenceMultipleResultType` for clarity and consistency. - Updated `getMultipleRaw` method in `PreferenceService` to reflect the new type name. - Adjusted related components and services to utilize the updated type, ensuring consistent usage across the application. --- .../shared/data/preference/preferenceTypes.ts | 6 ++--- src/main/data/PreferenceService.ts | 24 +++++++------------ src/preload/index.ts | 4 ++-- src/renderer/src/data/PreferenceService.ts | 12 +++++----- 4 files changed, 19 insertions(+), 27 deletions(-) diff --git a/packages/shared/data/preference/preferenceTypes.ts b/packages/shared/data/preference/preferenceTypes.ts index 0209d09888..1937266c47 100644 --- a/packages/shared/data/preference/preferenceTypes.ts +++ b/packages/shared/data/preference/preferenceTypes.ts @@ -4,10 +4,10 @@ export type PreferenceDefaultScopeType = PreferenceSchemas['default'] export type PreferenceKeyType = keyof PreferenceDefaultScopeType /** - * Result type for getMultipleRaw - maps requested keys to their values or undefined + * Result type for getMultipleRaw - maps requested keys to their values */ -export type MultiPreferencesResultType = { - [P in K]: PreferenceDefaultScopeType[P] | undefined +export type PreferenceMultipleResultType = { + [P in K]: PreferenceDefaultScopeType[P] } export type PreferenceUpdateOptions = { diff --git a/src/main/data/PreferenceService.ts b/src/main/data/PreferenceService.ts index 4a934e64a5..15f69b94fe 100644 --- a/src/main/data/PreferenceService.ts +++ b/src/main/data/PreferenceService.ts @@ -2,9 +2,9 @@ import { dbService } from '@data/db/DbService' import { loggerService } from '@logger' import { DefaultPreferences } from '@shared/data/preference/preferenceSchemas' import type { - MultiPreferencesResultType, PreferenceDefaultScopeType, - PreferenceKeyType + PreferenceKeyType, + PreferenceMultipleResultType } from '@shared/data/preference/preferenceTypes' import { IpcChannel } from '@shared/IpcChannel' import { and, eq } from 'drizzle-orm' @@ -259,26 +259,18 @@ export class PreferenceService { * @param keys Array of preference keys to retrieve * @returns Object with preference values for requested keys */ - public getMultipleRaw(keys: K[]): MultiPreferencesResultType { + public getMultipleRaw(keys: K[]): PreferenceMultipleResultType { if (!this.initialized) { logger.warn('Preference cache not initialized, returning defaults for multiple keys') - const output: MultiPreferencesResultType = {} as MultiPreferencesResultType - for (const key of keys) { - if (key in DefaultPreferences.default) { - output[key] = DefaultPreferences.default[key] - } else { - output[key] = undefined as MultiPreferencesResultType[K] - } - } - return output } - const output: MultiPreferencesResultType = {} as MultiPreferencesResultType + const output: PreferenceMultipleResultType = {} as PreferenceMultipleResultType for (const key of keys) { - if (key in this.cache) { + // Prefer cache value, fallback to default + if (this.initialized && key in this.cache) { output[key] = this.cache[key] } else { - output[key] = undefined + output[key] = DefaultPreferences.default[key] } } @@ -305,7 +297,7 @@ export class PreferenceService { const result = {} as { [P in keyof T]: PreferenceDefaultScopeType[T[P]] } for (const key in keys) { - result[key] = values[keys[key]]! + result[key] = values[keys[key]] } return result diff --git a/src/preload/index.ts b/src/preload/index.ts index 2cc68b4315..427e2e020c 100644 --- a/src/preload/index.ts +++ b/src/preload/index.ts @@ -7,9 +7,9 @@ import type { LogLevel, LogSourceWithContext } from '@shared/config/logger' import type { FileChangeEvent, WebviewKeyEvent } from '@shared/config/types' import type { CacheSyncMessage } from '@shared/data/cache/cacheTypes' import type { - MultiPreferencesResultType, PreferenceDefaultScopeType, PreferenceKeyType, + PreferenceMultipleResultType, SelectionActionItem } from '@shared/data/preference/preferenceTypes' import type { UpgradeChannel } from '@shared/data/preference/preferenceTypes' @@ -554,7 +554,7 @@ const api = { ipcRenderer.invoke(IpcChannel.Preference_Get, key), set: (key: K, value: PreferenceDefaultScopeType[K]): Promise => ipcRenderer.invoke(IpcChannel.Preference_Set, key, value), - getMultipleRaw: (keys: K[]): Promise> => + getMultipleRaw: (keys: K[]): Promise> => ipcRenderer.invoke(IpcChannel.Preference_GetMultipleRaw, keys), setMultiple: (updates: Partial) => ipcRenderer.invoke(IpcChannel.Preference_SetMultiple, updates), diff --git a/src/renderer/src/data/PreferenceService.ts b/src/renderer/src/data/PreferenceService.ts index 6032c52fa0..4cfa04bd17 100644 --- a/src/renderer/src/data/PreferenceService.ts +++ b/src/renderer/src/data/PreferenceService.ts @@ -1,9 +1,9 @@ import { loggerService } from '@logger' import { DefaultPreferences } from '@shared/data/preference/preferenceSchemas' import type { - MultiPreferencesResultType, PreferenceDefaultScopeType, PreferenceKeyType, + PreferenceMultipleResultType, PreferenceUpdateOptions } from '@shared/data/preference/preferenceTypes' @@ -244,7 +244,7 @@ export class PreferenceService { * @param keys Array of preference keys to retrieve * @returns Promise resolving to object with preference values for requested keys */ - public async getMultipleRaw(keys: K[]): Promise> { + public async getMultipleRaw(keys: K[]): Promise> { // Check which keys are already cached const cachedResults: Partial = {} const uncachedKeys: PreferenceKeyType[] = [] @@ -272,7 +272,7 @@ export class PreferenceService { await this.subscribeToKeyInternal([key as PreferenceKeyType]) } - return { ...cachedResults, ...uncachedResults } as MultiPreferencesResultType + return { ...cachedResults, ...uncachedResults } as PreferenceMultipleResultType } catch (error) { logger.error('Failed to get multiple preferences:', error as Error) @@ -284,11 +284,11 @@ export class PreferenceService { } } - return { ...cachedResults, ...defaultResults } as MultiPreferencesResultType + return { ...cachedResults, ...defaultResults } as PreferenceMultipleResultType } } - return cachedResults as MultiPreferencesResultType + return cachedResults as PreferenceMultipleResultType } /** @@ -303,7 +303,7 @@ export class PreferenceService { const result = {} as { [P in keyof T]: PreferenceDefaultScopeType[T[P]] } for (const key in keys) { - result[key] = values[keys[key]]! + result[key] = values[keys[key]] } return result