Skip to content

Commit 374caa1

Browse files
committed
fix(Phone Parser): store country prefix
FIx CorentinTh#1040
1 parent e876d03 commit 374caa1

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed

src/composable/queryParams.ts

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import { useRouteQuery } from '@vueuse/router';
22
import { computed } from 'vue';
3+
import { useStorage } from '@vueuse/core';
34

4-
export { useQueryParam };
5+
export { useQueryParam, useQueryParamOrStorage };
56

67
const transformers = {
78
number: {
@@ -33,3 +34,31 @@ function useQueryParam<T>({ name, defaultValue }: { name: string; defaultValue:
3334
},
3435
});
3536
}
37+
38+
function useQueryParamOrStorage<T>({ name, storageName, defaultValue }: { name: string; storageName: string; defaultValue?: T }) {
39+
const type = typeof defaultValue;
40+
const transformer = transformers[type as keyof typeof transformers] ?? transformers.string;
41+
42+
const storageRef = useStorage(storageName, defaultValue);
43+
const storageDefaultValue = storageRef.value ?? defaultValue;
44+
45+
const proxy = useRouteQuery(name, transformer.toQuery(storageDefaultValue as never));
46+
47+
const ref = computed<T>({
48+
get() {
49+
return transformer.fromQuery(proxy.value) as unknown as T;
50+
},
51+
set(value) {
52+
proxy.value = transformer.toQuery(value as never);
53+
},
54+
});
55+
56+
watch(
57+
ref,
58+
(newValue) => {
59+
storageRef.value = newValue;
60+
},
61+
);
62+
63+
return ref;
64+
}

src/tools/phone-parser-and-formatter/phone-parser-and-formatter.vue

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@ import {
99
import { withDefaultOnError } from '@/utils/defaults';
1010
import { booleanToHumanReadable } from '@/utils/boolean';
1111
import { useValidation } from '@/composable/validation';
12+
import { useQueryParamOrStorage } from '@/composable/queryParams';
1213
1314
const rawPhone = ref('');
14-
const defaultCountryCode = ref(getDefaultCountryCode());
15+
const defaultCountryCode = useQueryParamOrStorage({ name: 'country', storageName: 'phone-parser:country', defaultValue: getDefaultCountryCode() });
1516
const validation = useValidation({
1617
source: rawPhone,
1718
rules: [

0 commit comments

Comments
 (0)