From da6f86283a461ed671331b59045e5aed16ef585f Mon Sep 17 00:00:00 2001 From: Elias Boukamza Date: Thu, 3 Nov 2022 12:13:01 +0100 Subject: [PATCH 1/5] feat(settings): add methods encodeSettings() and decodeSettings() --- packages/settings/jest.config.js | 6 ++++++ packages/settings/package.json | 2 +- packages/settings/src/index.ts | 1 + packages/settings/src/settingsCode.ts | 12 ++++++++++++ packages/settings/tests/settingsCode.spec.ts | 9 +++++++++ 5 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 packages/settings/jest.config.js create mode 100644 packages/settings/src/settingsCode.ts create mode 100644 packages/settings/tests/settingsCode.spec.ts diff --git a/packages/settings/jest.config.js b/packages/settings/jest.config.js new file mode 100644 index 00000000..cabd5887 --- /dev/null +++ b/packages/settings/jest.config.js @@ -0,0 +1,6 @@ +module.exports = { + displayName: 'settings', + preset: 'ts-jest', + testEnvironment: 'jsdom', + coverageDirectory: '../../coverage/packages/settings' +} diff --git a/packages/settings/package.json b/packages/settings/package.json index 2f950050..e2d1f81d 100644 --- a/packages/settings/package.json +++ b/packages/settings/package.json @@ -6,7 +6,7 @@ "types": "dist/types/index.d.ts", "scripts": { "clean": "shx rm -rf dist", - "test": "echo 'no test yet'", + "test": "jest", "build": "rollup -c rollup.config.js" }, "publishConfig": { diff --git a/packages/settings/src/index.ts b/packages/settings/src/index.ts index adaba117..5fb70ba0 100644 --- a/packages/settings/src/index.ts +++ b/packages/settings/src/index.ts @@ -4,3 +4,4 @@ export * from './options' export * from './langConfig' export * from './defaultSettings' export * from './defaultProfiles' +export * from './settingsCode' diff --git a/packages/settings/src/settingsCode.ts b/packages/settings/src/settingsCode.ts new file mode 100644 index 00000000..81b2670d --- /dev/null +++ b/packages/settings/src/settingsCode.ts @@ -0,0 +1,12 @@ +import { Settings } from './models' + +const encodeSettings = (settings: Settings): string => { + const str = JSON.stringify(settings, null, '') + return btoa(str) +} + +const decodeSettings = (code: string): Settings => { + return JSON.parse(atob(code)) as Settings +} + +export { encodeSettings, decodeSettings } diff --git a/packages/settings/tests/settingsCode.spec.ts b/packages/settings/tests/settingsCode.spec.ts new file mode 100644 index 00000000..faee1a4d --- /dev/null +++ b/packages/settings/tests/settingsCode.spec.ts @@ -0,0 +1,9 @@ +import { decodeSettings, encodeSettings, Settings } from '../src' + +describe('SettingsCode', () => { + test('should encode and decode settings', () => { + const settings: Settings = { language: 'en', fontSize: '140%', phonemesActive: false } as Settings + const code = encodeSettings(settings) + expect(decodeSettings(code)).toEqual(settings) + }) +}) From 22773b22fab1b8af6b22beaaa08c8c975f425704 Mon Sep 17 00:00:00 2001 From: Elias Boukamza Date: Thu, 3 Nov 2022 12:20:07 +0100 Subject: [PATCH 2/5] feat(shared-components): in SaveSettings component add props disabled and label to be more customizable --- .../src/components/buttons/SaveSettings.vue | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/shared-components/src/components/buttons/SaveSettings.vue b/packages/shared-components/src/components/buttons/SaveSettings.vue index 789feed4..bb97e931 100644 --- a/packages/shared-components/src/components/buttons/SaveSettings.vue +++ b/packages/shared-components/src/components/buttons/SaveSettings.vue @@ -6,6 +6,10 @@ import SettingsSaveConfirmation from '../modals/SettingsSaveConfirmation.vue' const SaveSetting = defineComponent({ components: { BButton, SettingsSaveConfirmation }, + props: { + disabled: { type: Boolean, default: false }, + label: { type: String, default: 'SETTINGS.SAVE' } + }, setup(_, { emit }) { const shouldShowModal = ref(false) @@ -27,7 +31,7 @@ export default SaveSetting