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.
This commit is contained in:
fullex 2025-12-02 15:09:32 +08:00
parent 747581dcfb
commit df0ca5bb2e
4 changed files with 19 additions and 27 deletions

View File

@ -4,10 +4,10 @@ export type PreferenceDefaultScopeType = PreferenceSchemas['default']
export type PreferenceKeyType = keyof PreferenceDefaultScopeType 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<K extends PreferenceKeyType> = { export type PreferenceMultipleResultType<K extends PreferenceKeyType> = {
[P in K]: PreferenceDefaultScopeType[P] | undefined [P in K]: PreferenceDefaultScopeType[P]
} }
export type PreferenceUpdateOptions = { export type PreferenceUpdateOptions = {

View File

@ -2,9 +2,9 @@ import { dbService } from '@data/db/DbService'
import { loggerService } from '@logger' import { loggerService } from '@logger'
import { DefaultPreferences } from '@shared/data/preference/preferenceSchemas' import { DefaultPreferences } from '@shared/data/preference/preferenceSchemas'
import type { import type {
MultiPreferencesResultType,
PreferenceDefaultScopeType, PreferenceDefaultScopeType,
PreferenceKeyType PreferenceKeyType,
PreferenceMultipleResultType
} from '@shared/data/preference/preferenceTypes' } from '@shared/data/preference/preferenceTypes'
import { IpcChannel } from '@shared/IpcChannel' import { IpcChannel } from '@shared/IpcChannel'
import { and, eq } from 'drizzle-orm' import { and, eq } from 'drizzle-orm'
@ -259,26 +259,18 @@ export class PreferenceService {
* @param keys Array of preference keys to retrieve * @param keys Array of preference keys to retrieve
* @returns Object with preference values for requested keys * @returns Object with preference values for requested keys
*/ */
public getMultipleRaw<K extends PreferenceKeyType>(keys: K[]): MultiPreferencesResultType<K> { public getMultipleRaw<K extends PreferenceKeyType>(keys: K[]): PreferenceMultipleResultType<K> {
if (!this.initialized) { if (!this.initialized) {
logger.warn('Preference cache not initialized, returning defaults for multiple keys') logger.warn('Preference cache not initialized, returning defaults for multiple keys')
const output: MultiPreferencesResultType<K> = {} as MultiPreferencesResultType<K>
for (const key of keys) {
if (key in DefaultPreferences.default) {
output[key] = DefaultPreferences.default[key]
} else {
output[key] = undefined as MultiPreferencesResultType<K>[K]
}
}
return output
} }
const output: MultiPreferencesResultType<K> = {} as MultiPreferencesResultType<K> const output: PreferenceMultipleResultType<K> = {} as PreferenceMultipleResultType<K>
for (const key of keys) { 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] output[key] = this.cache[key]
} else { } 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]] } const result = {} as { [P in keyof T]: PreferenceDefaultScopeType[T[P]] }
for (const key in keys) { for (const key in keys) {
result[key] = values[keys[key]]! result[key] = values[keys[key]]
} }
return result return result

View File

@ -7,9 +7,9 @@ import type { LogLevel, LogSourceWithContext } from '@shared/config/logger'
import type { FileChangeEvent, WebviewKeyEvent } from '@shared/config/types' import type { FileChangeEvent, WebviewKeyEvent } from '@shared/config/types'
import type { CacheSyncMessage } from '@shared/data/cache/cacheTypes' import type { CacheSyncMessage } from '@shared/data/cache/cacheTypes'
import type { import type {
MultiPreferencesResultType,
PreferenceDefaultScopeType, PreferenceDefaultScopeType,
PreferenceKeyType, PreferenceKeyType,
PreferenceMultipleResultType,
SelectionActionItem SelectionActionItem
} from '@shared/data/preference/preferenceTypes' } from '@shared/data/preference/preferenceTypes'
import type { UpgradeChannel } 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), ipcRenderer.invoke(IpcChannel.Preference_Get, key),
set: <K extends PreferenceKeyType>(key: K, value: PreferenceDefaultScopeType[K]): Promise<void> => set: <K extends PreferenceKeyType>(key: K, value: PreferenceDefaultScopeType[K]): Promise<void> =>
ipcRenderer.invoke(IpcChannel.Preference_Set, key, value), ipcRenderer.invoke(IpcChannel.Preference_Set, key, value),
getMultipleRaw: <K extends PreferenceKeyType>(keys: K[]): Promise<MultiPreferencesResultType<K>> => getMultipleRaw: <K extends PreferenceKeyType>(keys: K[]): Promise<PreferenceMultipleResultType<K>> =>
ipcRenderer.invoke(IpcChannel.Preference_GetMultipleRaw, keys), ipcRenderer.invoke(IpcChannel.Preference_GetMultipleRaw, keys),
setMultiple: (updates: Partial<PreferenceDefaultScopeType>) => setMultiple: (updates: Partial<PreferenceDefaultScopeType>) =>
ipcRenderer.invoke(IpcChannel.Preference_SetMultiple, updates), ipcRenderer.invoke(IpcChannel.Preference_SetMultiple, updates),

View File

@ -1,9 +1,9 @@
import { loggerService } from '@logger' import { loggerService } from '@logger'
import { DefaultPreferences } from '@shared/data/preference/preferenceSchemas' import { DefaultPreferences } from '@shared/data/preference/preferenceSchemas'
import type { import type {
MultiPreferencesResultType,
PreferenceDefaultScopeType, PreferenceDefaultScopeType,
PreferenceKeyType, PreferenceKeyType,
PreferenceMultipleResultType,
PreferenceUpdateOptions PreferenceUpdateOptions
} from '@shared/data/preference/preferenceTypes' } from '@shared/data/preference/preferenceTypes'
@ -244,7 +244,7 @@ export class PreferenceService {
* @param keys Array of preference keys to retrieve * @param keys Array of preference keys to retrieve
* @returns Promise resolving to object with preference values for requested keys * @returns Promise resolving to object with preference values for requested keys
*/ */
public async getMultipleRaw<K extends PreferenceKeyType>(keys: K[]): Promise<MultiPreferencesResultType<K>> { public async getMultipleRaw<K extends PreferenceKeyType>(keys: K[]): Promise<PreferenceMultipleResultType<K>> {
// Check which keys are already cached // Check which keys are already cached
const cachedResults: Partial<PreferenceDefaultScopeType> = {} const cachedResults: Partial<PreferenceDefaultScopeType> = {}
const uncachedKeys: PreferenceKeyType[] = [] const uncachedKeys: PreferenceKeyType[] = []
@ -272,7 +272,7 @@ export class PreferenceService {
await this.subscribeToKeyInternal([key as PreferenceKeyType]) await this.subscribeToKeyInternal([key as PreferenceKeyType])
} }
return { ...cachedResults, ...uncachedResults } as MultiPreferencesResultType<K> return { ...cachedResults, ...uncachedResults } as PreferenceMultipleResultType<K>
} catch (error) { } catch (error) {
logger.error('Failed to get multiple preferences:', error as Error) logger.error('Failed to get multiple preferences:', error as Error)
@ -284,11 +284,11 @@ export class PreferenceService {
} }
} }
return { ...cachedResults, ...defaultResults } as MultiPreferencesResultType<K> return { ...cachedResults, ...defaultResults } as PreferenceMultipleResultType<K>
} }
} }
return cachedResults as MultiPreferencesResultType<K> return cachedResults as PreferenceMultipleResultType<K>
} }
/** /**
@ -303,7 +303,7 @@ export class PreferenceService {
const result = {} as { [P in keyof T]: PreferenceDefaultScopeType[T[P]] } const result = {} as { [P in keyof T]: PreferenceDefaultScopeType[T[P]] }
for (const key in keys) { for (const key in keys) {
result[key] = values[keys[key]]! result[key] = values[keys[key]]
} }
return result return result