From a11ae31359bbffe2f50d0a7ddc7e124061693e02 Mon Sep 17 00:00:00 2001 From: Kuingsmile Date: Wed, 26 Jun 2024 18:57:40 +0800 Subject: [PATCH] :hammer: Refactor(custom): refactored manage page ipc --- src/main/events/rpc/index.ts | 4 +- src/main/events/rpc/routes/manage/bucket.ts | 100 +++++++++++ src/main/events/rpc/routes/manage/config.ts | 26 +++ src/main/events/rpc/routes/manage/index.ts | 13 ++ .../events/rpc/routes/manage/upDownload.ts | 108 ++++++++++++ src/main/lifeCycle/index.ts | 6 +- src/main/manage/events/constants.ts | 3 - src/main/manage/events/ipcList.ts | 158 ------------------ src/main/manage/events/manageCoreIPC.ts | 36 ---- src/renderer/manage/pages/BucketPage.vue | 57 +++---- src/renderer/manage/pages/ManageMain.vue | 7 +- src/renderer/manage/pages/ManageSetting.vue | 6 +- src/renderer/manage/utils/dataSender.ts | 18 +- src/renderer/pages/MiniPage.vue | 5 +- src/renderer/pages/PicGoSetting.vue | 4 +- src/renderer/utils/common.ts | 5 - src/universal/types/enum.ts | 34 +++- src/universal/utils/static.ts | 1 - 18 files changed, 332 insertions(+), 259 deletions(-) create mode 100644 src/main/events/rpc/routes/manage/bucket.ts create mode 100644 src/main/events/rpc/routes/manage/config.ts create mode 100644 src/main/events/rpc/routes/manage/index.ts create mode 100644 src/main/events/rpc/routes/manage/upDownload.ts delete mode 100644 src/main/manage/events/constants.ts delete mode 100644 src/main/manage/events/ipcList.ts delete mode 100644 src/main/manage/events/manageCoreIPC.ts diff --git a/src/main/events/rpc/index.ts b/src/main/events/rpc/index.ts index 8f270d9..12bc314 100644 --- a/src/main/events/rpc/index.ts +++ b/src/main/events/rpc/index.ts @@ -10,6 +10,7 @@ import { systemRouter } from '~/events/rpc/routes/system' import { toolboxRouter } from '~/events/rpc/routes/toolbox' import { trayRouter } from '~/events/rpc/routes/tray' import { uploadRouter } from '~/events/rpc/routes/upload' +import { manageRouter } from '~/events/rpc/routes/manage' import { IRPCActionType, IRPCType } from '#/types/enum' import { RPC_ACTIONS, RPC_ACTIONS_INVOKE } from '#/events/constants' @@ -75,7 +76,8 @@ const routes = [ systemRouter.routes(), toolboxRouter.routes(), trayRouter.routes(), - uploadRouter.routes() + uploadRouter.routes(), + manageRouter.routes() ] for (const route of routes) { diff --git a/src/main/events/rpc/routes/manage/bucket.ts b/src/main/events/rpc/routes/manage/bucket.ts new file mode 100644 index 0000000..bfd48f5 --- /dev/null +++ b/src/main/events/rpc/routes/manage/bucket.ts @@ -0,0 +1,100 @@ +import { ManageApi } from '~/manage/manageApi' + +import { IRPCActionType, IRPCType } from '#/types/enum' + +export default [ + { + action: IRPCActionType.MANAGE_GET_BUCKET_LIST, + handler: async (_: IIPCEvent, args: [currentPicBed: string]) => { + return new ManageApi(args[0]).getBucketList() + }, + type: IRPCType.INVOKE + }, + { + action: IRPCActionType.MANAGE_GET_BUCKET_LIST_BACKSTAGE, + handler: async (_: IIPCEvent, args: [currentPicBed: string, param: IStringKeyMap]) => { + return new ManageApi(args[0]).getBucketListBackstage(args[1]) + } + }, + { + action: IRPCActionType.MANAGE_GET_BUCKET_LIST_RECURSIVELY, + handler: async (_: IIPCEvent, args: [currentPicBed: string, param: IStringKeyMap]) => { + return new ManageApi(args[0]).getBucketListRecursively(args[1]) + } + }, + { + action: IRPCActionType.MANAGE_CREATE_BUCKET, + handler: async (_: IIPCEvent, args: [currentPicBed: string, param: IStringKeyMap]) => { + return new ManageApi(args[0]).createBucket(args[1]) + }, + type: IRPCType.INVOKE + }, + { + action: IRPCActionType.MANAGE_GET_BUCKET_FILE_LIST, + handler: async (_: IIPCEvent, args: [currentPicBed: string, param: IStringKeyMap]) => { + return new ManageApi(args[0]).getBucketFileList(args[1]) + }, + type: IRPCType.INVOKE + }, + { + action: IRPCActionType.MANAGE_GET_BUCKET_DOMAIN, + handler: async (_: IIPCEvent, args: [currentPicBed: string, param: IStringKeyMap]) => { + return new ManageApi(args[0]).getBucketDomain(args[1]) + }, + type: IRPCType.INVOKE + }, + { + action: IRPCActionType.MANAGE_SET_BUCKET_ACL_POLICY, + handler: async (_: IIPCEvent, args: [currentPicBed: string, param: IStringKeyMap]) => { + return new ManageApi(args[0]).setBucketAclPolicy(args[1]) + }, + type: IRPCType.INVOKE + }, + { + action: IRPCActionType.MANAGE_RENAME_BUCKET_FILE, + handler: async (_: IIPCEvent, args: [currentPicBed: string, param: IStringKeyMap]) => { + return new ManageApi(args[0]).renameBucketFile(args[1]) + }, + type: IRPCType.INVOKE + }, + { + action: IRPCActionType.MANAGE_DELETE_BUCKET_FILE, + handler: async (_: IIPCEvent, args: [currentPicBed: string, param: IStringKeyMap]) => { + return new ManageApi(args[0]).deleteBucketFile(args[1]) + }, + type: IRPCType.INVOKE + }, + { + action: IRPCActionType.MANAGE_DELETE_BUCKET_FOLDER, + handler: async (_: IIPCEvent, args: [currentPicBed: string, param: IStringKeyMap]) => { + return new ManageApi(args[0]).deleteBucketFolder(args[1]) + }, + type: IRPCType.INVOKE + }, + { + action: IRPCActionType.MANAGE_GET_PRE_SIGNED_URL, + handler: async (_: IIPCEvent, args: [currentPicBed: string, param: IStringKeyMap]) => { + return new ManageApi(args[0]).getPreSignedUrl(args[1]) + }, + type: IRPCType.INVOKE + }, + { + action: IRPCActionType.MANAGE_UPLOAD_BUCKET_FILE, + handler: async (_: IIPCEvent, args: [currentPicBed: string, param: IStringKeyMap]) => { + return new ManageApi(args[0]).uploadBucketFile(args[1]) + } + }, + { + action: IRPCActionType.MANAGE_DOWNLOAD_BUCKET_FILE, + handler: async (_: IIPCEvent, args: [currentPicBed: string, param: IStringKeyMap]) => { + return new ManageApi(args[0]).downloadBucketFile(args[1]) + } + }, + { + action: IRPCActionType.MANAGE_CREATE_BUCKET_FOLDER, + handler: async (_: IIPCEvent, args: [currentPicBed: string, param: IStringKeyMap]) => { + return new ManageApi(args[0]).createBucketFolder(args[1]) + }, + type: IRPCType.INVOKE + } +] diff --git a/src/main/events/rpc/routes/manage/config.ts b/src/main/events/rpc/routes/manage/config.ts new file mode 100644 index 0000000..9ed0911 --- /dev/null +++ b/src/main/events/rpc/routes/manage/config.ts @@ -0,0 +1,26 @@ +import { IRPCActionType, IRPCType } from '#/types/enum' +import getManageApi from '~/manage/Main' + +const manageApi = getManageApi() + +export default [ + { + action: IRPCActionType.MANAGE_GET_CONFIG, + handler: async (_: IIPCEvent, args: [key?: string]) => { + return manageApi.getConfig(args[0]) + }, + type: IRPCType.INVOKE + }, + { + action: IRPCActionType.MANAGE_SAVE_CONFIG, + handler: async (_: IIPCEvent, args: [data: IObj]) => { + manageApi.saveConfig(args[0]) + } + }, + { + action: IRPCActionType.MANAGE_REMOVE_CONFIG, + handler: async (_: IIPCEvent, args: [key: string, propName: string]) => { + manageApi.removeConfig(args[0], args[1]) + } + } +] diff --git a/src/main/events/rpc/routes/manage/index.ts b/src/main/events/rpc/routes/manage/index.ts new file mode 100644 index 0000000..972547f --- /dev/null +++ b/src/main/events/rpc/routes/manage/index.ts @@ -0,0 +1,13 @@ +import { RPCRouter } from '~/events/rpc/router' + +import configRoutes from '~/events/rpc/routes/manage/config' +import bucketRoutes from '~/events/rpc/routes/manage/bucket' +import upDownLoadRoutes from '~/events/rpc/routes/manage/upDownload' + +const manageRouter = new RPCRouter() + +const manageRoutes = [...configRoutes, ...bucketRoutes, ...upDownLoadRoutes] + +manageRouter.addBatch(manageRoutes) + +export { manageRouter } diff --git a/src/main/events/rpc/routes/manage/upDownload.ts b/src/main/events/rpc/routes/manage/upDownload.ts new file mode 100644 index 0000000..2913eba --- /dev/null +++ b/src/main/events/rpc/routes/manage/upDownload.ts @@ -0,0 +1,108 @@ +import { app, dialog, shell } from 'electron' +import fs from 'fs-extra' +import path from 'path' + +import { IRPCActionType, IRPCType } from '#/types/enum' + +import UpDownTaskQueue from '~/manage/datastore/upDownTaskQueue' +import { downloadFileFromUrl } from '~/manage/utils/common' + +export default [ + { + action: IRPCActionType.MANAGE_OPEN_FILE_SELECT_DIALOG, + handler: async () => { + const res = await dialog.showOpenDialog({ + properties: ['openFile', 'multiSelections'] + }) + return res.canceled ? [] : res.filePaths + }, + type: IRPCType.INVOKE + }, + { + action: IRPCActionType.MANAGE_GET_UPLOAD_TASK_LIST, + handler: async () => { + return UpDownTaskQueue.getInstance().getAllUploadTask() + }, + type: IRPCType.INVOKE + }, + { + action: IRPCActionType.MANAGE_GET_DOWNLOAD_TASK_LIST, + handler: async () => { + return UpDownTaskQueue.getInstance().getAllDownloadTask() + }, + type: IRPCType.INVOKE + }, + { + action: IRPCActionType.MANAGE_DELETE_UPLOADED_TASK, + handler: async () => { + UpDownTaskQueue.getInstance().removeUploadedTask() + } + }, + { + action: IRPCActionType.MANAGE_DELETE_ALL_UPLOADED_TASK, + handler: async () => { + UpDownTaskQueue.getInstance().clearUploadTaskQueue() + } + }, + { + action: IRPCActionType.MANAGE_DELETE_DOWNLOADED_TASK, + handler: async () => { + UpDownTaskQueue.getInstance().removeDownloadedTask() + } + }, + { + action: IRPCActionType.MANAGE_DELETE_ALL_DOWNLOADED_TASK, + handler: async () => { + UpDownTaskQueue.getInstance().clearDownloadTaskQueue() + } + }, + { + action: IRPCActionType.MANAGE_SELECT_DOWNLOAD_FOLDER, + handler: async () => { + const res = await dialog.showOpenDialog({ + properties: ['openDirectory'] + }) + return res.filePaths[0] + }, + type: IRPCType.INVOKE + }, + { + action: IRPCActionType.MANAGE_GET_DEFAULT_DOWNLOAD_FOLDER, + handler: async () => { + return app.getPath('downloads') + }, + type: IRPCType.INVOKE + }, + { + action: IRPCActionType.MANAGE_OPEN_DOWNLOADED_FOLDER, + handler: async (_: IIPCEvent, args: [path?: string]) => { + const path = args[0] + if (path) { + shell.showItemInFolder(path) + } else { + shell.openPath(app.getPath('downloads')) + } + } + }, + { + action: IRPCActionType.MANAGE_OPEN_LOCAL_FILE, + handler: async (_: IIPCEvent, args: [fullPath: string]) => { + const fullPath = args[0] + fs.existsSync(fullPath) ? shell.showItemInFolder(fullPath) : shell.openPath(path.dirname(fullPath)) + } + }, + { + action: IRPCActionType.MANAGE_DOWNLOAD_FILE_FROM_URL, + handler: async (_: IIPCEvent, args: [urls: string[]]) => { + return await downloadFileFromUrl(args[0]) + }, + type: IRPCType.INVOKE + }, + { + action: IRPCActionType.MANAGE_CONVERT_PATH_TO_BASE64, + handler: async (_: IIPCEvent, args: [filePath: string]) => { + return fs.readFileSync(args[0], 'base64') + }, + type: IRPCType.INVOKE + } +] diff --git a/src/main/lifeCycle/index.ts b/src/main/lifeCycle/index.ts index ec3839d..b9cb5ad 100644 --- a/src/main/lifeCycle/index.ts +++ b/src/main/lifeCycle/index.ts @@ -22,7 +22,6 @@ import { T } from '~/i18n' import '~/lifeCycle/errorHandler' import fixPath from '~/lifeCycle/fixPath' import UpDownTaskQueue from '~/manage/datastore/upDownTaskQueue' -import { manageIpcList } from '~/manage/events/ipcList' import getManageApi from '~/manage/Main' import { clearTempFolder } from '~/manage/utils/common' import server from '~/server/index' @@ -143,11 +142,10 @@ class LifeCycle { // fix the $PATH in macOS & linux fixPath() beforeOpen() - initI18n() - rpcServer.start() getManageApi() UpDownTaskQueue.getInstance() - manageIpcList.listen() + initI18n() + rpcServer.start() busEventList.listen() } diff --git a/src/main/manage/events/constants.ts b/src/main/manage/events/constants.ts deleted file mode 100644 index 7abaf8d..0000000 --- a/src/main/manage/events/constants.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const PICLIST_MANAGE_GET_CONFIG = 'PICLIST_MANAGE_GET_CONFIG' -export const PICLIST_MANAGE_REMOVE_CONFIG = 'PICLIST_MANAGE_REMOVE_CONFIG' -export const PICLIST_MANAGE_SAVE_CONFIG = 'PICLIST_MANAGE_SAVE_CONFIG' diff --git a/src/main/manage/events/ipcList.ts b/src/main/manage/events/ipcList.ts deleted file mode 100644 index 744d8e6..0000000 --- a/src/main/manage/events/ipcList.ts +++ /dev/null @@ -1,158 +0,0 @@ -import { ipcMain, IpcMainInvokeEvent, dialog, app, shell } from 'electron' -import fs from 'fs-extra' -import path from 'path' - -import UpDownTaskQueue from '~/manage/datastore/upDownTaskQueue' -import manageCoreIPC from '~/manage/events/manageCoreIPC' -import { ManageApi } from '~/manage/manageApi' -import { downloadFileFromUrl } from '~/manage/utils/common' - -import { selectDownloadFolder } from '#/utils/static' - -export const manageIpcList = { - listen() { - manageCoreIPC.listen() - - ipcMain.handle('getBucketList', async (_: IpcMainInvokeEvent, currentPicBed: string) => { - const manage = new ManageApi(currentPicBed) - return manage.getBucketList() - }) - - ipcMain.handle('createBucket', async (_: IpcMainInvokeEvent, currentPicBed: string, param: IStringKeyMap) => { - const manage = new ManageApi(currentPicBed) - return manage.createBucket(param) - }) - - ipcMain.handle('getBucketFileList', async (_: IpcMainInvokeEvent, currentPicBed: string, param: IStringKeyMap) => { - const manage = new ManageApi(currentPicBed) - return manage.getBucketFileList(param) - }) - - ipcMain.handle('getBucketDomain', async (_: IpcMainInvokeEvent, currentPicBed: string, param: IStringKeyMap) => { - const manage = new ManageApi(currentPicBed) - const result = await manage.getBucketDomain(param) - return result - }) - - ipcMain.handle('setBucketAclPolicy', async (_: IpcMainInvokeEvent, currentPicBed: string, param: IStringKeyMap) => { - const manage = new ManageApi(currentPicBed) - return manage.setBucketAclPolicy(param) - }) - - ipcMain.handle('renameBucketFile', async (_: IpcMainInvokeEvent, currentPicBed: string, param: IStringKeyMap) => { - const manage = new ManageApi(currentPicBed) - return manage.renameBucketFile(param) - }) - - ipcMain.handle('deleteBucketFile', async (_: IpcMainInvokeEvent, currentPicBed: string, param: IStringKeyMap) => { - const manage = new ManageApi(currentPicBed) - return manage.deleteBucketFile(param) - }) - - ipcMain.handle('deleteBucketFolder', async (_: IpcMainInvokeEvent, currentPicBed: string, param: IStringKeyMap) => { - const manage = new ManageApi(currentPicBed) - return manage.deleteBucketFolder(param) - }) - - ipcMain.on('getBucketListBackstage', async (_: IpcMainInvokeEvent, currentPicBed: string, param: IStringKeyMap) => { - const manage = new ManageApi(currentPicBed) - return manage.getBucketListBackstage(param) - }) - - ipcMain.on( - 'getBucketListRecursively', - async (_: IpcMainInvokeEvent, currentPicBed: string, param: IStringKeyMap) => { - const manage = new ManageApi(currentPicBed) - return manage.getBucketListRecursively(param) - } - ) - - ipcMain.handle('convertPathToBase64', async (_: IpcMainInvokeEvent, filePath: string) => { - const res = fs.readFileSync(filePath, 'base64') - return res - }) - - ipcMain.handle('openFileSelectDialog', async () => { - const res = await dialog.showOpenDialog({ - properties: ['openFile', 'multiSelections'] - }) - if (res.canceled) { - return [] - } else { - return res.filePaths - } - }) - - ipcMain.handle('getPreSignedUrl', async (_: IpcMainInvokeEvent, currentPicBed: string, param: IStringKeyMap) => { - const manage = new ManageApi(currentPicBed) - return manage.getPreSignedUrl(param) - }) - - ipcMain.handle('getUploadTaskList', async () => { - return UpDownTaskQueue.getInstance().getAllUploadTask() - }) - - ipcMain.handle('getDownloadTaskList', async () => { - return UpDownTaskQueue.getInstance().getAllDownloadTask() - }) - - ipcMain.on('uploadBucketFile', async (_: IpcMainInvokeEvent, currentPicBed: string, param: IStringKeyMap) => { - const manage = new ManageApi(currentPicBed) - return manage.uploadBucketFile(param) - }) - - ipcMain.on('downloadBucketFile', async (_: IpcMainInvokeEvent, currentPicBed: string, param: IStringKeyMap) => { - const manage = new ManageApi(currentPicBed) - return manage.downloadBucketFile(param) - }) - - ipcMain.handle('createBucketFolder', async (_: IpcMainInvokeEvent, currentPicBed: string, param: IStringKeyMap) => { - const manage = new ManageApi(currentPicBed) - return manage.createBucketFolder(param) - }) - - ipcMain.on('deleteUploadedTask', async () => { - UpDownTaskQueue.getInstance().removeUploadedTask() - }) - - ipcMain.on('deleteAllUploadedTask', async () => { - UpDownTaskQueue.getInstance().clearUploadTaskQueue() - }) - - ipcMain.on('deleteDownloadedTask', async () => { - UpDownTaskQueue.getInstance().removeDownloadedTask() - }) - - ipcMain.on('deleteAllDownloadedTask', async () => { - UpDownTaskQueue.getInstance().clearDownloadTaskQueue() - }) - - ipcMain.handle(selectDownloadFolder, async () => { - const res = await dialog.showOpenDialog({ - properties: ['openDirectory'] - }) - return res.filePaths[0] - }) - - ipcMain.handle('getDefaultDownloadFolder', async () => { - return app.getPath('downloads') - }) - - ipcMain.on('OpenDownloadedFolder', async (_: IpcMainInvokeEvent, path: string | undefined) => { - if (path) { - shell.showItemInFolder(path) - } else { - shell.openPath(app.getPath('downloads')) - } - }) - - ipcMain.on('OpenLocalFile', async (_: IpcMainInvokeEvent, fullPath: string) => { - fs.existsSync(fullPath) ? shell.showItemInFolder(fullPath) : shell.openPath(path.dirname(fullPath)) - }) - - ipcMain.handle('downloadFileFromUrl', async (_: IpcMainInvokeEvent, urls: string[]) => { - const res = await downloadFileFromUrl(urls) - return res - }) - } -} diff --git a/src/main/manage/events/manageCoreIPC.ts b/src/main/manage/events/manageCoreIPC.ts deleted file mode 100644 index 2e5fb95..0000000 --- a/src/main/manage/events/manageCoreIPC.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { IpcMainEvent, IpcMainInvokeEvent, ipcMain } from 'electron' - -import getManageApi from '~/manage/Main' -import { - PICLIST_MANAGE_GET_CONFIG, - PICLIST_MANAGE_SAVE_CONFIG, - PICLIST_MANAGE_REMOVE_CONFIG -} from '~/manage/events/constants' - -const manageApi = getManageApi() - -const handleManageGetConfig = () => { - ipcMain.handle(PICLIST_MANAGE_GET_CONFIG, (_: IpcMainInvokeEvent, key: string | undefined) => { - return manageApi.getConfig(key) - }) -} - -const handleManageSaveConfig = () => { - ipcMain.on(PICLIST_MANAGE_SAVE_CONFIG, (_: IpcMainEvent, data: any) => { - manageApi.saveConfig(data) - }) -} - -const handleManageRemoveConfig = () => { - ipcMain.on(PICLIST_MANAGE_REMOVE_CONFIG, (_: IpcMainEvent, key: string, propName: string) => { - manageApi.removeConfig(key, propName) - }) -} - -export default { - listen() { - handleManageGetConfig() - handleManageSaveConfig() - handleManageRemoveConfig() - } -} diff --git a/src/renderer/manage/pages/BucketPage.vue b/src/renderer/manage/pages/BucketPage.vue index beb9fd4..853817d 100644 --- a/src/renderer/manage/pages/BucketPage.vue +++ b/src/renderer/manage/pages/BucketPage.vue @@ -1230,6 +1230,8 @@ import { T as $T } from '@/i18n' import { getExtension, trimPath } from '#/utils/common' import { cancelDownloadLoadingFileList, refreshDownloadFileTransferList } from '#/utils/static' import { IUploadTask, IDownloadTask } from '#/types/manage' +import { sendRPC, triggerRPC } from '@/utils/common' +import { IRPCActionType } from 'root/src/universal/types/enum' /* configMap:{ @@ -1416,7 +1418,7 @@ function showUploadDialog() { function startRefreshUploadTask() { refreshUploadTaskId.value = setInterval(() => { - ipcRenderer.invoke('getUploadTaskList').then((res: any) => { + triggerRPC(IRPCActionType.MANAGE_GET_UPLOAD_TASK_LIST).then((res: any) => { uploadTaskList.value = res }) }, 300) @@ -1438,7 +1440,7 @@ function showDownloadDialog() { function startRefreshDownloadTask() { refreshDownloadTaskId.value = setInterval(() => { - ipcRenderer.invoke('getDownloadTaskList').then((res: any) => { + triggerRPC(IRPCActionType.MANAGE_GET_DOWNLOAD_TASK_LIST).then((res: any) => { downloadTaskList.value = res }) }, 300) @@ -1458,7 +1460,7 @@ function handleViewChange(val: 'list' | 'grid') { // 上传文件选择相关 function openFileSelectDialog() { - ipcRenderer.invoke('openFileSelectDialog').then((res: any) => { + triggerRPC(IRPCActionType.MANAGE_OPEN_FILE_SELECT_DIALOG).then((res: any) => { if (res) { res.forEach((item: any) => { tableData.push({ @@ -1664,7 +1666,7 @@ function uploadFiles() { aclForUpload: manageStore.config.picBed[configMap.alias].aclForUpload }) }) - ipcRenderer.send('uploadBucketFile', configMap.alias, param) + sendRPC(IRPCActionType.MANAGE_UPLOAD_BUCKET_FILE, configMap.alias, param) } function handleCopyUploadingTaskInfo() { @@ -1673,12 +1675,12 @@ function handleCopyUploadingTaskInfo() { } function handleDeleteUploadedTask() { - ipcRenderer.send('deleteUploadedTask') + sendRPC(IRPCActionType.MANAGE_DELETE_UPLOADED_TASK) ElMessage.success($T('MANAGE_BUCKET_DELETE_SUCCESS')) } function handleDeleteAllUploadedTask() { - ipcRenderer.send('deleteAllUploadedTask') + sendRPC(IRPCActionType.MANAGE_DELETE_ALL_UPLOADED_TASK) ElMessage.success($T('MANAGE_BUCKET_DELETE_SUCCESS')) } @@ -1690,17 +1692,17 @@ function handleCopyDownloadingTaskInfo() { } function handleDeleteDownloadedTask() { - ipcRenderer.send('deleteDownloadedTask') + sendRPC(IRPCActionType.MANAGE_DELETE_DOWNLOADED_TASK) ElMessage.success($T('MANAGE_BUCKET_DELETE_SUCCESS')) } function handleDeleteAllDownloadedTask() { - ipcRenderer.send('deleteAllDownloadedTask') + sendRPC(IRPCActionType.MANAGE_DELETE_ALL_DOWNLOADED_TASK) ElMessage.success($T('MANAGE_BUCKET_DELETE_SUCCESS')) } function handleOpenDownloadedFolder() { - ipcRenderer.send('OpenDownloadedFolder', manageStore.config.settings.downloadDir) + sendRPC(IRPCActionType.MANAGE_OPEN_DOWNLOADED_FOLDER, manageStore.config.settings.downloadDir) } // 文件列表相关 @@ -1828,7 +1830,7 @@ async function initCustomDomainList() { } else if (currentPicBedName.value === 'github') { defaultUrl = 'main' } - const res = await ipcRenderer.invoke('getBucketDomain', configMap.alias, param) + const res = await triggerRPC(IRPCActionType.MANAGE_GET_BUCKET_DOMAIN, configMap.alias, param) if (res.length > 0) { customDomainList.value.length = 0 res.forEach((item: any) => { @@ -2165,7 +2167,7 @@ async function handleFolderBatchDownload(item: any) { type: 'warning' }) .then(async () => { - const defaultDownloadPath = await ipcRenderer.invoke('getDefaultDownloadFolder') + const defaultDownloadPath = await triggerRPC(IRPCActionType.MANAGE_GET_DEFAULT_DOWNLOAD_FOLDER) const param = { downloadPath: manageStore.config.settings.downloadDir ?? defaultDownloadPath, maxDownloadFileCount: manageStore.config.settings.maxDownloadFileCount @@ -2192,7 +2194,7 @@ async function handleFolderBatchDownload(item: any) { isLoadingDownloadData.value = true const downloadFileTransferStore = useDownloadFileTransferStore() downloadFileTransferStore.resetDownloadFileTransferList() - ipcRenderer.send('getBucketListRecursively', configMap.alias, paramGet) + sendRPC(IRPCActionType.MANAGE_GET_BUCKET_LIST_RECURSIVELY, configMap.alias, paramGet) ipcRenderer.on(refreshDownloadFileTransferList, (_: IpcRendererEvent, data) => { downloadFileTransferStore.refreshDownloadFileTransferList(data) }) @@ -2226,7 +2228,7 @@ async function handleFolderBatchDownload(item: any) { }) }) } - ipcRenderer.send('downloadBucketFile', configMap.alias, param) + sendRPC(IRPCActionType.MANAGE_DOWNLOAD_BUCKET_FILE, configMap.alias, param) isShowDownloadPanel.value = true } else { ElNotification.error({ @@ -2249,7 +2251,7 @@ async function handleFolderBatchDownload(item: any) { } async function handleBatchDownload() { - const defaultDownloadPath = await ipcRenderer.invoke('getDefaultDownloadFolder') + const defaultDownloadPath = await triggerRPC(IRPCActionType.MANAGE_GET_DEFAULT_DOWNLOAD_FOLDER) const param = { downloadPath: manageStore.config.settings.downloadDir ?? defaultDownloadPath, maxDownloadFileCount: manageStore.config.settings.maxDownloadFileCount @@ -2274,7 +2276,7 @@ async function handleBatchDownload() { }) } }) - ipcRenderer.send('downloadBucketFile', configMap.alias, param) + sendRPC(IRPCActionType.MANAGE_DOWNLOAD_BUCKET_FILE, configMap.alias, param) handleCancelCheck() isShowDownloadPanel.value = true } @@ -2303,7 +2305,7 @@ function handleCreateFolder() { key: currentPrefix.value.slice(1) + formatedPath + '/', githubBranch: currentCustomDomain.value } - const res = await ipcRenderer.invoke('createBucketFolder', configMap.alias, param) + const res = await triggerRPC(IRPCActionType.MANAGE_CREATE_BUCKET_FOLDER, configMap.alias, param) if (res) { ElMessage.success($T('MANAGE_BUCKET_CREATE_FOLDER_SUCCESS')) } else { @@ -2335,7 +2337,7 @@ async function handleUploadFromUrl() { type: 'success', duration: 1000 }) - const res = await ipcRenderer.invoke('downloadFileFromUrl', urlList) + const res = await triggerRPC(IRPCActionType.MANAGE_DOWNLOAD_FILE_FROM_URL, urlList) for (let i = 0; i < res.length; i++) { const fPath = res[i].replace(/\\/g, '/') uploadPanelFilesList.value.push({ @@ -2433,7 +2435,7 @@ async function BatchRename() { newKey: (item.key.slice(0, item.key.lastIndexOf('/') + 1) + item.newName).replaceAll('//', '/'), customUrl: currentCustomDomain.value } - ipcRenderer.invoke('renameBucketFile', configMap.alias, param).then((res: any) => { + triggerRPC(IRPCActionType.MANAGE_RENAME_BUCKET_FILE, configMap.alias, param).then((res: any) => { if (res) { successCount++ resolve(true) @@ -2620,7 +2622,7 @@ async function getBucketFileListBackStage() { param.baseDir = configMap.baseDir param.webPath = configMap.webPath } - ipcRenderer.send('getBucketListBackstage', configMap.alias, param) + sendRPC(IRPCActionType.MANAGE_GET_BUCKET_LIST_BACKSTAGE, configMap.alias, param) ipcRenderer.on('refreshFileTransferList', (_: IpcRendererEvent, data) => { fileTransferStore.refreshFileTransferList(data) }) @@ -2673,7 +2675,7 @@ async function getBucketFileList() { customUrl: currentCustomDomain.value, currentPage: currentPageNumber.value } - return await ipcRenderer.invoke('getBucketFileList', configMap.alias, param) + return await triggerRPC(IRPCActionType.MANAGE_GET_BUCKET_FILE_LIST, configMap.alias, param) } function handleBatchDeleteInfo() { @@ -2699,8 +2701,8 @@ function handleBatchDeleteInfo() { githubBranch: currentCustomDomain.value } const result = item.isDir - ? await ipcRenderer.invoke('deleteBucketFolder', configMap.alias, param) - : await ipcRenderer.invoke('deleteBucketFile', configMap.alias, param) + ? await triggerRPC(IRPCActionType.MANAGE_DELETE_BUCKET_FOLDER, configMap.alias, param) + : await triggerRPC(IRPCActionType.MANAGE_DELETE_BUCKET_FILE, configMap.alias, param) if (result) { successCount++ currentPageFilesInfo.splice( @@ -2775,9 +2777,9 @@ function handleDeleteFile(item: any) { message: $T('MANAGE_BUCKET_DELETE_ERROR_MSG_MSG'), duration: 1000 }) - res = await ipcRenderer.invoke('deleteBucketFolder', configMap.alias, param) + res = await triggerRPC(IRPCActionType.MANAGE_DELETE_BUCKET_FOLDER, configMap.alias, param) } else { - res = await ipcRenderer.invoke('deleteBucketFile', configMap.alias, param) + res = await triggerRPC(IRPCActionType.MANAGE_DELETE_BUCKET_FILE, configMap.alias, param) } if (res) { ElMessage.success($T('MANAGE_BUCKET_DELETE_SUCCESS')) @@ -2845,7 +2847,7 @@ function singleRename() { newKey: (item.key.slice(0, item.key.lastIndexOf('/') + 1) + itemToBeRenamed.value.newName).replaceAll('//', '/'), customUrl: currentCustomDomain.value } - ipcRenderer.invoke('renameBucketFile', configMap.alias, param).then((res: any) => { + triggerRPC(IRPCActionType.MANAGE_RENAME_BUCKET_FILE, configMap.alias, param).then((res: any) => { if (res) { const oldKey = currentPrefix.value + item.fileName if (pagingMarker.value === oldKey.slice(1)) { @@ -2910,8 +2912,7 @@ async function getPreSignedUrl(item: any) { githubPrivate: configMap.bucketConfig.private, rawUrl: item.url } - const res = await ipcRenderer.invoke('getPreSignedUrl', configMap.alias, param) - return res + return await triggerRPC(IRPCActionType.MANAGE_GET_PRE_SIGNED_URL, configMap.alias, param) } function copyToClipboard(text: string) { @@ -2954,7 +2955,7 @@ const downloadedTaskColumns: Column[] = [ cellRenderer: ({ rowData: item }) => (
{ - ipcRenderer.send('OpenLocalFile', item.targetFilePath) + sendRPC(IRPCActionType.MANAGE_OPEN_LOCAL_FILE, item.targetFilePath) }} > diff --git a/src/renderer/manage/pages/ManageMain.vue b/src/renderer/manage/pages/ManageMain.vue index b8c9a8c..66c486d 100644 --- a/src/renderer/manage/pages/ManageMain.vue +++ b/src/renderer/manage/pages/ManageMain.vue @@ -237,7 +237,8 @@ import { useManageStore } from '@/manage/store/manageStore' import { newBucketConfig } from '@/manage/utils/newBucketConfig' import { T as $T } from '@/i18n' -import { invokeToMain } from '@/utils/common' +import { triggerRPC } from '@/utils/common' +import { IRPCActionType } from 'root/src/universal/types/enum' const manageStore = useManageStore() as any const route = useRoute() @@ -348,7 +349,7 @@ function createNewBucket(picBedName: string) { resultMap.BucketName = `${resultMap.BucketName}-${currentPagePicBedConfig.appId}` } resultMap.endpoint = currentPagePicBedConfig.endpoint - invokeToMain('createBucket', currentAlias, resultMap).then((result: any) => { + triggerRPC(IRPCActionType.MANAGE_CREATE_BUCKET, currentAlias, resultMap).then((result: any) => { if (result) { ElNotification({ title: $T('MANAGE_MAIN_PAGE_TIPS'), @@ -374,7 +375,7 @@ async function getBucketList() { bucketNameList.value = [] isLoadingBucketList.value = true - const result = await invokeToMain('getBucketList', currentAlias.value) + const result = await triggerRPC(IRPCActionType.MANAGE_GET_BUCKET_LIST, currentAlias.value) isLoadingBucketList.value = false if (result.length > 0) { diff --git a/src/renderer/manage/pages/ManageSetting.vue b/src/renderer/manage/pages/ManageSetting.vue index 89d458a..0227b1d 100644 --- a/src/renderer/manage/pages/ManageSetting.vue +++ b/src/renderer/manage/pages/ManageSetting.vue @@ -204,8 +204,8 @@ import { getConfig, saveConfig } from '@/manage/utils/dataSender' import { T as $T } from '@/i18n' -import { selectDownloadFolder } from '#/utils/static' -import { invokeToMain } from '@/utils/common' +import { triggerRPC } from '@/utils/common' +import { IRPCActionType } from 'root/src/universal/types/enum' const form = ref({ timestampRename: false, @@ -321,7 +321,7 @@ async function initData() { } async function handleDownloadDirClick() { - const result = await invokeToMain(selectDownloadFolder) + const result = triggerRPC(IRPCActionType.MANAGE_SELECT_DOWNLOAD_FOLDER) if (result) { form.value.downloadDir = result } diff --git a/src/renderer/manage/utils/dataSender.ts b/src/renderer/manage/utils/dataSender.ts index 68285ce..3fd6646 100644 --- a/src/renderer/manage/utils/dataSender.ts +++ b/src/renderer/manage/utils/dataSender.ts @@ -1,22 +1,16 @@ -import { ipcRenderer } from 'electron' +import { sendRPC, triggerRPC } from '@/utils/common' -import { getRawData } from '@/utils/common' - -import { - PICLIST_MANAGE_GET_CONFIG, - PICLIST_MANAGE_SAVE_CONFIG, - PICLIST_MANAGE_REMOVE_CONFIG -} from '~/manage/events/constants' +import { IRPCActionType } from '#/types/enum' export function saveConfig(config: IObj | string, value?: any) { - const configObj = typeof config === 'string' ? { [config]: value } : getRawData(config) - ipcRenderer.send(PICLIST_MANAGE_SAVE_CONFIG, configObj) + const configObj = typeof config === 'string' ? { [config]: value } : config + sendRPC(IRPCActionType.MANAGE_SAVE_CONFIG, configObj) } export async function getConfig(key?: string): Promise { - return await ipcRenderer.invoke(PICLIST_MANAGE_GET_CONFIG, key) + return await triggerRPC(IRPCActionType.MANAGE_GET_CONFIG, key) } export function removeConfig(key: string, propName: string) { - ipcRenderer.send(PICLIST_MANAGE_REMOVE_CONFIG, key, propName) + sendRPC(IRPCActionType.MANAGE_REMOVE_CONFIG, key, propName) } diff --git a/src/renderer/pages/MiniPage.vue b/src/renderer/pages/MiniPage.vue index 7797d1f..12575d6 100644 --- a/src/renderer/pages/MiniPage.vue +++ b/src/renderer/pages/MiniPage.vue @@ -31,7 +31,7 @@ import { IConfig } from 'piclist' import { onBeforeUnmount, onBeforeMount, ref, watch } from 'vue' import { T as $T } from '@/i18n/index' -import { invokeToMain, sendRPC } from '@/utils/common' +import { sendRPC, triggerRPC } from '@/utils/common' import { getConfig } from '@/utils/dataSender' import { osGlobal } from '@/utils/global' @@ -53,7 +53,8 @@ async function initLogoPath() { if (config) { if (config.settings?.isCustomMiniIcon && config.settings?.customMiniIcon) { logoPath.value = - 'data:image/jpg;base64,' + (await invokeToMain('convertPathToBase64', config.settings.customMiniIcon)) + 'data:image/jpg;base64,' + + (await triggerRPC(IRPCActionType.MANAGE_CONVERT_PATH_TO_BASE64, config.settings.customMiniIcon)) } } } diff --git a/src/renderer/pages/PicGoSetting.vue b/src/renderer/pages/PicGoSetting.vue index a4c5e37..c79daab 100644 --- a/src/renderer/pages/PicGoSetting.vue +++ b/src/renderer/pages/PicGoSetting.vue @@ -947,7 +947,7 @@ import { configPaths, ISartModeValues } from '#/utils/configPaths' import { getLatestVersion } from '#/utils/getLatestVersion' import pkg from 'root/package.json' -import { invokeToMain, sendRPC, triggerRPC } from '@/utils/common' +import { sendRPC, triggerRPC } from '@/utils/common' const $router = useRouter() const activeName = ref<'system' | 'syncAndConfigure' | 'upload' | 'advanced' | 'upadte'>('system') @@ -1420,7 +1420,7 @@ function handleMiniWindowOntop(val: ICheckBoxValueType) { } async function handleMiniIconPath(_: Event) { - const result = await invokeToMain('openFileSelectDialog') + const result = await triggerRPC(IRPCActionType.MANAGE_OPEN_FILE_SELECT_DIALOG) if (result && result[0]) { formOfSetting.value.customMiniIcon = result[0] saveConfig(configPaths.settings.customMiniIcon, formOfSetting.value.customMiniIcon) diff --git a/src/renderer/utils/common.ts b/src/renderer/utils/common.ts index 7098397..2a8a5e5 100644 --- a/src/renderer/utils/common.ts +++ b/src/renderer/utils/common.ts @@ -56,11 +56,6 @@ export function sendRpcSync(action: IRPCActionType, ...args: any[]) { return ipcRenderer.sendSync(RPC_ACTIONS, action, data) } -export function invokeToMain(channel: string, ...args: any[]) { - const data = getRawData(args) - return ipcRenderer.invoke(channel, ...data) -} - /** * trigger RPC action * TODO: create an isolate rpc handler diff --git a/src/universal/types/enum.ts b/src/universal/types/enum.ts index 65a0b12..ba5e51a 100644 --- a/src/universal/types/enum.ts +++ b/src/universal/types/enum.ts @@ -173,7 +173,39 @@ export enum IRPCActionType { // tray rpc TRAY_SET_TOOL_TIP = 'TRAY_SET_TOOL_TIP', TRAY_GET_SHORT_URL = 'TRAY_GET_SHORT_URL', - TRAY_UPLOAD_CLIPBOARD_FILES = 'TRAY_UPLOAD_CLIPBOARD_FILES' + TRAY_UPLOAD_CLIPBOARD_FILES = 'TRAY_UPLOAD_CLIPBOARD_FILES', + + // manage rpc + MANAGE_GET_CONFIG = 'MANAGE_GET_CONFIG', + MANAGE_SAVE_CONFIG = 'MANAGE_SAVE_CONFIG', + MANAGE_REMOVE_CONFIG = 'MANAGE_REMOVE_CONFIG', + MANAGE_GET_BUCKET_LIST = 'MANAGE_GET_BUCKET_LIST', + MANAGE_GET_BUCKET_LIST_BACKSTAGE = 'MANAGE_GET_BUCKET_LIST_BACKSTAGE', + MANAGE_GET_BUCKET_LIST_RECURSIVELY = 'MANAGE_GET_BUCKET_LIST_RECURSIVELY', + MANAGE_CREATE_BUCKET = 'MANAGE_CREATE_BUCKET', + MANAGE_GET_BUCKET_FILE_LIST = 'MANAGE_GET_BUCKET_FILE_LIST', + MANAGE_GET_BUCKET_DOMAIN = 'MANAGE_GET_BUCKET_DOMAIN', + MANAGE_SET_BUCKET_ACL_POLICY = 'MANAGE_SET_BUCKET_ACL_POLICY', + MANAGE_RENAME_BUCKET_FILE = 'MANAGE_RENAME_BUCKET_FILE', + MANAGE_DELETE_BUCKET_FILE = 'MANAGE_DELETE_BUCKET_FILE', + MANAGE_DELETE_BUCKET_FOLDER = 'MANAGE_DELETE_BUCKET_FOLDER', + MANAGE_GET_PRE_SIGNED_URL = 'MANAGE_GET_PRE_SIGNED_URL', + MANAGE_UPLOAD_BUCKET_FILE = 'MANAGE_UPLOAD_BUCKET_FILE', + MANAGE_DOWNLOAD_BUCKET_FILE = 'MANAGE_DOWNLOAD_BUCKET_FILE', + MANAGE_CREATE_BUCKET_FOLDER = 'MANAGE_CREATE_BUCKET_FOLDER', + MANAGE_OPEN_FILE_SELECT_DIALOG = 'MANAGE_OPEN_FILE_SELECT_DIALOG', + MANAGE_GET_UPLOAD_TASK_LIST = 'MANAGE_GET_UPLOAD_TASK_LIST', + MANAGE_GET_DOWNLOAD_TASK_LIST = 'MANAGE_GET_DOWNLOAD_TASK_LIST', + MANAGE_DELETE_UPLOADED_TASK = 'MANAGE_DELETE_UPLOADED_TASK', + MANAGE_DELETE_ALL_UPLOADED_TASK = 'MANAGE_DELETE_ALL_UPLOADED_TASK', + MANAGE_DELETE_DOWNLOADED_TASK = 'MANAGE_DELETE_DOWNLOADED_TASK', + MANAGE_DELETE_ALL_DOWNLOADED_TASK = 'MANAGE_DELETE_ALL_DOWNLOADED_TASK', + MANAGE_SELECT_DOWNLOAD_FOLDER = 'MANAGE_SELECT_DOWNLOAD_FOLDER', + MANAGE_GET_DEFAULT_DOWNLOAD_FOLDER = 'MANAGE_GET_DEFAULT_DOWNLOAD_FOLDER', + MANAGE_OPEN_DOWNLOADED_FOLDER = 'MANAGE_OPEN_DOWNLOADED_FOLDER', + MANAGE_OPEN_LOCAL_FILE = 'MANAGE_OPEN_LOCAL_FILE', + MANAGE_DOWNLOAD_FILE_FROM_URL = 'MANAGE_DOWNLOAD_FILE_FROM_URL', + MANAGE_CONVERT_PATH_TO_BASE64 = 'MANAGE_CONVERT_PATH_TO_BASE64' } export enum IToolboxItemType { diff --git a/src/universal/utils/static.ts b/src/universal/utils/static.ts index 3cdd5f9..362e189 100644 --- a/src/universal/utils/static.ts +++ b/src/universal/utils/static.ts @@ -7,7 +7,6 @@ export const DEFAULT_AES_PASSWORD = 'aesPassword' export const cancelDownloadLoadingFileList = 'cancelDownloadLoadingFileList' export const refreshDownloadFileTransferList = 'refreshDownloadFileTransferList' -export const selectDownloadFolder = 'selectDownloadFolder' export const picBedsCanbeDeleted = [ 'aliyun',