mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-01-08 14:29:15 +08:00
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:
parent
747581dcfb
commit
df0ca5bb2e
@ -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 = {
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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),
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user