From 3ed50a84f5ad2881aadc4baded3a583317e47712 Mon Sep 17 00:00:00 2001 From: Chek Wei Tan Date: Sat, 25 Nov 2023 12:22:08 +0800 Subject: [PATCH] Add export / import data back (#630) * Export chats and settings * Migrate setting array item index to use UUID for importing and exporting * Import chats and settings * Add import log --------- Co-authored-by: Sun Zhigang --- package-lock.json | 30 +- package.json | 2 + src/components/ChatSetting.vue | 589 ++++++++++++++++++++++++++++----- src/components/PromptModal.vue | 6 +- src/i18n/locales/en.json | 13 +- src/i18n/locales/zh.json | 13 +- src/main.js | 1 + src/store/index.js | 53 ++- 8 files changed, 600 insertions(+), 107 deletions(-) diff --git a/package-lock.json b/package-lock.json index 94e4d6ed44..b90d3e84e4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,9 @@ "compare-versions": "^6.1.0", "core-js": "^3.32.2", "dexie": "^4.0.1-alpha.25", + "dexie-export-import": "^4.0.7", "electron-builder": "^24.6.4", + "jszip": "^3.10.1", "katex": "^0.16.8", "langchain": "~0.0.156", "localforage": "^1.10.0", @@ -7578,8 +7580,7 @@ "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, "node_modules/cors": { "version": "2.8.5", @@ -8993,6 +8994,14 @@ "resolved": "https://registry.npmmirror.com/dexie/-/dexie-4.0.1-beta.1.tgz", "integrity": "sha512-+IAkY8U09pavDFecWFOfTkwVN3NTmIsWZN2wh+RQ+9ya35Kr6AicQp+Tt1NDCM4UG2P/PDFBq/Mp4dt151LmuQ==" }, + "node_modules/dexie-export-import": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/dexie-export-import/-/dexie-export-import-4.0.7.tgz", + "integrity": "sha512-h22soiockhhWch6edw8XL/JNfn7akPLuLf6kPQdR4uneG/P0XQus4I8wpjV86dck61oEYKPHm36jyft/zVK0jQ==", + "peerDependencies": { + "dexie": "^2.0.4 || ^3.0.0 || ^4.0.1-alpha.5" + } + }, "node_modules/diff": { "version": "5.1.0", "resolved": "https://registry.npmmirror.com/diff/-/diff-5.1.0.tgz", @@ -13263,9 +13272,8 @@ }, "node_modules/jszip": { "version": "3.10.1", - "resolved": "https://registry.npmmirror.com/jszip/-/jszip-3.10.1.tgz", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", - "dev": true, "dependencies": { "lie": "~3.3.0", "pako": "~1.0.2", @@ -13277,7 +13285,6 @@ "version": "3.3.0", "resolved": "https://registry.npmmirror.com/lie/-/lie-3.3.0.tgz", "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", - "dev": true, "dependencies": { "immediate": "~3.0.5" } @@ -16120,8 +16127,7 @@ "node_modules/pako": { "version": "1.0.11", "resolved": "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, "node_modules/param-case": { "version": "3.0.4", @@ -17171,8 +17177,7 @@ "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "node_modules/progress": { "version": "2.0.3", @@ -17636,7 +17641,6 @@ "version": "2.3.8", "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -17650,8 +17654,7 @@ "node_modules/readable-stream/node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/readdirp": { "version": "3.6.0", @@ -18475,8 +18478,7 @@ "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" }, "node_modules/setprototypeof": { "version": "1.2.0", diff --git a/package.json b/package.json index 1612c39414..b6d60eaf3e 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,9 @@ "compare-versions": "^6.1.0", "core-js": "^3.32.2", "dexie": "^4.0.1-alpha.25", + "dexie-export-import": "^4.0.7", "electron-builder": "^24.6.4", + "jszip": "^3.10.1", "katex": "^0.16.8", "langchain": "~0.0.156", "localforage": "^1.10.0", diff --git a/src/components/ChatSetting.vue b/src/components/ChatSetting.vue index e9b247f6d7..0d0d26d5df 100644 --- a/src/components/ChatSetting.vue +++ b/src/components/ChatSetting.vue @@ -7,15 +7,33 @@ :text="$t('chat.deleteAllChatHistory')" @click="deleteChats" > - +
+ + + {{ $t("chat.exportImport") }} + + {{ $t("chat.exportImportDesc") }} +
+ + + +
+
+
@@ -148,21 +166,64 @@ + + {{ snackbar.text }} + + + + + {{ $t("chat.importLog") }} + + + + {{ $t("modal.done") }} + + + +