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