feat(preferences): add getAll method and IPC handler for retrieving all preferences
This commit introduces a new IPC channel and handler for fetching all user preferences at once, enhancing the efficiency of preference management. The PreferenceService is updated with a getAll method to retrieve all preferences from the memory cache, and the renderer-side PreferenceService is adjusted to support this new functionality. Additionally, type safety improvements are made across the preference handling code, ensuring better consistency and reducing potential errors.
This commit is contained in:
+10
-13
@@ -4,7 +4,7 @@ import { SpanEntity, TokenUsage } from '@mcp-trace/trace-core'
|
||||
import { SpanContext } from '@opentelemetry/api'
|
||||
import { UpgradeChannel } from '@shared/config/constant'
|
||||
import type { LogLevel, LogSourceWithContext } from '@shared/config/logger'
|
||||
import type { PreferencesType } from '@shared/data/preferences'
|
||||
import type { PreferenceDefaultScopeType, PreferenceKeyType } from '@shared/data/types'
|
||||
import { IpcChannel } from '@shared/IpcChannel'
|
||||
import {
|
||||
AddMemoryOptions,
|
||||
@@ -396,19 +396,16 @@ const api = {
|
||||
ipcRenderer.invoke(IpcChannel.TRACE_ADD_STREAM_MESSAGE, spanId, modelName, context, message)
|
||||
},
|
||||
preference: {
|
||||
get: <K extends keyof PreferencesType['default']>(key: K) => ipcRenderer.invoke(IpcChannel.Preference_Get, key),
|
||||
|
||||
set: <K extends keyof PreferencesType['default']>(key: K, value: PreferencesType['default'][K]) =>
|
||||
get: <K extends PreferenceKeyType>(key: K) => ipcRenderer.invoke(IpcChannel.Preference_Get, key),
|
||||
set: <K extends PreferenceKeyType>(key: K, value: PreferenceDefaultScopeType[K]) =>
|
||||
ipcRenderer.invoke(IpcChannel.Preference_Set, key, value),
|
||||
|
||||
getMultiple: (keys: string[]) => ipcRenderer.invoke(IpcChannel.Preference_GetMultiple, keys),
|
||||
|
||||
setMultiple: (updates: Record<string, any>) => ipcRenderer.invoke(IpcChannel.Preference_SetMultiple, updates),
|
||||
|
||||
subscribe: (keys: string[]) => ipcRenderer.invoke(IpcChannel.Preference_Subscribe, keys),
|
||||
|
||||
onChanged: (callback: (key: string, value: any, scope: string) => void) => {
|
||||
const listener = (_: any, key: string, value: any, scope: string) => callback(key, value, scope)
|
||||
getMultiple: (keys: PreferenceKeyType[]) => ipcRenderer.invoke(IpcChannel.Preference_GetMultiple, keys),
|
||||
setMultiple: (updates: Partial<PreferenceDefaultScopeType>) =>
|
||||
ipcRenderer.invoke(IpcChannel.Preference_SetMultiple, updates),
|
||||
getAll: (): Promise<PreferenceDefaultScopeType> => ipcRenderer.invoke(IpcChannel.Preference_GetAll),
|
||||
subscribe: (keys: PreferenceKeyType[]) => ipcRenderer.invoke(IpcChannel.Preference_Subscribe, keys),
|
||||
onChanged: (callback: (key: PreferenceKeyType, value: any) => void) => {
|
||||
const listener = (_: any, key: PreferenceKeyType, value: any) => callback(key, value)
|
||||
ipcRenderer.on(IpcChannel.Preference_Changed, listener)
|
||||
return () => ipcRenderer.off(IpcChannel.Preference_Changed, listener)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user