Skip to content

Commit bad0262

Browse files
committed
fix: update queryParams and downloadbase64
1 parent d161082 commit bad0262

File tree

3 files changed

+32
-33
lines changed

3 files changed

+32
-33
lines changed

pnpm-lock.yaml

Lines changed: 12 additions & 15 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/composable/queryParams.ts

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ const transformers = {
1717
fromQuery: (value: string) => value.toLowerCase() === 'true',
1818
toQuery: (value: boolean) => (value ? 'true' : 'false'),
1919
},
20+
object: {
21+
fromQuery: (value: string) => {
22+
return JSON.parse(value);
23+
},
24+
toQuery: (value: object) => JSON.stringify(value),
25+
},
2026
};
2127

2228
function useQueryParam<T>({ name, defaultValue }: { name: string; defaultValue: T }) {
@@ -35,30 +41,26 @@ function useQueryParam<T>({ name, defaultValue }: { name: string; defaultValue:
3541
});
3642
}
3743

38-
function useQueryParamOrStorage<T>({ name, storageName, defaultValue }: { name: string; storageName: string; defaultValue?: T }) {
44+
function useQueryParamOrStorage<T>({ name, storageName, defaultValue }: { name: string; storageName: string; defaultValue: T }) {
3945
const type = typeof defaultValue;
4046
const transformer = transformers[type as keyof typeof transformers] ?? transformers.string;
4147

4248
const storageRef = useStorage(storageName, defaultValue);
43-
const storageDefaultValue = storageRef.value ?? defaultValue;
49+
const proxyDefaultValue = transformer.toQuery(defaultValue as never);
50+
const proxy = useRouteQuery(name, proxyDefaultValue);
4451

45-
const proxy = useRouteQuery(name, transformer.toQuery(storageDefaultValue as never));
52+
const r = ref(defaultValue);
4653

47-
const ref = computed<T>({
48-
get() {
49-
return transformer.fromQuery(proxy.value) as unknown as T;
50-
},
51-
set(value) {
54+
watch(r,
55+
(value) => {
5256
proxy.value = transformer.toQuery(value as never);
57+
storageRef.value = value as never;
5358
},
54-
});
59+
{ deep: true });
5560

56-
watch(
57-
ref,
58-
(newValue) => {
59-
storageRef.value = newValue;
60-
},
61-
);
61+
r.value = (proxy.value && proxy.value !== proxyDefaultValue
62+
? transformer.fromQuery(proxy.value) as unknown as T
63+
: storageRef.value as T) as never;
6264

63-
return ref;
65+
return r;
6466
}

src/tools/qr-code-generator/qr-code-generator.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import type {
88
} from 'pp-qr-code';
99
import qrcodeConsole from 'qrcode-terminal-nooctal';
1010
import { useQRCodeStyling } from './useQRCode';
11-
import { useDownloadFileFromBase64Refs } from '@/composable/downloadBase64';
11+
import { useDownloadFileFromBase64 } from '@/composable/downloadBase64';
1212
import { useQueryParamOrStorage } from '@/composable/queryParams';
1313
1414
const foreground = useQueryParamOrStorage({ name: 'fg', storageName: 'qr-code-gen:fg', defaultValue: '#000000ff' });
@@ -83,7 +83,7 @@ const qrcodeTerminal = computedAsync(() => {
8383
8484
const filename = ref('qr-code');
8585
const extension = computed(() => outputType.value.toString());
86-
const { download } = useDownloadFileFromBase64Refs({ source: qrcode, filename, extension });
86+
const { download } = useDownloadFileFromBase64({ source: qrcode, filename, extension });
8787
</script>
8888

8989
<template>

0 commit comments

Comments
 (0)