Use minimal share params and source-aware hydration
This commit is contained in:
@@ -80,10 +80,21 @@
|
|||||||
const v1 = toQueryValue(val1);
|
const v1 = toQueryValue(val1);
|
||||||
const v2 = toQueryValue(val2);
|
const v2 = toQueryValue(val2);
|
||||||
const v3 = toQueryValue(val3);
|
const v3 = toQueryValue(val3);
|
||||||
|
const source: 1 | 2 | 3 = has3 ? activeField : (activeField === 2 ? 2 : 1);
|
||||||
|
params.set('src', String(source));
|
||||||
|
|
||||||
if (v1 !== null) params.set('v1', v1);
|
if (!has3) {
|
||||||
if (v2 !== null) params.set('v2', v2);
|
const sourceValue = source === 1 ? v1 : v2;
|
||||||
if (has3 && v3 !== null) params.set('v3', v3);
|
if (sourceValue !== null) {
|
||||||
|
params.set(source === 1 ? 'v1' : 'v2', sourceValue);
|
||||||
|
}
|
||||||
|
} else if (source === 3) {
|
||||||
|
if (v2 !== null) params.set('v2', v2);
|
||||||
|
if (v3 !== null) params.set('v3', v3);
|
||||||
|
} else {
|
||||||
|
if (v1 !== null) params.set('v1', v1);
|
||||||
|
if (v2 !== null) params.set('v2', v2);
|
||||||
|
}
|
||||||
|
|
||||||
const shareUrl = new URL($page.url);
|
const shareUrl = new URL($page.url);
|
||||||
shareUrl.search = params.toString();
|
shareUrl.search = params.toString();
|
||||||
@@ -178,9 +189,25 @@
|
|||||||
|
|
||||||
onMount(() => {
|
onMount(() => {
|
||||||
const params = new URLSearchParams($page.url.search);
|
const params = new URLSearchParams($page.url.search);
|
||||||
if (params.has('v1')) { val1 = params.get('v1')!; handleInput(1); }
|
const srcParam = Number(params.get('src'));
|
||||||
else if (params.has('v2')) { val2 = params.get('v2')!; handleInput(2); }
|
const shareSource = srcParam === 1 || srcParam === 2 || srcParam === 3 ? srcParam : null;
|
||||||
else if (params.has('v3') && has3) { val3 = params.get('v3')!; handleInput(3); }
|
|
||||||
|
if (shareSource !== null) {
|
||||||
|
if (params.has('v1')) val1 = params.get('v1') ?? '';
|
||||||
|
if (params.has('v2')) val2 = params.get('v2') ?? '';
|
||||||
|
if (params.has('v3') && has3) val3 = params.get('v3') ?? '';
|
||||||
|
const sourceToApply: 1 | 2 | 3 = has3 ? shareSource : (shareSource === 2 ? 2 : 1);
|
||||||
|
handleInput(sourceToApply);
|
||||||
|
} else if (params.has('v1')) {
|
||||||
|
val1 = params.get('v1') ?? '';
|
||||||
|
handleInput(1);
|
||||||
|
} else if (params.has('v2')) {
|
||||||
|
val2 = params.get('v2') ?? '';
|
||||||
|
handleInput(2);
|
||||||
|
} else if (params.has('v3') && has3) {
|
||||||
|
val3 = params.get('v3') ?? '';
|
||||||
|
handleInput(3);
|
||||||
|
}
|
||||||
setTimeout(() => { paramsInitializing = false; }, 0);
|
setTimeout(() => { paramsInitializing = false; }, 0);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user