feat: 插件声明式设置体系——registerSettings schema + 标准控件表单 + 一级导航入口开关
This commit is contained in:
@@ -25,6 +25,7 @@ import type {
|
||||
WorkspaceFile,
|
||||
WorkspaceMeta
|
||||
} from '@shared/types'
|
||||
import type { PluginSettingsSchemas, PluginSettingsValuesMap } from '@aso/plugin-sdk'
|
||||
|
||||
const api = {
|
||||
// 窗口控制(自绘标题栏按钮)
|
||||
@@ -142,6 +143,31 @@ const api = {
|
||||
pluginsDirs: (): Promise<{ user: string[]; project: string[]; global: string[] }> =>
|
||||
ipcRenderer.invoke('plugins:dirs'),
|
||||
pluginsReadRenderer: (id: string): Promise<string> => ipcRenderer.invoke('plugins:readRenderer', id),
|
||||
pluginsSettingsSchemas: (): Promise<PluginSettingsSchemas> => ipcRenderer.invoke('plugins:settingsSchemas'),
|
||||
pluginsSettingsValues: (): Promise<PluginSettingsValuesMap> => ipcRenderer.invoke('plugins:settingsValues'),
|
||||
pluginsSetSettingValue: (id: string, key: string, value: unknown): Promise<void> =>
|
||||
ipcRenderer.invoke('plugins:setSettingValue', id, key, value),
|
||||
pluginsSetSettingsNav: (id: string, on: boolean): Promise<void> =>
|
||||
ipcRenderer.invoke('plugins:setSettingsNav', id, on),
|
||||
pluginsSettingsAction: (id: string, key: string): Promise<void> =>
|
||||
ipcRenderer.invoke('plugins:settingsAction', id, key),
|
||||
pluginsPickPath: (mode: 'file' | 'directory' | 'image'): Promise<string | null> =>
|
||||
ipcRenderer.invoke('plugins:pickPath', mode),
|
||||
pluginsReadImage: (path: string): Promise<string | null> => ipcRenderer.invoke('plugins:readImage', path),
|
||||
onPluginsSettingsSchemas: (callback: (schemas: PluginSettingsSchemas) => void): (() => void) => {
|
||||
const listener = (_e: Electron.IpcRendererEvent, schemas: PluginSettingsSchemas): void => callback(schemas)
|
||||
ipcRenderer.on('plugins:settingsSchemas', listener)
|
||||
return () => {
|
||||
ipcRenderer.removeListener('plugins:settingsSchemas', listener)
|
||||
}
|
||||
},
|
||||
onPluginsSettingsValues: (callback: (values: PluginSettingsValuesMap) => void): (() => void) => {
|
||||
const listener = (_e: Electron.IpcRendererEvent, values: PluginSettingsValuesMap): void => callback(values)
|
||||
ipcRenderer.on('plugins:settingsValues', listener)
|
||||
return () => {
|
||||
ipcRenderer.removeListener('plugins:settingsValues', listener)
|
||||
}
|
||||
},
|
||||
pluginsSetEnabled: (id: string, enabled: boolean): Promise<void> =>
|
||||
ipcRenderer.invoke('plugins:setEnabled', id, enabled),
|
||||
pluginsReload: (): Promise<void> => ipcRenderer.invoke('plugins:reload'),
|
||||
|
||||
Reference in New Issue
Block a user