From c1061763e65807325066f4be0acf3d0bb4095e08 Mon Sep 17 00:00:00 2001 From: modos189 Date: Mon, 17 Jul 2023 18:04:56 +0300 Subject: [PATCH] Possibility to import IITC Button data has been implemented --- package-lock.json | 62 +++++++++++++--- package.json | 2 + public/_locales/en/messages.json | 21 +++++- src/settings/App.vue | 2 +- src/settings/backup/Main.vue | 117 +++++++++++++++++++------------ src/settings/backup/export.js | 73 +++++++++++++++++++ src/settings/backup/import.js | 103 +++++++++++++++++++++++++++ src/settings/backup/utils.js | 92 ++++-------------------- 8 files changed, 335 insertions(+), 137 deletions(-) create mode 100644 src/settings/backup/export.js create mode 100644 src/settings/backup/import.js diff --git a/package-lock.json b/package-lock.json index a7bea45..0195c23 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,9 @@ "version": "2.0.2", "license": "GPLv3", "dependencies": { + "@bundled-es-modules/deepmerge": "^4.3.1", "@highlightjs/vue-plugin": "^1.0.2", + "await-timeout": "^1.1.1", "core-js": "^3.6.5", "highlight.js": "^10.7.3", "jszip": "^3.10.1", @@ -1712,6 +1714,14 @@ "node": ">=6.9.0" } }, + "node_modules/@bundled-es-modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@bundled-es-modules/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-Rk453EklPUPC3NRWc3VUNI/SSUjdBaFoaQvFRmNBNtMHVtOFD5AntiWg5kEE1hqcPqedYFDzxE3ZcMYPcA195w==", + "dependencies": { + "deepmerge": "^4.3.1" + } + }, "node_modules/@hapi/address": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", @@ -3359,6 +3369,14 @@ "url": "https://tidelift.com/funding/github/npm/autoprefixer" } }, + "node_modules/await-timeout": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/await-timeout/-/await-timeout-1.1.1.tgz", + "integrity": "sha512-gsDXAS6XVc4Jt+7S92MPX6Noq69bdeXUPEaXd8dk3+yVr629LTDLxNt4j1ycBbrU+AStK2PhKIyNIM+xzWMVOQ==", + "engines": { + "node": ">=6" + } + }, "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -5547,10 +5565,9 @@ "dev": true }, "node_modules/deepmerge": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", - "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", - "dev": true, + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "engines": { "node": ">=0.10.0" } @@ -15311,6 +15328,15 @@ "node": ">=8" } }, + "node_modules/webpack-chain/node_modules/deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/webpack-dev-middleware": { "version": "3.7.3", "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", @@ -17457,6 +17483,14 @@ "to-fast-properties": "^2.0.0" } }, + "@bundled-es-modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@bundled-es-modules/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-Rk453EklPUPC3NRWc3VUNI/SSUjdBaFoaQvFRmNBNtMHVtOFD5AntiWg5kEE1hqcPqedYFDzxE3ZcMYPcA195w==", + "requires": { + "deepmerge": "^4.3.1" + } + }, "@hapi/address": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", @@ -18832,6 +18866,11 @@ "postcss-value-parser": "^4.1.0" } }, + "await-timeout": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/await-timeout/-/await-timeout-1.1.1.tgz", + "integrity": "sha512-gsDXAS6XVc4Jt+7S92MPX6Noq69bdeXUPEaXd8dk3+yVr629LTDLxNt4j1ycBbrU+AStK2PhKIyNIM+xzWMVOQ==" + }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -20580,10 +20619,9 @@ "dev": true }, "deepmerge": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", - "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", - "dev": true + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==" }, "default-gateway": { "version": "5.0.5", @@ -28480,6 +28518,14 @@ "requires": { "deepmerge": "^1.5.2", "javascript-stringify": "^2.0.1" + }, + "dependencies": { + "deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", + "dev": true + } } }, "webpack-dev-middleware": { diff --git a/package.json b/package.json index d0acf40..b50ed32 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,9 @@ "lint": "vue-cli-service lint" }, "dependencies": { + "@bundled-es-modules/deepmerge": "^4.3.1", "@highlightjs/vue-plugin": "^1.0.2", + "await-timeout": "^1.1.1", "core-js": "^3.6.5", "highlight.js": "^10.7.3", "jszip": "^3.10.1", diff --git a/public/_locales/en/messages.json b/public/_locales/en/messages.json index 879b772..8aba14d 100644 --- a/public/_locales/en/messages.json +++ b/public/_locales/en/messages.json @@ -200,12 +200,21 @@ "export": { "message": "Export" }, + "import_settings": { + "message": "Import IITC settings" + }, + "import_data": { + "message": "Import plugins data" + }, + "import_external": { + "message": "Import of external plugins" + }, + "importFromZip": { + "message": "Import from zip" + }, "export_settings": { "message": "Export IITC settings" }, - "export_status": { - "message": "Export the enabled/disabled status of IITC plugins" - }, "export_data": { "message": "Export plugins data" }, @@ -214,5 +223,11 @@ }, "exportToZip": { "message": "Export to zip" + }, + "pleaseWait": { + "message": "Please wait" + }, + "backupRestored": { + "message": "Backup restored" } } diff --git a/src/settings/App.vue b/src/settings/App.vue index 9d0acf3..0492ef7 100644 --- a/src/settings/App.vue +++ b/src/settings/App.vue @@ -75,7 +75,7 @@ body { align-items: center; flex-direction: column; background: #2b2b2b; - height: 100vh; + height: 100%; width: 100%; } diff --git a/src/settings/backup/Main.vue b/src/settings/backup/Main.vue index 35dc888..711ddce 100644 --- a/src/settings/backup/Main.vue +++ b/src/settings/backup/Main.vue @@ -4,7 +4,30 @@

{{ _("import") }}

- TODO + + + +
{{ _("pleaseWait") }}
+
+
{{ _("importFromZip") }}
+ +

{{ _("export") }}

@@ -12,10 +35,6 @@ {{ _("export_settings") }} - -
{{ _("exportToZip") }}
+
{{ _("exportToZip") }}
@@ -33,66 +52,70 @@