diff --git a/common/src/webviewMessages.ts b/common/src/webviewMessages.ts index 3df02bb..dec33c2 100644 --- a/common/src/webviewMessages.ts +++ b/common/src/webviewMessages.ts @@ -1,71 +1,203 @@ +// 导入 ConfigLocation 和 FileSystemConfig 类型 import type { ConfigLocation, FileSystemConfig } from './fileSystemConfig'; /* Type of messages*/ +/** + * 定义一个请求数据的消息类型 + * @interface RequestDataMessage + * @property {string} type - 消息类型,固定值为 'requestData' + * @property {boolean} [reload] - 是否重新加载数据,可选参数,默认值为 false + */ export interface RequestDataMessage { + // 消息类型,固定值为 'requestData' type: 'requestData'; + // 是否重新加载数据,可选参数,默认值为 false reload?: boolean; } + +/** + * 定义一个响应数据的消息类型 + * @interface ResponseDataMessage + * @property {string} type - 消息类型,固定值为 'responseData' + * @property {FileSystemConfig[]} configs - 文件系统配置数组 + * @property {ConfigLocation[]} locations - 配置位置数组 + */ export interface ResponseDataMessage { + // 消息类型,固定值为 'responseData' type: 'responseData'; + // 文件系统配置数组 configs: FileSystemConfig[]; + // 配置位置数组 locations: ConfigLocation[]; } +/** + * 定义一个保存配置的消息类型 + * @interface SaveConfigMessage + * @property {string} type - 消息类型,固定值为 'saveConfig' + * @property {FileSystemConfig} config - 要保存的文件系统配置 + * @property {string} [name] - 配置的名称,可选参数 + * @property {string} [uniqueId] - 配置的唯一标识符,可选参数 + * @property {boolean} [remove] - 是否删除配置,可选参数,默认值为 false + */ export interface SaveConfigMessage { + // 消息类型,固定值为 'saveConfig' type: 'saveConfig'; + // 要保存的文件系统配置 config: FileSystemConfig; + // 配置的名称,可选参数 name?: string; + // 配置的唯一标识符,可选参数 uniqueId?: string; + // 是否删除配置,可选参数,默认值为 false remove?: boolean; } + +/** + * 定义一个保存配置结果的消息类型 + * @interface SaveConfigResultMessage + * @property {string} type - 消息类型,固定值为 'saveConfigResult' + * @property {string} [error] - 保存配置时发生的错误信息,可选参数 + * @property {FileSystemConfig} config - 保存的文件系统配置 + * @property {string} [uniqueId] - 配置的唯一标识符,可选参数 + */ export interface SaveConfigResultMessage { + // 消息类型,固定值为 'saveConfigResult' type: 'saveConfigResult'; + // 保存配置时发生的错误信息,可选参数 error?: string; + // 保存的文件系统配置 config: FileSystemConfig; + // 配置的唯一标识符,可选参数 uniqueId?: string; } +/** + * 定义一个提示路径的消息类型 + * @interface PromptPathMessage + * @property {string} type - 消息类型,固定值为 'promptPath' + * @property {string} [uniqueId] - 提示路径的唯一标识符,可选参数 + */ export interface PromptPathMessage { + // 消息类型,固定值为 'promptPath' type: 'promptPath'; + // 提示路径的唯一标识符,可选参数 uniqueId?: string; } + +/** + * 定义一个提示路径结果的消息类型 + * @interface PromptPathResultMessage + * @property {string} type - 消息类型,固定值为 'promptPathResult' + * @property {string} [error] - 提示路径时发生的错误信息,可选参数 + * @property {string} [path] - 用户选择的路径,可选参数 + * @property {string} [uniqueId] - 提示路径的唯一标识符,可选参数 + */ export interface PromptPathResultMessage { + // 消息类型,固定值为 'promptPathResult' type: 'promptPathResult'; + // 提示路径时发生的错误信息,可选参数 error?: string; + // 用户选择的路径,可选参数 path?: string; + // 提示路径的唯一标识符,可选参数 uniqueId?: string; } +/** + * 定义一个导航消息类型 + * @interface NavigateMessage + * @property {string} type - 消息类型,固定值为 'navigate' + * @property {Navigation} navigation - 导航对象,包含导航的类型和相关配置 + */ export interface NavigateMessage { + // 消息类型,固定值为 'navigate' type: 'navigate'; + // 导航对象,包含导航的类型和相关配置 navigation: Navigation; } + +/** + * 定义一个导航完成消息类型 + * @interface NavigatedMessage + * @property {string} type - 消息类型,固定值为 'navigated' + * @property {string} view - 导航的视图类型,如 'startscreen', 'newconfig', 'configeditor', 'configlocator' + */ export interface NavigatedMessage { + // 消息类型,固定值为 'navigated' type: 'navigated'; + // 导航的视图类型,如 'startscreen', 'newconfig', 'configeditor', 'configlocator' view: string; } +/** + * 定义一个消息类型的联合类型 + * @type MessageTypes + * @property {RequestDataMessage} requestData - 请求数据消息类型 + * @property {ResponseDataMessage} responseData - 响应数据消息类型 + * @property {SaveConfigMessage} saveConfig - 保存配置消息类型 + * @property {SaveConfigResultMessage} saveConfigResult - 保存配置结果消息类型 + * @property {PromptPathMessage} promptPath - 提示路径消息类型 + * @property {PromptPathResultMessage} promptPathResult - 提示路径结果消息类型 + * @property {NavigateMessage} navigate - 导航消息类型 + * @property {NavigatedMessage} navigated - 导航完成消息类型 + */ export interface MessageTypes { + // 请求数据消息类型 requestData: RequestDataMessage; + // 响应数据消息类型 responseData: ResponseDataMessage; + // 保存配置消息类型 saveConfig: SaveConfigMessage; + // 保存配置结果消息类型 saveConfigResult: SaveConfigResultMessage; + // 提示路径消息类型 promptPath: PromptPathMessage; + // 提示路径结果消息类型 promptPathResult: PromptPathResultMessage; + // 导航消息类型 navigate: NavigateMessage; + // 导航完成消息类型 navigated: NavigatedMessage; } +/** + * 定义一个消息类型 + * @type Message + * @property {MessageTypes[keyof MessageTypes]} value - 消息的值,是 MessageTypes 联合类型的一个实例 + */ export type Message = MessageTypes[keyof MessageTypes]; /* Types related to NavigateMessage */ +/** + * 定义一个新建配置导航对象 + * @interface NewConfigNavigation + * @property {string} type - 导航类型,固定值为 'newconfig' + */ export interface NewConfigNavigation { + // 导航类型,固定值为 'newconfig' type: 'newconfig'; } + +/** + * 定义一个编辑配置导航对象 + * @interface EditConfigNavigation + * @property {string} type - 导航类型,固定值为 'editconfig' + * @property {FileSystemConfig | FileSystemConfig[]} config - 要编辑的文件系统配置,可以是单个配置或配置数组 + */ export interface EditConfigNavigation { + // 导航类型,固定值为 'editconfig' type: 'editconfig'; + // 要编辑的文件系统配置,可以是单个配置或配置数组 config: FileSystemConfig | FileSystemConfig[]; } + +/** + * 定义一个导航对象 + * @type Navigation + * @property {NewConfigNavigation} newconfig - 新建配置导航对象 + * @property {EditConfigNavigation} editconfig - 编辑配置导航对象 + */ export type Navigation = NewConfigNavigation | EditConfigNavigation;