diff --git a/publish/changeLog.md b/publish/changeLog.md index c83178ec..88b1d370 100644 --- a/publish/changeLog.md +++ b/publish/changeLog.md @@ -1,3 +1,4 @@ ### 修复 - 修复我的列表搜索无法搜索小括号、中括号等字符的问题 +- 修复v1.14.0出现的备份与恢复功能备份的数据无法恢复的问题,同时兼容使用v1.14.0导出的存在问题的数据 diff --git a/src/renderer/utils/index.js b/src/renderer/utils/index.js index 374603b4..4c7cf04d 100644 --- a/src/renderer/utils/index.js +++ b/src/renderer/utils/index.js @@ -464,7 +464,18 @@ export const readLxConfigFile = async path => { let data = await fs.promises.readFile(path, isJSON ? 'utf8' : 'binary') if (!data || isJSON) return data data = await gunzipData(Buffer.from(data, 'binary')) - return data.toString('utf8') + data = JSON.parse(data.toString('utf8')) + + // 修复v1.14.0出现的导出数据被序列化两次的问题 + if (typeof data != 'object') { + try { + data = JSON.parse(data) + } catch (err) { + return data + } + } + + return data } diff --git a/src/renderer/views/List.vue b/src/renderer/views/List.vue index b423dd0d..25ab684e 100644 --- a/src/renderer/views/List.vue +++ b/src/renderer/views/List.vue @@ -1050,7 +1050,7 @@ export default { if (result.canceled) return let listData try { - listData = JSON.parse(await readLxConfigFile(result.filePaths[0])) + listData = await readLxConfigFile(result.filePaths[0]) } catch (error) { return } diff --git a/src/renderer/views/Setting.vue b/src/renderer/views/Setting.vue index 9d5cc8a7..852671ac 100644 --- a/src/renderer/views/Setting.vue +++ b/src/renderer/views/Setting.vue @@ -815,7 +815,7 @@ export default { async importSetting(path) { let settingData try { - settingData = JSON.parse(await readLxConfigFile(path)) + settingData = await readLxConfigFile(path) } catch (error) { return } @@ -830,12 +830,12 @@ export default { type: 'setting', data: Object.assign({ version: this.settingVersion }, this.setting), } - saveLxConfigFile(path, JSON.stringify(data)) + saveLxConfigFile(path, data) }, async importPlayList(path) { let listData try { - listData = JSON.parse(await readLxConfigFile(path)) + listData = await readLxConfigFile(path) } catch (error) { return } @@ -867,12 +867,12 @@ export default { if (item.otherSource) delete item.otherSource } } - saveLxConfigFile(path, JSON.stringify(data)) + saveLxConfigFile(path, data) }, async importAllData(path) { let allData try { - allData = JSON.parse(await readLxConfigFile(path)) + allData = await readLxConfigFile(path) } catch (error) { return } @@ -906,7 +906,7 @@ export default { if (item.otherSource) delete item.otherSource } } - saveLxConfigFile(path, JSON.stringify(allData)) + saveLxConfigFile(path, allData) }, handleImportAllData() { selectDir({