更新electron到 10.1.0

pull/389/head
lyswhut 2020-08-29 14:44:37 +08:00
parent b453a8934f
commit 86478c0268
21 changed files with 228 additions and 157 deletions

View File

@ -36,7 +36,7 @@
所用技术栈: 所用技术栈:
- Electron 9 - Electron 10
- Vue 2 - Vue 2
已支持的平台: 已支持的平台:

53
package-lock.json generated
View File

@ -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",

View File

@ -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",

View File

@ -23,4 +23,4 @@
### 其他 ### 其他
- 更新electron到 9.2.1 - 更新electron到 10.1.0

View File

@ -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',

View File

@ -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 }
} }
/** /**

View File

@ -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()

View File

@ -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 }))

View File

@ -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()
}) })

View File

@ -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()
})

View File

@ -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))

View File

@ -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())

View File

@ -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')

View File

@ -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))

View File

@ -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)

View File

@ -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) => {

View File

@ -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),
})
}) })

View File

@ -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 {

View File

@ -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

View File

@ -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,
} }

View File

@ -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)
})