diff --git a/electron/electron-menu.js b/electron/electron-menu.js index 4a64a9307..ccaf181fd 100644 --- a/electron/electron-menu.js +++ b/electron/electron-menu.js @@ -54,15 +54,15 @@ const electronMenu = { async saveImageAs(url, params) { let extension = ''; - if (utils.isProtocolResource(url)) { - extension = utils.protocolResourcePath(url).split('.').pop().toLowerCase(); + if (utils.isLocalAssetPath(url)) { + extension = utils.localAssetRestoreRealPath(url).split('.').pop().toLowerCase(); } else { const urlExtension = url.split('.').pop().split(/[#?]/)[0].toLowerCase(); if (['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp'].includes(urlExtension)) { extension = urlExtension; } } - + if (!extension) { extension = 'png'; } @@ -84,8 +84,8 @@ const electronMenu = { try { if (electronMenu.isBlobOrDataUrl(url)) { await electronMenu.writeNativeImage(filePath, nativeImage.createFromDataURL(url)); - } else if (utils.isProtocolResource(url)) { - await fs.promises.copyFile(utils.protocolResourcePath(url), filePath); + } else if (utils.isLocalAssetPath(url)) { + await fs.promises.copyFile(utils.localAssetRestoreRealPath(url), filePath); } else { const writeStream = fs.createWriteStream(filePath) const readStream = request(url) @@ -122,7 +122,7 @@ const electronMenu = { const url = params.linkURL || params.srcURL; const popupMenu = new Menu(); - if (!electronMenu.isBlobOrDataUrl(url) && !utils.isProtocolResource(url)) { + if (!electronMenu.isBlobOrDataUrl(url) && !utils.isLocalAssetPath(url)) { popupMenu.append( new MenuItem({ label: electronMenu.language.openInBrowser, @@ -168,7 +168,7 @@ const electronMenu = { }, }), ); - } else if (!utils.isProtocolResource(url)) { + } else if (!utils.isLocalAssetPath(url)) { popupMenu.append( new MenuItem({ label: params.hasImageContents ? electronMenu.language.copyImageAddress : electronMenu.language.copyLinkAddress, diff --git a/electron/electron.js b/electron/electron.js index 0391530f4..343b1ed98 100644 --- a/electron/electron.js +++ b/electron/electron.js @@ -1,7 +1,21 @@ const fs = require('fs') const os = require("os"); const path = require('path') -const {app, BrowserWindow, ipcMain, dialog, clipboard, nativeImage, shell, Tray, Menu, globalShortcut, Notification, BrowserView, nativeTheme, protocol} = require('electron') +const { + app, + ipcMain, + dialog, + clipboard, + nativeImage, + shell, + globalShortcut, + nativeTheme, + protocol, + Tray, + Menu, + BrowserView, + BrowserWindow +} = require('electron') const {autoUpdater} = require("electron-updater") const loger = require("electron-log"); const electronConf = require('electron-config') @@ -61,7 +75,7 @@ if (!fs.existsSync(cacheDir)) { // 在最开始就注册协议为特权协议 protocol.registerSchemesAsPrivileged([ { - scheme: 'dootask-resources', + scheme: 'local-asset', privileges: { standard: true, secure: true, @@ -75,8 +89,8 @@ protocol.registerSchemesAsPrivileged([ * 创建协议 */ function createProtocol() { - protocol.handle('dootask-resources', async (request) => { - const url = utils.protocolResourcePath(request.url) + protocol.handle('local-asset', async (request) => { + const url = utils.localAssetRestoreRealPath(request.url) if (url.includes('..')) { return new Response('Access Denied', { status: 403 }) diff --git a/electron/utils.js b/electron/utils.js index 082eaf89c..0d15f7e26 100644 --- a/electron/utils.js +++ b/electron/utils.js @@ -608,30 +608,30 @@ const utils = { }, /** - * 是否协议资源 - * @param {string} url + * 是否本地资源路径 + * @param {string} url * @returns {boolean} */ - isProtocolResource(url) { - return url.startsWith('dootask-resources://') + isLocalAssetPath(url) { + return url.startsWith('local-asset://') }, /** - * 协议资源路径 - * @param {string} url + * 本地资源路径还原 + * @param {string} url * @returns {string} */ - protocolResourcePath(url) { - if (!utils.isProtocolResource(url)) { + localAssetRestoreRealPath(url) { + if (!utils.isLocalAssetPath(url)) { return url } - let p0 = url.replace(/^dootask-resources:\/\//, '') + let p0 = url.replace(/^local-asset:\/\//, '') const p1 = path.join(__dirname, '.', p0) if (fs.existsSync(p1)) { return p1 - } + } const p2 = path.join(__dirname, '..', p0) if (fs.existsSync(p2)) { diff --git a/resources/assets/js/components/Replace/Imgs.vue b/resources/assets/js/components/Replace/Imgs.vue index 850cb9c23..5a427299b 100644 --- a/resources/assets/js/components/Replace/Imgs.vue +++ b/resources/assets/js/components/Replace/Imgs.vue @@ -3,7 +3,7 @@