From 11d3754c08cf1b5b25d5946811ad701b32f8905d Mon Sep 17 00:00:00 2001 From: lyswhut Date: Fri, 4 Nov 2022 20:27:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=84=E7=90=86=E8=B7=AF=E5=BE=84=E4=B8=AD?= =?UTF-8?q?=E5=AD=98=E5=9C=A8=E7=99=BE=E5=88=86=E5=8F=B7=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 4 ++-- package.json | 2 +- src/common/utils/common.ts | 5 +++++ src/common/utils/index.ts | 5 ----- src/main/app.ts | 6 +++--- src/main/modules/userApi/main.ts | 8 ++++---- src/main/modules/winLyric/main.ts | 4 ++-- src/main/modules/winMain/main.ts | 2 +- src/main/utils/index.ts | 4 ++-- src/renderer/core/music/local.ts | 3 ++- src/renderer/store/utils.ts | 4 ++-- .../Setting/components/ThemeEditModal/index.vue | 17 +++++++++++------ 12 files changed, 35 insertions(+), 29 deletions(-) diff --git a/package-lock.json b/package-lock.json index 97c9d56b..bf84c669 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "lx-music-desktop", - "version": "2.0.0-beta.3", + "version": "2.0.0-beta.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "lx-music-desktop", - "version": "2.0.0-beta.3", + "version": "2.0.0-beta.4", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { diff --git a/package.json b/package.json index 86c48835..576d1c47 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "lx-music-desktop", - "version": "2.0.0-beta.3", + "version": "2.0.0-beta.4", "description": "一个免费的音乐查找助手", "main": "./dist/main.js", "productName": "lx-music-desktop", diff --git a/src/common/utils/common.ts b/src/common/utils/common.ts index 7aaa8b3a..000e99f8 100644 --- a/src/common/utils/common.ts +++ b/src/common/utils/common.ts @@ -175,3 +175,8 @@ export const sortInsert = (arr: Array<{ num: number, data: any }>, data: { num: arr.splice(left, 0, data) } + +export const encodePath = (path: string) => { + // https://github.com/lyswhut/lx-music-desktop/issues/963 + return path.replaceAll('%', '%25') +} diff --git a/src/common/utils/index.ts b/src/common/utils/index.ts index 4aa07e6b..b2d17f9d 100644 --- a/src/common/utils/index.ts +++ b/src/common/utils/index.ts @@ -27,11 +27,6 @@ export function compareVer(currentVer: string, targetVer: string): -1 | 0 | 1 { return 0 } -export const encodePath = (path: string) => { - // https://github.com/lyswhut/lx-music-desktop/issues/963 - return path.replaceAll('%', '%25') -} - export { log, diff --git a/src/main/app.ts b/src/main/app.ts index 89264cd3..380d77e7 100644 --- a/src/main/app.ts +++ b/src/main/app.ts @@ -7,7 +7,7 @@ import { navigationUrlWhiteList } from '@common/config' import defaultSetting from '@common/defaultSetting' import { closeWindow, isExistWindow as isExistMainWindow, showWindow as showMainWindow } from './modules/winMain' import { createAppEvent, createListEvent } from '@main/event' -import { encodePath, isMac, log } from '@common/utils' +import { isMac, log } from '@common/utils' import createWorkers from './worker' import { migrateDBData } from './utils/migrate' @@ -84,8 +84,8 @@ export const setUserDataPath = () => { } const userDataPath = app.getPath('userData') - global.lxDataPath = join(encodePath(userDataPath.replaceAll('\\', '/')), 'LxDatas') - global.lxOldDataPath = encodePath(userDataPath.replaceAll('\\', '/')) + global.lxOldDataPath = userDataPath + global.lxDataPath = join(userDataPath, 'LxDatas') if (!existsSync(global.lxDataPath)) mkdirSync(global.lxDataPath) } diff --git a/src/main/modules/userApi/main.ts b/src/main/modules/userApi/main.ts index 60d3d79c..f4747d19 100644 --- a/src/main/modules/userApi/main.ts +++ b/src/main/modules/userApi/main.ts @@ -3,7 +3,7 @@ import { BrowserWindow } from 'electron' import fs from 'fs' import { join } from 'path' import { openDevTools as handleOpenDevTools } from '@main/utils' -import { encodePath, isWin } from '@common/utils' +import { encodePath } from '@common/utils' let browserWindow: Electron.BrowserWindow | null = null @@ -27,14 +27,14 @@ const winEvent = () => { export const createWindow = async(userApi: LX.UserApi.UserApiInfo) => { await closeWindow() - if (!dir) dir = global.isDev ? webpackUserApiPath : join(encodePath(isWin ? __dirname.replaceAll('\\', '/') : __dirname), 'userApi') + if (!dir) dir = global.isDev ? webpackUserApiPath : join(encodePath(__dirname), 'userApi') if (!html) { html = await fs.promises.readFile(join(dir, 'renderer/user-api.html'), 'utf8') } const preloadUrl = global.isDev - ? `${join(encodePath(isWin ? __dirname.replaceAll('\\', '/') : __dirname), '../dist/user-api-preload.js')}` - : `${join(encodePath(isWin ? __dirname.replaceAll('\\', '/') : __dirname), 'user-api-preload.js')}` + ? `${join(encodePath(__dirname), '../dist/user-api-preload.js')}` + : `${join(encodePath(__dirname), 'user-api-preload.js')}` // console.log(preloadUrl) /** diff --git a/src/main/modules/winLyric/main.ts b/src/main/modules/winLyric/main.ts index e69441ac..d5c25ff4 100644 --- a/src/main/modules/winLyric/main.ts +++ b/src/main/modules/winLyric/main.ts @@ -1,6 +1,6 @@ import { join } from 'path' import { BrowserWindow } from 'electron' -import { debounce, encodePath, isLinux, isWin } from '@common/utils' +import { debounce, encodePath, isLinux } from '@common/utils' import { getLyricWindowBounds } from './utils' import { mainSend } from '@common/mainIpc' @@ -133,7 +133,7 @@ export const createWindow = () => { }, }) - const winURL = global.isDev ? 'http://localhost:9081/lyric.html' : `file://${join(encodePath(isWin ? __dirname.replaceAll('\\', '/') : __dirname), 'lyric.html')}` + const winURL = global.isDev ? 'http://localhost:9081/lyric.html' : `file://${join(encodePath(__dirname), 'lyric.html')}` void browserWindow.loadURL(winURL + `?dark=${shouldUseDarkColors}&theme=${encodeURIComponent(JSON.stringify(theme))}`) winEvent() diff --git a/src/main/modules/winMain/main.ts b/src/main/modules/winMain/main.ts index 748f13ef..e10bd246 100644 --- a/src/main/modules/winMain/main.ts +++ b/src/main/modules/winMain/main.ts @@ -93,7 +93,7 @@ export const createWindow = () => { } browserWindow = new BrowserWindow(options) - const winURL = global.isDev ? 'http://localhost:9080' : `file://${join(encodePath(isWin ? __dirname.replaceAll('\\', '/') : __dirname), 'index.html')}` + const winURL = global.isDev ? 'http://localhost:9080' : `file://${join(encodePath(__dirname), 'index.html')}` void browserWindow.loadURL(winURL + `?dt=${!!global.envParams.cmdParams.dt}&dark=${shouldUseDarkColors}&theme=${encodeURIComponent(JSON.stringify(theme))}`) winEvent() diff --git a/src/main/utils/index.ts b/src/main/utils/index.ts index 2d3796c5..0b2d975c 100644 --- a/src/main/utils/index.ts +++ b/src/main/utils/index.ts @@ -1,4 +1,4 @@ -import { isUrl, throttle } from '@common/utils' +import { encodePath, isUrl, throttle } from '@common/utils' import migrateSetting from '@common/utils/migrateSetting' import getStore from '@main/utils/store' import { STORE_NAMES, URL_SCHEME_RXP } from '@common/constants' @@ -250,7 +250,7 @@ export const getTheme = () => { theme.config.extInfo['--background-image'] = isUrl(theme.config.extInfo['--background-image']) ? `url(${theme.config.extInfo['--background-image']})` - : `url(file:///${joinPath(global.lxDataPath, 'theme_images', theme.config.extInfo['--background-image']).replaceAll('\\', '/')})` + : `url(file:///${encodePath(joinPath(global.lxDataPath, 'theme_images', theme.config.extInfo['--background-image']).replaceAll('\\', '/'))})` } } else { themeId = global.lx.appSetting['theme.id'] == 'auto' && shouldUseDarkColors ? 'black' : 'green' diff --git a/src/renderer/core/music/local.ts b/src/renderer/core/music/local.ts index 8e30bcb0..59325c99 100644 --- a/src/renderer/core/music/local.ts +++ b/src/renderer/core/music/local.ts @@ -1,3 +1,4 @@ +import { encodePath } from '@common/utils/common' import { updateListMusics } from '@renderer/store/list/action' import { saveLyric, saveMusicUrl } from '@renderer/utils/ipc' import { getLocalFilePath } from '@renderer/utils/music' @@ -19,7 +20,7 @@ export const getMusicUrl = async({ musicInfo, isRefresh, onToggleSource = () => }): Promise => { if (!isRefresh) { const path = await getLocalFilePath(musicInfo) - if (path) return path + if (path) return encodePath(path) } onToggleSource() const otherSource = await getOtherSource(musicInfo) diff --git a/src/renderer/store/utils.ts b/src/renderer/store/utils.ts index 808b7eff..e5da2aac 100644 --- a/src/renderer/store/utils.ts +++ b/src/renderer/store/utils.ts @@ -6,7 +6,7 @@ // return listId == 'download' ? downloadList : getListFromState(listId) // } import { commonColorNames, commonDarkColorValues, commonLightColorValues } from '@common/config' -import { isUrl } from '@common/utils/common' +import { encodePath, isUrl } from '@common/utils/common' import { joinPath } from '@common/utils/nodejs' import { markRaw, shallowReactive } from '@common/utils/vueTools' import { getThemes as getTheme } from '@renderer/utils/ipc' @@ -19,7 +19,7 @@ export const assertApiSupport = (source: LX.Source): boolean => { export const buildBgUrl = (originUrl: string, dataPath: string): string => { return isUrl(originUrl) ? `url(${originUrl})` - : `url(file:///${joinPath(dataPath, originUrl).replaceAll('\\', '/')})` + : `url(file:///${encodePath(joinPath(dataPath, originUrl).replaceAll('\\', '/'))})` } export const getThemes = (callback: (themeInfo: LX.ThemeInfo) => void) => { diff --git a/src/renderer/views/Setting/components/ThemeEditModal/index.vue b/src/renderer/views/Setting/components/ThemeEditModal/index.vue index 07753b67..8cac5735 100644 --- a/src/renderer/views/Setting/components/ThemeEditModal/index.vue +++ b/src/renderer/views/Setting/components/ThemeEditModal/index.vue @@ -120,7 +120,7 @@ import { joinPath, extname, copyFile, checkPath, createDir, removeFile, moveFile, basename } from '@common/utils/nodejs' import { nextTick, ref, watch } from '@common/utils/vueTools' import { applyTheme, buildThemeColors, getThemes, copyTheme } from '@renderer/store/utils' -import { isUrl } from '@common/utils/common' +import { isUrl, encodePath } from '@common/utils/common' // import { appSetting, updateSetting } from '@renderer/store/setting' // import { applyTheme, getThemes } from '@renderer/store/utils' import { createThemeColors } from '@common/theme/utils' @@ -158,6 +158,7 @@ export default { const isDark = ref(false) const preview = ref(false) const bgImg = ref('') + let bgImgRaw = '' let originBgName = '' let currentBgPath = '' @@ -243,11 +244,13 @@ export default { currentBgPath = '' if (theme.config.extInfo['--background-image'] == 'none') { bgImg.value = '' + bgImgRaw = '' originBgName = '' } else { - bgImg.value = isUrl(theme.config.extInfo['--background-image']) + bgImgRaw = isUrl(theme.config.extInfo['--background-image']) ? theme.config.extInfo['--background-image'] : joinPath(themeInfo.dataPath, theme.config.extInfo['--background-image']) + bgImg.value = encodePath(bgImgRaw) originBgName = theme.config.extInfo['--background-image'] } appBgColorOrigin = theme.config.extInfo['--color-app-background'] @@ -372,7 +375,8 @@ export default { const bgPath = joinPath(tempDir, fileName) if (!await checkPath(tempDir)) await createDir(tempDir) await copyFile(path, bgPath) - currentBgPath = bgImg.value = bgPath + currentBgPath = bgImgRaw = bgPath + bgImg.value = encodePath(bgImgRaw) theme.config.extInfo['--background-image'] = 'temp/' + fileName createPreview() @@ -383,6 +387,7 @@ export default { currentBgPath = '' } bgImg.value = '' + bgImgRaw = '' theme.config.extInfo['--background-image'] = 'none' createPreview() } @@ -474,9 +479,9 @@ export default { const name = basename(currentBgPath) await moveFile(currentBgPath, joinPath(themeInfo.dataPath, name)) theme.config.extInfo['--background-image'] = name - } else if (bgImg.value) { - const fileName = `${theme.id}_${Date.now()}${extname(bgImg.value)}` - await copyFile(bgImg.value, joinPath(themeInfo.dataPath, fileName)) + } else if (bgImgRaw) { + const fileName = `${theme.id}_${Date.now()}${extname(bgImgRaw)}` + await copyFile(bgImgRaw, joinPath(themeInfo.dataPath, fileName)) theme.config.extInfo['--background-image'] = fileName } }