From eb67d67a60880a78359531374cfbd19dd664662c Mon Sep 17 00:00:00 2001 From: lyswhut Date: Mon, 4 Oct 2021 12:22:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dv1.14.0=E5=87=BA=E7=8E=B0?= =?UTF-8?q?=E7=9A=84=E5=A4=87=E4=BB=BD=E4=B8=8E=E6=81=A2=E5=A4=8D=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=A4=87=E4=BB=BD=E7=9A=84=E6=95=B0=E6=8D=AE=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E6=81=A2=E5=A4=8D=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- publish/changeLog.md | 1 + src/renderer/utils/index.js | 13 ++++++++++++- src/renderer/views/List.vue | 2 +- src/renderer/views/Setting.vue | 12 ++++++------ 4 files changed, 20 insertions(+), 8 deletions(-) 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({