Browse Source

fix: can't encode certain characters when backup workflows (#1555)

Ahmad Kholid 1 year ago
parent
commit
566f29f2b9

+ 1 - 0
package.json

@@ -65,6 +65,7 @@
     "dexie": "^3.2.3",
     "html2canvas": "^1.4.1",
     "idb": "^7.0.2",
+    "js-base64": "^3.7.5",
     "json5": "^2.2.3",
     "jsonpath": "^1.1.1",
     "jspdf": "^2.5.1",

+ 1 - 1
src/background/BackgroundEventsListeners.js

@@ -44,7 +44,7 @@ async function handleScheduleBackup() {
       payload.storageVariables = JSON.stringify(variables);
     }
 
-    const base64 = btoa(JSON.stringify(payload));
+    const base64 = btoa(encodeURIComponent(JSON.stringify(payload)));
     const filename = `${
       localBackupSettings.folderName ? `${localBackupSettings.folderName}/` : ''
     }${dayjs().format('DD-MMM-YYYY--HH-mm')}.json`;

+ 1 - 1
src/newtab/pages/settings/SettingsBackup.vue

@@ -416,7 +416,7 @@ async function restoreWorkflows() {
     };
 
     reader.onload = ({ target }) => {
-      const payload = parseJSON(target.result, null);
+      const payload = parseJSON(window.decodeURIComponent(target.result), null);
       if (!payload) return;
 
       const storageTables = parseJSON(payload.storageTables, null);

+ 5 - 0
yarn.lock

@@ -4714,6 +4714,11 @@ jiti@^1.18.2:
   resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.19.3.tgz#ef554f76465b3c2b222dc077834a71f0d4a37569"
   integrity sha512-5eEbBDQT/jF1xg6l36P+mWGGoH9Spuy0PCdSr2dtWRDGC6ph/w9ZCL4lmESW8f8F7MwT3XKescfP0wnZWAKL9w==
 
+js-base64@^3.7.5:
+  version "3.7.5"
+  resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.5.tgz#21e24cf6b886f76d6f5f165bfcd69cc55b9e3fca"
+  integrity sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA==
+
 js-tokens@^4.0.0:
   version "4.0.0"
   resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"