将软件设置与播放列表分离存储成两个文件
parent
73321829ae
commit
a50ecff189
|
@ -1,3 +1,8 @@
|
||||||
### 修复
|
### 修复
|
||||||
|
|
||||||
- 修复更新弹窗底部文字颜色没有适配当前主题颜色的问题
|
- 修复更新弹窗底部文字颜色没有适配当前主题颜色的问题
|
||||||
|
- 修复导入设置窗口大小、代理设置不立即生效的问题
|
||||||
|
|
||||||
|
### 其他
|
||||||
|
|
||||||
|
- 将软件设置与播放列表分离存储成两个文件
|
||||||
|
|
|
@ -44,7 +44,7 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapGetters(['electronStore', 'setting', 'theme', 'version']),
|
...mapGetters(['setting', 'theme', 'version']),
|
||||||
...mapGetters('list', ['defaultList', 'loveList']),
|
...mapGetters('list', ['defaultList', 'loveList']),
|
||||||
...mapGetters('download', {
|
...mapGetters('download', {
|
||||||
downloadList: 'list',
|
downloadList: 'list',
|
||||||
|
@ -53,16 +53,16 @@ export default {
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.saveSetting = throttle(n => {
|
this.saveSetting = throttle(n => {
|
||||||
this.electronStore.set('setting', n)
|
window.electronStore_config.set('setting', n)
|
||||||
})
|
})
|
||||||
this.saveDefaultList = throttle(n => {
|
this.saveDefaultList = throttle(n => {
|
||||||
this.electronStore.set('list.defaultList', n)
|
window.electronStore_list.set('defaultList', n)
|
||||||
}, 500)
|
}, 500)
|
||||||
this.saveLoveList = throttle(n => {
|
this.saveLoveList = throttle(n => {
|
||||||
this.electronStore.set('list.loveList', n)
|
window.electronStore_list.set('loveList', n)
|
||||||
}, 500)
|
}, 500)
|
||||||
this.saveDownloadList = throttle(n => {
|
this.saveDownloadList = throttle(n => {
|
||||||
this.electronStore.set('download.list', n)
|
window.electronStore_list.set('downloadList', n)
|
||||||
}, 1000)
|
}, 1000)
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
@ -188,12 +188,12 @@ export default {
|
||||||
this.initDownloadList() // 初始化下载列表
|
this.initDownloadList() // 初始化下载列表
|
||||||
},
|
},
|
||||||
initPlayList() {
|
initPlayList() {
|
||||||
let defaultList = this.electronStore.get('list.defaultList')
|
let defaultList = window.electronStore_list.get('defaultList')
|
||||||
let loveList = this.electronStore.get('list.loveList')
|
let loveList = window.electronStore_list.get('loveList')
|
||||||
this.initList({ defaultList, loveList })
|
this.initList({ defaultList, loveList })
|
||||||
},
|
},
|
||||||
initDownloadList() {
|
initDownloadList() {
|
||||||
let downloadList = this.electronStore.get('download.list')
|
let downloadList = window.electronStore_list.get('download.list')
|
||||||
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) {
|
||||||
|
@ -218,7 +218,7 @@ export default {
|
||||||
this.setNewVersion(result)
|
this.setNewVersion(result)
|
||||||
return result
|
return result
|
||||||
}).then(result => {
|
}).then(result => {
|
||||||
if (result.version === this.version.version) return
|
if (result.version === this.version.version || result.version === this.setting.ignoreVersion) return
|
||||||
// console.log(this.version)
|
// console.log(this.version)
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.setVersionModalVisible({ isShow: true })
|
this.setVersionModalVisible({ isShow: true })
|
||||||
|
|
|
@ -25,8 +25,8 @@ export default {
|
||||||
setting(state) {
|
setting(state) {
|
||||||
return state.setting
|
return state.setting
|
||||||
},
|
},
|
||||||
electronStore(state) {
|
settingVersion(state) {
|
||||||
return state.electronStore
|
return state.settingVersion
|
||||||
},
|
},
|
||||||
version(state) {
|
version(state) {
|
||||||
return state.version
|
return state.version
|
||||||
|
|
|
@ -9,6 +9,9 @@ export default {
|
||||||
setSetting(state, val) {
|
setSetting(state, val) {
|
||||||
state.setting = val
|
state.setting = val
|
||||||
},
|
},
|
||||||
|
setSettingVersion(state, val) {
|
||||||
|
state.settingVersion = val
|
||||||
|
},
|
||||||
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
|
||||||
|
|
|
@ -4,9 +4,24 @@ import Store from 'electron-store'
|
||||||
import { updateSetting } from '../utils'
|
import { updateSetting } from '../utils'
|
||||||
import { windowSizeList } from '../../common/config'
|
import { windowSizeList } from '../../common/config'
|
||||||
import { version } from '../../../package.json'
|
import { version } from '../../../package.json'
|
||||||
let electronStore = new Store()
|
const electronStore_list = window.electronStore_list = new Store({
|
||||||
const setting = updateSetting(electronStore.get('setting'))
|
name: 'playList',
|
||||||
electronStore.set('setting', setting)
|
})
|
||||||
|
const electronStore_config = window.electronStore_config = new Store({
|
||||||
|
name: 'config',
|
||||||
|
})
|
||||||
|
if (!electronStore_config.get('version') && electronStore_config.get('setting')) { // 迁移配置
|
||||||
|
electronStore_list.set('defaultList', electronStore_config.get('list.defaultList'))
|
||||||
|
electronStore_list.set('loveList', electronStore_config.get('list.loveList'))
|
||||||
|
electronStore_list.set('downloadList', electronStore_config.get('download.list'))
|
||||||
|
electronStore_config.set('version', electronStore_config.get('setting.version'))
|
||||||
|
electronStore_config.delete('setting.version')
|
||||||
|
electronStore_config.delete('list')
|
||||||
|
electronStore_config.delete('download')
|
||||||
|
}
|
||||||
|
const { version: settingVersion, setting } = updateSetting(electronStore_config.get('setting'), electronStore_config.get('version'))
|
||||||
|
electronStore_config.set('version', settingVersion)
|
||||||
|
electronStore_config.set('setting', setting)
|
||||||
process.versions.app = version
|
process.versions.app = version
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
@ -70,6 +85,7 @@ export default {
|
||||||
},
|
},
|
||||||
userInfo: null,
|
userInfo: null,
|
||||||
setting,
|
setting,
|
||||||
electronStore,
|
settingVersion,
|
||||||
|
|
||||||
windowSizeList,
|
windowSizeList,
|
||||||
}
|
}
|
||||||
|
|
|
@ -176,10 +176,15 @@ export const isChildren = (parent, children) => {
|
||||||
* 升级设置
|
* 升级设置
|
||||||
* @param {*} setting
|
* @param {*} setting
|
||||||
*/
|
*/
|
||||||
export const updateSetting = setting => {
|
export const updateSetting = (setting, version) => {
|
||||||
const defaultVersion = '1.0.14'
|
const defaultVersion = '1.0.15'
|
||||||
|
if (!version) {
|
||||||
|
if (setting) {
|
||||||
|
version = setting.version
|
||||||
|
delete setting.version
|
||||||
|
}
|
||||||
|
}
|
||||||
const defaultSetting = {
|
const defaultSetting = {
|
||||||
version: defaultVersion,
|
|
||||||
player: {
|
player: {
|
||||||
togglePlayMethod: 'listLoop',
|
togglePlayMethod: 'listLoop',
|
||||||
highQuality: false,
|
highQuality: false,
|
||||||
|
@ -235,21 +240,22 @@ export const updateSetting = setting => {
|
||||||
sourceId: 'kw',
|
sourceId: 'kw',
|
||||||
apiSource: 'temp',
|
apiSource: 'temp',
|
||||||
randomAnimate: true,
|
randomAnimate: true,
|
||||||
|
ignoreVersion: null,
|
||||||
}
|
}
|
||||||
const overwriteSetting = {
|
const overwriteSetting = {
|
||||||
version: defaultVersion,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (!setting) {
|
if (!setting) {
|
||||||
setting = defaultSetting
|
setting = defaultSetting
|
||||||
} else if (checkVersion(setting.version, defaultSetting.version)) {
|
} else if (checkVersion(version, defaultVersion)) {
|
||||||
objectDeepMerge(defaultSetting, setting)
|
objectDeepMerge(defaultSetting, setting)
|
||||||
objectDeepMerge(defaultSetting, overwriteSetting)
|
objectDeepMerge(defaultSetting, overwriteSetting)
|
||||||
setting = defaultSetting
|
setting = defaultSetting
|
||||||
}
|
}
|
||||||
if (setting.apiSource != 'temp') setting.apiSource = 'test' // 强制设置回 test 接口源
|
if (setting.apiSource != 'temp') setting.apiSource = 'test' // 强制设置回 test 接口源
|
||||||
return setting
|
return { setting, version: defaultVersion }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -197,7 +197,7 @@ import fs from 'fs'
|
||||||
export default {
|
export default {
|
||||||
name: 'Setting',
|
name: 'Setting',
|
||||||
computed: {
|
computed: {
|
||||||
...mapGetters(['setting', 'themes', 'version', 'windowSizeList']),
|
...mapGetters(['setting', 'settingVersion', 'themes', 'version', 'windowSizeList']),
|
||||||
...mapGetters('list', ['defaultList', 'loveList']),
|
...mapGetters('list', ['defaultList', 'loveList']),
|
||||||
isLatestVer() {
|
isLatestVer() {
|
||||||
return this.version.newVersion && this.version.version === this.version.newVersion.version
|
return this.version.newVersion && this.version.version === this.version.newVersion.version
|
||||||
|
@ -214,7 +214,6 @@ export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
current_setting: {
|
current_setting: {
|
||||||
version: null,
|
|
||||||
player: {
|
player: {
|
||||||
togglePlayMethod: 'random',
|
togglePlayMethod: 'random',
|
||||||
highQuality: false,
|
highQuality: false,
|
||||||
|
@ -303,7 +302,7 @@ export default {
|
||||||
watch: {
|
watch: {
|
||||||
current_setting: {
|
current_setting: {
|
||||||
handler(n, o) {
|
handler(n, o) {
|
||||||
if (!o.version) return
|
if (!this.settingVersion) return
|
||||||
this.setSetting(JSON.parse(JSON.stringify(n)))
|
this.setSetting(JSON.parse(JSON.stringify(n)))
|
||||||
},
|
},
|
||||||
deep: true,
|
deep: true,
|
||||||
|
@ -322,7 +321,7 @@ export default {
|
||||||
this.init()
|
this.init()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
...mapMutations(['setSetting', 'setVersionModalVisible']),
|
...mapMutations(['setSetting', 'setSettingVersion', 'setVersionModalVisible']),
|
||||||
...mapMutations('list', ['setList']),
|
...mapMutations('list', ['setList']),
|
||||||
init() {
|
init() {
|
||||||
this.current_setting = JSON.parse(JSON.stringify(this.setting))
|
this.current_setting = JSON.parse(JSON.stringify(this.setting))
|
||||||
|
@ -343,23 +342,23 @@ export default {
|
||||||
openDirInExplorer(dir)
|
openDirInExplorer(dir)
|
||||||
},
|
},
|
||||||
importSetting(path) {
|
importSetting(path) {
|
||||||
let setting
|
let settingData
|
||||||
try {
|
try {
|
||||||
setting = JSON.parse(fs.readFileSync(path, 'utf8'))
|
settingData = JSON.parse(fs.readFileSync(path, 'utf8'))
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (setting.type !== 'setting') return
|
if (settingData.type !== 'setting') return
|
||||||
this.setSetting(updateSetting(setting.data))
|
const { version: settingVersion, setting } = updateSetting(settingData.data)
|
||||||
this.init()
|
this.refreshSetting(setting, settingVersion)
|
||||||
},
|
},
|
||||||
exportSetting(path) {
|
exportSetting(path) {
|
||||||
console.log(path)
|
console.log(path)
|
||||||
const data = {
|
const data = {
|
||||||
type: 'setting',
|
type: 'setting',
|
||||||
data: this.setting,
|
data: Object.assign({ version: this.settingVersion }, this.setting),
|
||||||
}
|
}
|
||||||
fs.writeFile(path, JSON.stringify(data), 'utf8', err => {
|
fs.writeFile(path, JSON.stringify(data, null, 2), 'utf8', err => {
|
||||||
console.log(err)
|
console.log(err)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
@ -389,7 +388,7 @@ export default {
|
||||||
this.loveList,
|
this.loveList,
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
fs.writeFile(path, JSON.stringify(data), 'utf8', err => {
|
fs.writeFile(path, JSON.stringify(data, null, 2), 'utf8', err => {
|
||||||
console.log(err)
|
console.log(err)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
@ -401,9 +400,8 @@ export default {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (allData.type !== 'allData') return
|
if (allData.type !== 'allData') return
|
||||||
this.setSetting(updateSetting(allData.setting))
|
const { version: settingVersion, setting } = updateSetting(allData.setting)
|
||||||
this.init()
|
this.refreshSetting(setting, settingVersion)
|
||||||
if (allData.defaultList) return this.setList({ id: 'default', list: allData.defaultList.list })
|
|
||||||
|
|
||||||
for (const list of allData.playList) {
|
for (const list of allData.playList) {
|
||||||
this.setList({ id: list.id, list: list.list })
|
this.setList({ id: list.id, list: list.list })
|
||||||
|
@ -412,13 +410,13 @@ export default {
|
||||||
exportAllData(path) {
|
exportAllData(path) {
|
||||||
let allData = {
|
let allData = {
|
||||||
type: 'allData',
|
type: 'allData',
|
||||||
setting: this.setting,
|
setting: Object.assign({ version: this.settingVersion }, this.setting),
|
||||||
playList: [
|
playList: [
|
||||||
this.defaultList,
|
this.defaultList,
|
||||||
this.loveList,
|
this.loveList,
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
fs.writeFile(path, JSON.stringify(allData), 'utf8', err => {
|
fs.writeFile(path, JSON.stringify(allData, null, 2), 'utf8', err => {
|
||||||
console.log(err)
|
console.log(err)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
@ -515,10 +513,19 @@ export default {
|
||||||
this.getCacheSize()
|
this.getCacheSize()
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
handleWindowSizeChange(index) {
|
handleWindowSizeChange(index, id) {
|
||||||
let info = this.windowSizeList[index]
|
let info = id == null ? this.windowSizeList[index] : this.windowSizeList.find(s => s.id == id)
|
||||||
setWindowSize(info.width, info.height)
|
setWindowSize(info.width, info.height)
|
||||||
},
|
},
|
||||||
|
refreshSetting(setting, version) {
|
||||||
|
this.setSetting(setting)
|
||||||
|
this.setSettingVersion(version)
|
||||||
|
if (setting.windowSizeId != null) this.handleWindowSizeChange(null, setting.windowSizeId)
|
||||||
|
for (let key of Object.keys(setting.network.proxy)) {
|
||||||
|
window.globalObj.proxy[key] = setting.network.proxy[key]
|
||||||
|
}
|
||||||
|
this.init()
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
Loading…
Reference in New Issue