更新electron到 10.1.0
parent
b453a8934f
commit
86478c0268
|
@ -36,7 +36,7 @@
|
||||||
|
|
||||||
所用技术栈:
|
所用技术栈:
|
||||||
|
|
||||||
- Electron 9
|
- Electron 10
|
||||||
- Vue 2
|
- Vue 2
|
||||||
|
|
||||||
已支持的平台:
|
已支持的平台:
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "lx-music-desktop",
|
"name": "lx-music-desktop",
|
||||||
"version": "1.0.1",
|
"version": "1.1.0",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -5301,9 +5301,9 @@
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"caniuse-lite": {
|
"caniuse-lite": {
|
||||||
"version": "1.0.30001112",
|
"version": "1.0.30001119",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001112.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001119.tgz",
|
||||||
"integrity": "sha512-J05RTQlqsatidif/38aN3PGULCLrg8OYQOlJUKbeYVzC2mGZkZLIztwRlB3MtrfLmawUmjFlNJvy/uhwniIe1Q==",
|
"integrity": "sha512-Hpwa4obv7EGP+TjkCh/wVvbtNJewxmtg4yVJBLFnxo35vbPapBr138bUWENkb5j5L9JZJ9RXLn4OrXRG/cecPQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5954,12 +5954,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"clone": {
|
|
||||||
"version": "2.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
|
|
||||||
"integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"clone-deep": {
|
"clone-deep": {
|
||||||
"version": "4.0.1",
|
"version": "4.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
|
||||||
|
@ -7543,9 +7537,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"electron": {
|
"electron": {
|
||||||
"version": "9.2.1",
|
"version": "10.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/electron/-/electron-9.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/electron/-/electron-10.1.0.tgz",
|
||||||
"integrity": "sha512-ZsetaQjXB8+9/EFW1FnfK4ukpkwXCxMEaiKiUZhZ0ZLFlLnFCpe0Bg4vdDf7e4boWGcnlgN1jAJpBw7w0eXuqA==",
|
"integrity": "sha512-DyS6WhQ59+ZXQsI1EkpsYkOXFt0Xbp+mbxPTJS9A7O21r3JDzaTC+1Jxz7g6J+Sbi9Y7UFdRs0tn/vqhHJx2gA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@electron/get": "^1.0.1",
|
"@electron/get": "^1.0.1",
|
||||||
|
@ -7733,9 +7727,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"electron-to-chromium": {
|
"electron-to-chromium": {
|
||||||
"version": "1.3.526",
|
"version": "1.3.554",
|
||||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.526.tgz",
|
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.554.tgz",
|
||||||
"integrity": "sha512-HiroW5ZbGwgT8kCnoEO8qnGjoTPzJxduvV/Vv/wH63eo2N6Zj3xT5fmmaSPAPUM05iN9/5fIEkIg3owTtV6QZg==",
|
"integrity": "sha512-Vtz2dVH5nMtKK4brahmgScwFS8PBnpA4VObYXtlsqN8ZpT9IFelv0Rpflc1+NIILjGVaj6vEiXQbhrs3Pl8O7g==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"electron-updater": {
|
"electron-updater": {
|
||||||
|
@ -11525,6 +11519,12 @@
|
||||||
"integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
|
"integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"klona": {
|
||||||
|
"version": "2.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/klona/-/klona-2.0.3.tgz",
|
||||||
|
"integrity": "sha512-CgPOT3ZadDpXxKcfV56lEQ9OQSZ42Mk26gnozI+uN/k39vzD8toUhRQoqsX0m9Q3eMPEfsLWmtyUpK/yqST4yg==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"last-call-webpack-plugin": {
|
"last-call-webpack-plugin": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz",
|
||||||
|
@ -11614,21 +11614,20 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"less-loader": {
|
"less-loader": {
|
||||||
"version": "6.2.0",
|
"version": "7.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/less-loader/-/less-loader-6.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/less-loader/-/less-loader-7.0.0.tgz",
|
||||||
"integrity": "sha512-Cl5h95/Pz/PWub/tCBgT1oNMFeH1WTD33piG80jn5jr12T4XbxZcjThwNXDQ7AG649WEynuIzO4b0+2Tn9Qolg==",
|
"integrity": "sha512-fAgAaZHQJdX/woSMyNhvJt6bQUhpOtKODfuhk5AqgVPo6FVD3PezwHIZEtNPr4aumYoNQ1KBLnhynGX2XE/Lrg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"clone": "^2.1.2",
|
"klona": "^2.0.3",
|
||||||
"less": "^3.11.3",
|
|
||||||
"loader-utils": "^2.0.0",
|
"loader-utils": "^2.0.0",
|
||||||
"schema-utils": "^2.7.0"
|
"schema-utils": "^2.7.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ajv": {
|
"ajv": {
|
||||||
"version": "6.12.2",
|
"version": "6.12.4",
|
||||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz",
|
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz",
|
||||||
"integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==",
|
"integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"fast-deep-equal": "^3.1.1",
|
"fast-deep-equal": "^3.1.1",
|
||||||
|
@ -12054,9 +12053,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"mini-css-extract-plugin": {
|
"mini-css-extract-plugin": {
|
||||||
"version": "0.10.0",
|
"version": "0.11.0",
|
||||||
"resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.10.0.tgz",
|
"resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.0.tgz",
|
||||||
"integrity": "sha512-QgKgJBjaJhxVPwrLNqqwNS0AGkuQQ31Hp4xGXEK/P7wehEg6qmNtReHKai3zRXqY60wGVWLYcOMJK2b98aGc3A==",
|
"integrity": "sha512-dVWGuWJlQw2lZxsxBI3hOsoxg1k3DruLR0foHQLSkQMfk+qLJbv9dUk8fjmjWQKN9ef2n54ehA2FjClAsQhrWQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"loader-utils": "^1.1.0",
|
"loader-utils": "^1.1.0",
|
||||||
|
|
|
@ -60,7 +60,7 @@
|
||||||
"lint:fix": "eslint --ext .js,.vue -f ./node_modules/eslint-formatter-friendly --fix src"
|
"lint:fix": "eslint --ext .js,.vue -f ./node_modules/eslint-formatter-friendly --fix src"
|
||||||
},
|
},
|
||||||
"browserslist": [
|
"browserslist": [
|
||||||
"Electron 9.2.1"
|
"Electron 10.0.1"
|
||||||
],
|
],
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 12"
|
"node": ">= 12"
|
||||||
|
@ -169,7 +169,6 @@
|
||||||
"babel-loader": "^8.1.0",
|
"babel-loader": "^8.1.0",
|
||||||
"babel-minify-webpack-plugin": "^0.3.1",
|
"babel-minify-webpack-plugin": "^0.3.1",
|
||||||
"babel-preset-minify": "^0.5.1",
|
"babel-preset-minify": "^0.5.1",
|
||||||
"browserslist": "^4.14.0",
|
|
||||||
"cfonts": "^2.8.6",
|
"cfonts": "^2.8.6",
|
||||||
"chalk": "^4.1.0",
|
"chalk": "^4.1.0",
|
||||||
"changelog-parser": "^2.8.0",
|
"changelog-parser": "^2.8.0",
|
||||||
|
@ -178,7 +177,7 @@
|
||||||
"cross-env": "^7.0.2",
|
"cross-env": "^7.0.2",
|
||||||
"css-loader": "^3.6.0",
|
"css-loader": "^3.6.0",
|
||||||
"del": "^5.1.0",
|
"del": "^5.1.0",
|
||||||
"electron": "^9.2.1",
|
"electron": "^10.1.0",
|
||||||
"electron-builder": "^22.8.0",
|
"electron-builder": "^22.8.0",
|
||||||
"electron-debug": "^3.1.0",
|
"electron-debug": "^3.1.0",
|
||||||
"electron-devtools-installer": "^3.1.1",
|
"electron-devtools-installer": "^3.1.1",
|
||||||
|
@ -195,9 +194,9 @@
|
||||||
"friendly-errors-webpack-plugin": "^1.7.0",
|
"friendly-errors-webpack-plugin": "^1.7.0",
|
||||||
"html-webpack-plugin": "^4.3.0",
|
"html-webpack-plugin": "^4.3.0",
|
||||||
"less": "^3.12.2",
|
"less": "^3.12.2",
|
||||||
"less-loader": "^6.2.0",
|
"less-loader": "^7.0.0",
|
||||||
"markdown-it": "^11.0.0",
|
"markdown-it": "^11.0.0",
|
||||||
"mini-css-extract-plugin": "^0.10.0",
|
"mini-css-extract-plugin": "^0.11.0",
|
||||||
"optimize-css-assets-webpack-plugin": "^5.0.3",
|
"optimize-css-assets-webpack-plugin": "^5.0.3",
|
||||||
"postcss-loader": "^3.0.0",
|
"postcss-loader": "^3.0.0",
|
||||||
"postcss-pxtorem": "^5.1.1",
|
"postcss-pxtorem": "^5.1.1",
|
||||||
|
|
|
@ -23,4 +23,4 @@
|
||||||
|
|
||||||
### 其他
|
### 其他
|
||||||
|
|
||||||
- 更新electron到 9.2.1
|
- 更新electron到 10.1.0
|
||||||
|
|
|
@ -43,6 +43,14 @@ const names = {
|
||||||
hide_toggle: 'hide_toggle',
|
hide_toggle: 'hide_toggle',
|
||||||
get_data_path: 'get_data_path',
|
get_data_path: 'get_data_path',
|
||||||
show_dialog: 'show_dialog',
|
show_dialog: 'show_dialog',
|
||||||
|
|
||||||
|
get_setting: 'get_setting',
|
||||||
|
get_playlist: 'get_playlist',
|
||||||
|
save_playlist: 'save_playlist',
|
||||||
|
get_data: 'get_data',
|
||||||
|
set_data: 'set_data',
|
||||||
|
save_data: 'save_data',
|
||||||
|
get_hot_key: 'get_hot_key',
|
||||||
},
|
},
|
||||||
winLyric: {
|
winLyric: {
|
||||||
close: 'close',
|
close: 'close',
|
||||||
|
|
|
@ -188,7 +188,7 @@ exports.initSetting = () => {
|
||||||
// newSetting.controlBtnPosition = 'right'
|
// newSetting.controlBtnPosition = 'right'
|
||||||
electronStore_config.set('version', settingVersion)
|
electronStore_config.set('version', settingVersion)
|
||||||
electronStore_config.set('setting', newSetting)
|
electronStore_config.set('setting', newSetting)
|
||||||
return newSetting
|
return { version: settingVersion, setting: newSetting }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -35,7 +35,7 @@ app.commandLine.appendSwitch('wm-window-animations-disabled')
|
||||||
// https://github.com/electron/electron/issues/18397
|
// https://github.com/electron/electron/issues/18397
|
||||||
// 开发模式下为true时 多次引入native模块会导致渲染进程卡死
|
// 开发模式下为true时 多次引入native模块会导致渲染进程卡死
|
||||||
// https://github.com/electron/electron/issues/22791
|
// https://github.com/electron/electron/issues/22791
|
||||||
app.allowRendererProcessReuse = !isDev
|
// app.allowRendererProcessReuse = !isDev
|
||||||
|
|
||||||
|
|
||||||
app.on('web-contents-created', (event, contents) => {
|
app.on('web-contents-created', (event, contents) => {
|
||||||
|
@ -124,7 +124,9 @@ global.appHotKey = {
|
||||||
}
|
}
|
||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
global.appSetting = initSetting()
|
const info = initSetting()
|
||||||
|
global.appSetting = info.setting
|
||||||
|
global.appSettingVersion = info.version
|
||||||
global.appHotKey.config = initHotKey()
|
global.appHotKey.config = initHotKey()
|
||||||
global.lx_event.common.initSetting()
|
global.lx_event.common.initSetting()
|
||||||
global.lx_event.hotKey.init()
|
global.lx_event.hotKey.init()
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
const { mainWindow: MAIN_WINDOW_EVENT_NAME } = require('../events/_name')
|
const { mainWindow: MAIN_WINDOW_EVENT_NAME } = require('../events/_name')
|
||||||
const { mainOn, NAMES: { mainWindow: ipcMainWindowNames } } = require('../../common/ipc')
|
const { mainOn, NAMES: { mainWindow: ipcMainWindowNames }, mainHandle } = require('../../common/ipc')
|
||||||
|
|
||||||
mainOn(ipcMainWindowNames.set_app_setting, (event, config) => {
|
mainOn(ipcMainWindowNames.set_app_setting, (event, config) => {
|
||||||
if (!config) return
|
if (!config) return
|
||||||
global.lx_event.common.setAppConfig(config, MAIN_WINDOW_EVENT_NAME.name)
|
global.lx_event.common.setAppConfig(config, MAIN_WINDOW_EVENT_NAME.name)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
mainHandle(ipcMainWindowNames.get_setting, async() => ({ setting: global.appSetting, version: global.appSettingVersion }))
|
|
@ -1,7 +1,11 @@
|
||||||
const { mainHandle, NAMES: { mainWindow: ipcMainWindowNames } } = require('../../common/ipc')
|
const { mainHandle, NAMES: { mainWindow: ipcMainWindowNames } } = require('../../common/ipc')
|
||||||
|
|
||||||
|
mainHandle(ipcMainWindowNames.clear_cache, async(event, options) => {
|
||||||
|
if (!global.modules.mainWindow) throw new Error('mainWindow is undefined')
|
||||||
|
return global.modules.mainWindow.webContents.session.clearCache()
|
||||||
|
})
|
||||||
|
|
||||||
mainHandle(ipcMainWindowNames.get_cache_size, async(event, options) => {
|
mainHandle(ipcMainWindowNames.get_cache_size, async(event, options) => {
|
||||||
if (!global.modules.mainWindow) throw new Error('mainWindow is undefined')
|
if (!global.modules.mainWindow) throw new Error('mainWindow is undefined')
|
||||||
return global.modules.mainWindow.webContents.session.getCacheSize()
|
return global.modules.mainWindow.webContents.session.getCacheSize()
|
||||||
})
|
})
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
const { mainHandle, NAMES: { mainWindow: ipcMainWindowNames } } = require('../../common/ipc')
|
|
||||||
|
|
||||||
mainHandle(ipcMainWindowNames.clear_cache, async(event, options) => {
|
|
||||||
if (!global.modules.mainWindow) throw new Error('mainWindow is undefined')
|
|
||||||
return global.modules.mainWindow.webContents.session.clearCache()
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
const Store = require('electron-store')
|
||||||
|
const { mainOn, NAMES: { mainWindow: ipcMainWindowNames }, mainHandle } = require('../../common/ipc')
|
||||||
|
|
||||||
|
|
||||||
|
const electronStore_data = new Store({
|
||||||
|
name: 'data',
|
||||||
|
})
|
||||||
|
|
||||||
|
mainHandle(ipcMainWindowNames.get_data, async(event, path) => electronStore_data.get(path))
|
||||||
|
|
||||||
|
|
||||||
|
mainOn(ipcMainWindowNames.save_data, (event, { path, data }) => electronStore_data.get(path, data))
|
|
@ -1,5 +1,10 @@
|
||||||
const { mainSend, NAMES: { mainWindow: ipcMainWindowNames }, mainOn } = require('../../common/ipc')
|
const Store = require('electron-store')
|
||||||
|
const { mainSend, NAMES: { mainWindow: ipcMainWindowNames }, mainOn, mainHandle } = require('../../common/ipc')
|
||||||
const { mainWindow: MAIN_WINDOW_EVENT_NAME, hotKey: HOT_KEY_EVENT_NAME } = require('../events/_name')
|
const { mainWindow: MAIN_WINDOW_EVENT_NAME, hotKey: HOT_KEY_EVENT_NAME } = require('../events/_name')
|
||||||
|
|
||||||
|
const electronStore_hotKey = new Store({
|
||||||
|
name: 'hotKey',
|
||||||
|
})
|
||||||
// const { registerHotkey, unRegisterHotkey } = require('../modules/hotKey/utils')
|
// const { registerHotkey, unRegisterHotkey } = require('../modules/hotKey/utils')
|
||||||
|
|
||||||
// mainHandle(ipcMainWindowNames.set_hot_key_config, async(event, { action, data }) => {
|
// mainHandle(ipcMainWindowNames.set_hot_key_config, async(event, { action, data }) => {
|
||||||
|
@ -14,6 +19,11 @@ const { mainWindow: MAIN_WINDOW_EVENT_NAME, hotKey: HOT_KEY_EVENT_NAME } = requi
|
||||||
// }
|
// }
|
||||||
// })
|
// })
|
||||||
|
|
||||||
|
mainHandle(ipcMainWindowNames.get_hot_key, async() => ({
|
||||||
|
local: electronStore_hotKey.get('local'),
|
||||||
|
global: electronStore_hotKey.get('global'),
|
||||||
|
}))
|
||||||
|
|
||||||
mainOn(ipcMainWindowNames.quit, () => global.lx_event.mainWindow.quit())
|
mainOn(ipcMainWindowNames.quit, () => global.lx_event.mainWindow.quit())
|
||||||
mainOn(ipcMainWindowNames.min_toggle, () => global.lx_event.mainWindow.toggleMinimize())
|
mainOn(ipcMainWindowNames.min_toggle, () => global.lx_event.mainWindow.toggleMinimize())
|
||||||
mainOn(ipcMainWindowNames.hide_toggle, () => global.lx_event.mainWindow.toggleHide())
|
mainOn(ipcMainWindowNames.hide_toggle, () => global.lx_event.mainWindow.toggleHide())
|
||||||
|
|
|
@ -7,15 +7,16 @@ require('./musicMeta')
|
||||||
require('./selectDir')
|
require('./selectDir')
|
||||||
require('./setWindowSize')
|
require('./setWindowSize')
|
||||||
require('./showSaveDialog')
|
require('./showSaveDialog')
|
||||||
require('./clearCache')
|
require('./cache')
|
||||||
require('./getCacheSize')
|
|
||||||
require('./setIgnoreMouseEvent')
|
require('./setIgnoreMouseEvent')
|
||||||
require('./getEnvParams')
|
require('./getEnvParams')
|
||||||
require('./setAppSetting')
|
require('./appSetting')
|
||||||
require('./setLyricInfo')
|
require('./setLyricInfo')
|
||||||
require('./hotKey')
|
require('./hotKey')
|
||||||
require('./getDataPath')
|
require('./getDataPath')
|
||||||
require('./showDialog')
|
require('./showDialog')
|
||||||
|
require('./playList')
|
||||||
|
require('./data')
|
||||||
|
|
||||||
require('./xm_verify')
|
require('./xm_verify')
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
const Store = require('electron-store')
|
||||||
|
const { mainOn, NAMES: { mainWindow: ipcMainWindowNames }, mainHandle } = require('../../common/ipc')
|
||||||
|
|
||||||
|
|
||||||
|
const electronStore_list = new Store({
|
||||||
|
name: 'playList',
|
||||||
|
})
|
||||||
|
|
||||||
|
mainHandle(ipcMainWindowNames.get_playlist, async(event, isIgnoredError = false) => {
|
||||||
|
let electronStore_list = new Store({
|
||||||
|
name: 'playList',
|
||||||
|
clearInvalidConfig: !isIgnoredError,
|
||||||
|
})
|
||||||
|
|
||||||
|
return {
|
||||||
|
defaultList: electronStore_list.get('defaultList'),
|
||||||
|
loveList: electronStore_list.get('loveList'),
|
||||||
|
userList: electronStore_list.get('userList'),
|
||||||
|
downloadList: electronStore_list.get('downloadList'),
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
mainOn(ipcMainWindowNames.save_playlist, (event, { type, data }) => electronStore_list.set(type, data))
|
|
@ -27,7 +27,7 @@ import { mapMutations, mapGetters, mapActions } from 'vuex'
|
||||||
import { rendererOn, rendererSend, rendererInvoke, NAMES } from '../common/ipc'
|
import { rendererOn, rendererSend, rendererInvoke, NAMES } from '../common/ipc'
|
||||||
import { isLinux } from '../common/utils'
|
import { isLinux } from '../common/utils'
|
||||||
import music from './utils/music'
|
import music from './utils/music'
|
||||||
import { throttle, openUrl, compareVer } from './utils'
|
import { throttle, openUrl, compareVer, getPlayList } from './utils'
|
||||||
import { base as eventBaseName } from './event/names'
|
import { base as eventBaseName } from './event/names'
|
||||||
|
|
||||||
window.ELECTRON_DISABLE_SECURITY_WARNINGS = process.env.ELECTRON_DISABLE_SECURITY_WARNINGS
|
window.ELECTRON_DISABLE_SECURITY_WARNINGS = process.env.ELECTRON_DISABLE_SECURITY_WARNINGS
|
||||||
|
@ -70,19 +70,34 @@ export default {
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.saveDefaultList = throttle(n => {
|
this.saveDefaultList = throttle(n => {
|
||||||
window.electronStore_list.set('defaultList', n)
|
rendererSend(NAMES.mainWindow.save_playlist, {
|
||||||
|
type: 'defaultList',
|
||||||
|
data: n,
|
||||||
|
})
|
||||||
}, 500)
|
}, 500)
|
||||||
this.saveLoveList = throttle(n => {
|
this.saveLoveList = throttle(n => {
|
||||||
window.electronStore_list.set('loveList', n)
|
rendererSend(NAMES.mainWindow.save_playlist, {
|
||||||
|
type: 'loveList',
|
||||||
|
data: n,
|
||||||
|
})
|
||||||
}, 500)
|
}, 500)
|
||||||
this.saveUserList = throttle(n => {
|
this.saveUserList = throttle(n => {
|
||||||
window.electronStore_list.set('userList', n)
|
rendererSend(NAMES.mainWindow.save_playlist, {
|
||||||
|
type: 'userList',
|
||||||
|
data: n,
|
||||||
|
})
|
||||||
}, 500)
|
}, 500)
|
||||||
this.saveDownloadList = throttle(n => {
|
this.saveDownloadList = throttle(n => {
|
||||||
window.electronStore_list.set('downloadList', n)
|
rendererSend(NAMES.mainWindow.save_playlist, {
|
||||||
|
type: 'downloadList',
|
||||||
|
data: n,
|
||||||
|
})
|
||||||
}, 1000)
|
}, 1000)
|
||||||
this.saveSearchHistoryList = throttle(n => {
|
this.saveSearchHistoryList = throttle(n => {
|
||||||
window.electronStore_data.set('searchHistoryList', n)
|
rendererSend(NAMES.mainWindow.set_data, {
|
||||||
|
path: 'searchHistoryList',
|
||||||
|
data: n,
|
||||||
|
})
|
||||||
}, 500)
|
}, 500)
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
@ -155,6 +170,9 @@ export default {
|
||||||
...mapMutations(['setNewVersion', 'setVersionModalVisible', 'setDownloadProgress', 'setSetting', 'setDesktopLyricConfig']),
|
...mapMutations(['setNewVersion', 'setVersionModalVisible', 'setDownloadProgress', 'setSetting', 'setDesktopLyricConfig']),
|
||||||
...mapMutations('list', ['initList']),
|
...mapMutations('list', ['initList']),
|
||||||
...mapMutations('download', ['updateDownloadList']),
|
...mapMutations('download', ['updateDownloadList']),
|
||||||
|
...mapMutations('search', {
|
||||||
|
setSearchHistoryList: 'setHistory',
|
||||||
|
}),
|
||||||
init() {
|
init() {
|
||||||
document.documentElement.style.fontSize = this.windowSizeActive.fontSize
|
document.documentElement.style.fontSize = this.windowSizeActive.fontSize
|
||||||
|
|
||||||
|
@ -243,19 +261,23 @@ export default {
|
||||||
},
|
},
|
||||||
|
|
||||||
initData() { // 初始化数据
|
initData() { // 初始化数据
|
||||||
this.initPlayList() // 初始化播放列表
|
this.initLocalList() // 初始化播放列表
|
||||||
this.initDownloadList() // 初始化下载列表
|
// this.initDownloadList() // 初始化下载列表
|
||||||
|
this.initSearchHistoryList() // 初始化搜索历史列表
|
||||||
},
|
},
|
||||||
initPlayList() {
|
initLocalList() {
|
||||||
let defaultList = window.electronStore_list.get('defaultList') || this.defaultList
|
getPlayList().then(({ defaultList, loveList, userList, downloadList }) => {
|
||||||
let loveList = window.electronStore_list.get('loveList') || this.loveList
|
if (!defaultList) defaultList = this.defaultList
|
||||||
let userList = window.electronStore_list.get('userList') || this.userList
|
if (!loveList) loveList = this.loveList
|
||||||
if (!defaultList.list) defaultList.list = []
|
if (!userList) userList = this.userList
|
||||||
if (!loveList.list) loveList.list = []
|
|
||||||
this.initList({ defaultList, loveList, userList })
|
if (!defaultList.list) defaultList.list = []
|
||||||
|
if (!loveList.list) loveList.list = []
|
||||||
|
this.initList({ defaultList, loveList, userList })
|
||||||
|
this.initDownloadList(downloadList) // 初始化下载列表
|
||||||
|
})
|
||||||
},
|
},
|
||||||
initDownloadList() {
|
initDownloadList(downloadList) {
|
||||||
let downloadList = window.electronStore_list.get('downloadList')
|
|
||||||
if (downloadList) {
|
if (downloadList) {
|
||||||
downloadList.forEach(item => {
|
downloadList.forEach(item => {
|
||||||
if (item.status == this.downloadStatus.RUN || item.status == this.downloadStatus.WAITING) {
|
if (item.status == this.downloadStatus.RUN || item.status == this.downloadStatus.WAITING) {
|
||||||
|
@ -266,6 +288,16 @@ export default {
|
||||||
this.updateDownloadList(downloadList)
|
this.updateDownloadList(downloadList)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
initSearchHistoryList() {
|
||||||
|
rendererInvoke(NAMES.mainWindow.get_data, 'searchHistoryList').then(historyList => {
|
||||||
|
if (historyList == null) {
|
||||||
|
historyList = []
|
||||||
|
rendererInvoke(NAMES.mainWindow.set_data, { path: 'searchHistoryList', data: historyList })
|
||||||
|
} else {
|
||||||
|
this.setSearchHistoryList(historyList)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
showUpdateModal() {
|
showUpdateModal() {
|
||||||
(this.version.newVersion && this.version.newVersion.history
|
(this.version.newVersion && this.version.newVersion.history
|
||||||
? Promise.resolve(this.version.newVersion)
|
? Promise.resolve(this.version.newVersion)
|
||||||
|
|
|
@ -1,21 +1,22 @@
|
||||||
import Vue from 'vue'
|
import Vue from 'vue'
|
||||||
import keyBind from '../utils/keyBind'
|
import keyBind from '../utils/keyBind'
|
||||||
import { rendererOn, rendererSend, NAMES } from '../../common/ipc'
|
import { rendererOn, rendererSend, NAMES, rendererInvoke } from '../../common/ipc'
|
||||||
import { base as baseName } from './names'
|
import { base as baseName } from './names'
|
||||||
import Store from 'electron-store'
|
|
||||||
import { common as hotKeyNamesCommon } from '../../common/hotKey'
|
import { common as hotKeyNamesCommon } from '../../common/hotKey'
|
||||||
|
|
||||||
const eventHub = window.eventHub = new Vue()
|
const eventHub = window.eventHub = new Vue()
|
||||||
|
|
||||||
const electronStore_hotKey = window.electronStore_hotKey = new Store({
|
|
||||||
name: 'hotKey',
|
|
||||||
})
|
|
||||||
|
|
||||||
window.isEditingHotKey = false
|
window.isEditingHotKey = false
|
||||||
const appHotKeyConfig = window.appHotKeyConfig = {
|
let appHotKeyConfig = {
|
||||||
local: electronStore_hotKey.get('local'),
|
local: {},
|
||||||
global: electronStore_hotKey.get('global'),
|
global: {},
|
||||||
}
|
}
|
||||||
|
rendererInvoke(NAMES.mainWindow.get_hot_key).then(({ local, global }) => {
|
||||||
|
appHotKeyConfig = window.appHotKeyConfig = {
|
||||||
|
local,
|
||||||
|
global,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
eventHub.$on(baseName.bindKey, () => {
|
eventHub.$on(baseName.bindKey, () => {
|
||||||
keyBind.bindKey((key, type, event, keys) => {
|
keyBind.bindKey((key, type, event, keys) => {
|
||||||
|
|
|
@ -16,14 +16,45 @@ import store from './store'
|
||||||
|
|
||||||
import '../common/error'
|
import '../common/error'
|
||||||
|
|
||||||
|
import { getSetting } from './utils'
|
||||||
|
import languageList from '@/lang/languages.json'
|
||||||
|
import { rendererSend, NAMES } from '../common/ipc'
|
||||||
|
|
||||||
sync(store, router)
|
sync(store, router)
|
||||||
|
|
||||||
Vue.config.productionTip = false
|
Vue.config.productionTip = false
|
||||||
|
|
||||||
new Vue({
|
|
||||||
router,
|
getSetting().then(({ setting, version }) => {
|
||||||
store,
|
// Set language automatically
|
||||||
i18n,
|
if (!window.i18n.availableLocales.includes(setting.langId)) {
|
||||||
el: '#root',
|
let langId = null
|
||||||
render: h => h(App),
|
let locale = window.navigator.language.toLocaleLowerCase()
|
||||||
|
if (window.i18n.availableLocales.includes(locale)) {
|
||||||
|
langId = locale
|
||||||
|
} else {
|
||||||
|
for (const lang of languageList) {
|
||||||
|
if (lang.alternate == locale) {
|
||||||
|
langId = lang.locale
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (langId == null) langId = 'en-us'
|
||||||
|
}
|
||||||
|
setting.langId = langId
|
||||||
|
rendererSend(NAMES.mainWindow.set_app_setting, setting)
|
||||||
|
console.log('Set lang', setting.langId)
|
||||||
|
}
|
||||||
|
window.i18n.locale = setting.langId
|
||||||
|
store.commit('setSetting', setting)
|
||||||
|
store.commit('setSettingVersion', version)
|
||||||
|
|
||||||
|
new Vue({
|
||||||
|
router,
|
||||||
|
store,
|
||||||
|
i18n,
|
||||||
|
el: '#root',
|
||||||
|
render: h => h(App),
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -1,15 +1,5 @@
|
||||||
import Store from 'electron-store'
|
|
||||||
import music from '../../utils/music'
|
import music from '../../utils/music'
|
||||||
|
|
||||||
const electronStore_data = window.electronStore_data = new Store({
|
|
||||||
name: 'data',
|
|
||||||
})
|
|
||||||
let historyList = electronStore_data.get('searchHistoryList')
|
|
||||||
if (historyList == null) {
|
|
||||||
historyList = []
|
|
||||||
electronStore_data.set('searchHistoryList', historyList)
|
|
||||||
}
|
|
||||||
|
|
||||||
const sources = []
|
const sources = []
|
||||||
const sourceList = {}
|
const sourceList = {}
|
||||||
const sourceMaxPage = {}
|
const sourceMaxPage = {}
|
||||||
|
@ -103,7 +93,7 @@ const state = {
|
||||||
allPage: 1,
|
allPage: 1,
|
||||||
total: 0,
|
total: 0,
|
||||||
sourceMaxPage,
|
sourceMaxPage,
|
||||||
historyList,
|
historyList: [],
|
||||||
}
|
}
|
||||||
|
|
||||||
// getters
|
// getters
|
||||||
|
@ -211,6 +201,9 @@ const mutations = {
|
||||||
clearHistory(state) {
|
clearHistory(state) {
|
||||||
state.historyList = []
|
state.historyList = []
|
||||||
},
|
},
|
||||||
|
setHistory(state, list) {
|
||||||
|
state.historyList = list
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
|
|
@ -9,12 +9,12 @@ export default {
|
||||||
setSetting(state, val) {
|
setSetting(state, val) {
|
||||||
state.setting = val
|
state.setting = val
|
||||||
},
|
},
|
||||||
setAgreePact(state) {
|
|
||||||
state.setting.isAgreePact = true
|
|
||||||
},
|
|
||||||
setSettingVersion(state, val) {
|
setSettingVersion(state, val) {
|
||||||
state.settingVersion = val
|
state.settingVersion = val
|
||||||
},
|
},
|
||||||
|
setAgreePact(state) {
|
||||||
|
state.setting.isAgreePact = true
|
||||||
|
},
|
||||||
setLeaderboard(state, { tabId, source }) {
|
setLeaderboard(state, { tabId, source }) {
|
||||||
if (tabId != null) state.setting.leaderboard.tabId = tabId
|
if (tabId != null) state.setting.leaderboard.tabId = tabId
|
||||||
if (source != null) state.setting.leaderboard.source = source
|
if (source != null) state.setting.leaderboard.source = source
|
||||||
|
|
|
@ -1,67 +1,9 @@
|
||||||
|
|
||||||
// const isDev = process.env.NODE_ENV === 'development'
|
// const isDev = process.env.NODE_ENV === 'development'
|
||||||
import Store from 'electron-store'
|
|
||||||
import { windowSizeList } from '../../common/config'
|
import { windowSizeList } from '../../common/config'
|
||||||
import { version } from '../../../package.json'
|
import { version } from '../../../package.json'
|
||||||
import { rendererSend, rendererInvoke, NAMES } from '../../common/ipc'
|
|
||||||
import languageList from '@/lang/languages.json'
|
|
||||||
import path from 'path'
|
|
||||||
import { openDirInExplorer } from '../utils'
|
|
||||||
|
|
||||||
|
|
||||||
const electronStore_config = window.electronStore_config = new Store({
|
|
||||||
name: 'config',
|
|
||||||
})
|
|
||||||
let setting = electronStore_config.get('setting')
|
|
||||||
let settingVersion = electronStore_config.get('version')
|
|
||||||
|
|
||||||
process.versions.app = version
|
process.versions.app = version
|
||||||
|
|
||||||
// Set language automatically
|
|
||||||
if (!window.i18n.availableLocales.includes(setting.langId)) {
|
|
||||||
let langId = null
|
|
||||||
let locale = window.navigator.language.toLocaleLowerCase()
|
|
||||||
if (window.i18n.availableLocales.includes(locale)) {
|
|
||||||
langId = locale
|
|
||||||
} else {
|
|
||||||
for (const lang of languageList) {
|
|
||||||
if (lang.alternate == locale) {
|
|
||||||
langId = lang.locale
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (langId == null) langId = 'en-us'
|
|
||||||
}
|
|
||||||
setting.langId = langId
|
|
||||||
electronStore_config.set('setting', setting)
|
|
||||||
rendererSend(NAMES.mainWindow.set_app_setting, setting)
|
|
||||||
console.log('Set lang', setting.langId)
|
|
||||||
}
|
|
||||||
|
|
||||||
window.i18n.locale = setting.langId
|
|
||||||
|
|
||||||
try {
|
|
||||||
window.electronStore_list = new Store({
|
|
||||||
name: 'playList',
|
|
||||||
clearInvalidConfig: false,
|
|
||||||
})
|
|
||||||
} catch (error) {
|
|
||||||
rendererInvoke(NAMES.mainWindow.get_data_path).then(dataPath => {
|
|
||||||
let filePath = path.join(dataPath, 'playList.json.bak')
|
|
||||||
rendererInvoke(NAMES.mainWindow.show_dialog, {
|
|
||||||
type: 'error',
|
|
||||||
message: window.i18n.t('store.state.load_list_file_error_title'),
|
|
||||||
detail: window.i18n.t('store.state.load_list_file_error_detail', {
|
|
||||||
path: filePath,
|
|
||||||
detail: error.message,
|
|
||||||
}),
|
|
||||||
}).then(() => openDirInExplorer(filePath))
|
|
||||||
})
|
|
||||||
window.electronStore_list = new Store({
|
|
||||||
name: 'playList',
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
themes: [
|
themes: [
|
||||||
|
@ -144,8 +86,8 @@ export default {
|
||||||
downloadProgress: null,
|
downloadProgress: null,
|
||||||
},
|
},
|
||||||
userInfo: null,
|
userInfo: null,
|
||||||
setting,
|
setting: null,
|
||||||
settingVersion,
|
settingVersion: null,
|
||||||
|
|
||||||
windowSizeList,
|
windowSizeList,
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import fs from 'fs'
|
import fs from 'fs'
|
||||||
|
import path from 'path'
|
||||||
import { shell, clipboard } from 'electron'
|
import { shell, clipboard } from 'electron'
|
||||||
import crypto from 'crypto'
|
import crypto from 'crypto'
|
||||||
import { rendererSend, rendererInvoke, NAMES } from '../../common/ipc'
|
import { rendererSend, rendererInvoke, NAMES } from '../../common/ipc'
|
||||||
|
@ -341,3 +342,22 @@ export const getProxyInfo = () => window.globalObj.proxy.enable
|
||||||
|
|
||||||
|
|
||||||
export const assertApiSupport = source => window.globalObj.qualityList[source] != undefined
|
export const assertApiSupport = source => window.globalObj.qualityList[source] != undefined
|
||||||
|
|
||||||
|
export const getSetting = () => rendererInvoke(NAMES.mainWindow.get_setting)
|
||||||
|
export const saveSetting = () => rendererInvoke(NAMES.mainWindow.set_app_setting)
|
||||||
|
|
||||||
|
export const getPlayList = () => rendererInvoke(NAMES.mainWindow.get_playlist).catch(error => {
|
||||||
|
rendererInvoke(NAMES.mainWindow.get_data_path).then(dataPath => {
|
||||||
|
let filePath = path.join(dataPath, 'playList.json.bak')
|
||||||
|
rendererInvoke(NAMES.mainWindow.show_dialog, {
|
||||||
|
type: 'error',
|
||||||
|
message: window.i18n.t('store.state.load_list_file_error_title'),
|
||||||
|
detail: window.i18n.t('store.state.load_list_file_error_detail', {
|
||||||
|
path: filePath,
|
||||||
|
detail: error.message,
|
||||||
|
}),
|
||||||
|
}).then(() => openDirInExplorer(filePath))
|
||||||
|
})
|
||||||
|
return rendererInvoke(NAMES.mainWindow.get_playlist, true)
|
||||||
|
})
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue