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
/**
* 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> = {
[P in K]: PreferenceDefaultScopeType[P] | undefined
export type PreferenceMultipleResultType<K extends PreferenceKeyType> = {
[P in K]: PreferenceDefaultScopeType[P]
}
export type PreferenceUpdateOptions = {

View File

@ -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<K extends PreferenceKeyType>(keys: K[]): MultiPreferencesResultType<K> {
public getMultipleRaw<K extends PreferenceKeyType>(keys: K[]): PreferenceMultipleResultType<K> {
if (!this.initialized) {
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) {
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

View File

@ -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: <K extends PreferenceKeyType>(key: K, value: PreferenceDefaultScopeType[K]): Promise<void> =>
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),
setMultiple: (updates: Partial<PreferenceDefaultScopeType>) =>
ipcRenderer.invoke(IpcChannel.Preference_SetMultiple, updates),

View File

@ -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<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
const cachedResults: Partial<PreferenceDefaultScopeType> = {}
const uncachedKeys: PreferenceKeyType[] = []
@ -272,7 +272,7 @@ export class PreferenceService {
await this.subscribeToKeyInternal([key as PreferenceKeyType])
}
return { ...cachedResults, ...uncachedResults } as MultiPreferencesResultType<K>
return { ...cachedResults, ...uncachedResults } as PreferenceMultipleResultType<K>
} catch (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]] }
for (const key in keys) {
result[key] = values[keys[key]]!
result[key] = values[keys[key]]
}
return result