diff --git a/package-lock.json b/package-lock.json index 2e7e4a0..0e6bc9f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "dependencies": { "@codemirror/lang-javascript": "^6.1.1", "@codemirror/theme-one-dark": "^6.1.0", - "@gkucmierz/utils": "^1.12.1", + "@gkucmierz/utils": "^1.15.0", "codemirror": "^6.0.1", "copy-to-clipboard": "^3.3.3", "eventemitter3": "^4.0.7", @@ -1878,9 +1878,9 @@ } }, "node_modules/@gkucmierz/utils": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@gkucmierz/utils/-/utils-1.12.1.tgz", - "integrity": "sha512-oP/4FMdP3h+fKh+Rpv3SB2F5K5DmOsMh4AuiKu8uWUtw1LkIy18JS7qzcKH0258iBg/zhXvhgcOI0LGuffsUCA==" + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@gkucmierz/utils/-/utils-1.15.0.tgz", + "integrity": "sha512-Z2geakuU4cQQ0QhFaID0vN1u4lzHNpn9CHv/c/zkko8YXho80rEbjm301NaKKch62z+7FND4O7yh+SQVh4isRg==" }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.6", @@ -7585,9 +7585,9 @@ } }, "@gkucmierz/utils": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@gkucmierz/utils/-/utils-1.12.1.tgz", - "integrity": "sha512-oP/4FMdP3h+fKh+Rpv3SB2F5K5DmOsMh4AuiKu8uWUtw1LkIy18JS7qzcKH0258iBg/zhXvhgcOI0LGuffsUCA==" + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@gkucmierz/utils/-/utils-1.15.0.tgz", + "integrity": "sha512-Z2geakuU4cQQ0QhFaID0vN1u4lzHNpn9CHv/c/zkko8YXho80rEbjm301NaKKch62z+7FND4O7yh+SQVh4isRg==" }, "@humanwhocodes/config-array": { "version": "0.11.6", diff --git a/package.json b/package.json index 0440d69..82b0ffa 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "dependencies": { "@codemirror/lang-javascript": "^6.1.1", "@codemirror/theme-one-dark": "^6.1.0", - "@gkucmierz/utils": "^1.12.1", + "@gkucmierz/utils": "^1.15.0", "codemirror": "^6.0.1", "copy-to-clipboard": "^3.3.3", "eventemitter3": "^4.0.7", diff --git a/src/components/ShareModal.vue b/src/components/ShareModal.vue index f5d454a..86055de 100644 --- a/src/components/ShareModal.vue +++ b/src/components/ShareModal.vue @@ -6,7 +6,6 @@ import PrimeButton from 'primevue/button'; import copy from 'copy-to-clipboard'; -import { APP_URL, SHARE_CODE_ROUTE_NAME } from '../app.config'; import ModalWindow from './ModalWindow.vue'; import codeService from '../services/codeService'; @@ -27,7 +26,7 @@ export default defineComponent({ }, methods: { encode(code) { - return [APP_URL, SHARE_CODE_ROUTE_NAME, btoa(code)].join('/'); + return codeService.codeToUrl(code); }, copy() { copy(this.encode(this.code)); diff --git a/src/services/codeService.mjs b/src/services/codeService.mjs index 9a8a463..a7ae2f7 100644 --- a/src/services/codeService.mjs +++ b/src/services/codeService.mjs @@ -4,6 +4,8 @@ import { STORAGE_KEY_CODE, } from '../app.config'; import EventEmitter from 'eventemitter3'; +import { toBase64, fromBase64 } from '@gkucmierz/utils/src/base64'; +import { APP_URL, SHARE_CODE_ROUTE_NAME } from '../app.config'; const ee = new EventEmitter(); let code; @@ -23,7 +25,10 @@ const codeService = { ee.emit('change', code); }, setFromUrl(_encoded) { - this.change(atob(_encoded)); + this.change(fromBase64(_encoded)); + }, + codeToUrl(_code = code) { + return [APP_URL, SHARE_CODE_ROUTE_NAME, toBase64(_code)].join('/'); }, ee, };