diff --git a/src/main/events/picgoCoreIPC.ts b/src/main/events/picgoCoreIPC.ts index 89e23fc..de70b21 100644 --- a/src/main/events/picgoCoreIPC.ts +++ b/src/main/events/picgoCoreIPC.ts @@ -29,14 +29,14 @@ import { OPEN_WINDOW, GET_LANGUAGE_LIST, SET_CURRENT_LANGUAGE, - GET_CURRENT_LANGUAGE, - RPC_ACTIONS + GET_CURRENT_LANGUAGE } from '#/events/constants' import { GalleryDB } from 'apis/core/datastore' import { IObject, IFilter } from '@picgo/store/dist/types' import pasteTemplate from '../utils/pasteTemplate' import { i18nManager, T } from '~/main/i18n' +import { rpcServer } from './rpc' // eslint-disable-next-line const requireFunc = typeof __webpack_require__ === 'function' ? __non_webpack_require__ : require @@ -397,7 +397,7 @@ const handleI18n = () => { } const handleRPCActions = () => { - ipcMain.on(RPC_ACTIONS, (event: IpcMainEvent, action: IRPCActions, ...args: any[], callbackId: string) => {}) + rpcServer.start() } export default { diff --git a/src/main/events/rpc/index.ts b/src/main/events/rpc/index.ts new file mode 100644 index 0000000..0610a50 --- /dev/null +++ b/src/main/events/rpc/index.ts @@ -0,0 +1,83 @@ +import { ipcMain, IpcMainEvent } from 'electron' +import { IRPCActionType } from '~/universal/types/enum' +import { RPC_ACTIONS } from '#/events/constants' +import { + deleteUploaderConfig, + getUploaderConfigList, + selectUploaderConfig, + updateUploaderConfig +} from '~/universal/utils/handleUploaderConfig' + +class RPCServer { + start () { + ipcMain.on(RPC_ACTIONS, (event: IpcMainEvent, action: IRPCActionType, args: any[], callbackId: string) => { + try { + switch (action) { + case IRPCActionType.GET_PICBED_CONFIG_LIST: { + const configList = this.getPicBedConfigList(args as IGetUploaderConfigListArgs) + this.sendBack(event, action, configList, callbackId) + break + } + case IRPCActionType.DELETE_PICBED_CONFIG: { + const res = this.deleteUploaderConfig(args as IDeleteUploaderConfigArgs) + this.sendBack(event, action, res, callbackId) + break + } + case IRPCActionType.SELECT_UPLOADER: { + this.selectUploaderConfig(args as ISelectUploaderConfigArgs) + this.sendBack(event, action, true, callbackId) + break + } + case IRPCActionType.UPDATE_UPLOADER_CONFIG: { + this.updateUploaderConfig(args as IUpdateUploaderConfigArgs) + this.sendBack(event, action, true, callbackId) + break + } + default: { + this.sendBack(event, action, null, callbackId) + break + } + } + } catch (e) { + this.sendBack(event, action, null, callbackId) + } + }) + } + + /** + * if sendback data is null, then it means that the action is not supported or error occurs + */ + private sendBack (event: IpcMainEvent, action: IRPCActionType, data: any, callbackId: string) { + event.sender.send(RPC_ACTIONS, data, action, callbackId) + } + + private getPicBedConfigList (args: IGetUploaderConfigListArgs) { + const [type] = args + const config = getUploaderConfigList(type) + return config + } + + private deleteUploaderConfig (args: IDeleteUploaderConfigArgs) { + const [type, id] = args + const config = deleteUploaderConfig(type, id) + return config + } + + private selectUploaderConfig (args: ISelectUploaderConfigArgs) { + const [type, id] = args + const config = selectUploaderConfig(type, id) + return config + } + + private updateUploaderConfig (args: IUpdateUploaderConfigArgs) { + const [type, id, config] = args + const res = updateUploaderConfig(type, id, config) + return res + } +} + +const rpcServer = new RPCServer() + +export { + rpcServer +} diff --git a/src/renderer/pages/UploaderConfigPage.vue b/src/renderer/pages/UploaderConfigPage.vue index a5dbee7..3ae728d 100644 --- a/src/renderer/pages/UploaderConfigPage.vue +++ b/src/renderer/pages/UploaderConfigPage.vue @@ -45,8 +45,8 @@