aboutsummaryrefslogtreecommitdiff
path: root/src/lib/Utility/parameters.ts
blob: add0b8f8e79a643f5d67fd7b271f806d852a90c2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import { get } from "svelte/store";
import { browser } from "$app/environment";
import { page } from "$app/stores";

export const clearAllParameters = (saved: string[] = []) => {
	if (browser) {
		if (get(page).url.searchParams.size === 0) return;

		const parameters = new URLSearchParams();

		saved.forEach((key) => {
			if (get(page).url.searchParams.has(key)) {
				parameters.set(key, get(page).url.searchParams.get(key) || "");
			}
		});
		history.replaceState(null, "", `${get(page).url.pathname}?${parameters}`);
	}
};

export const parseOrDefault = <T = string | number>(
	urlParameters: URLSearchParams | null,
	parameter: string,
	fallback: T,
): T =>
	typeof fallback === "number"
		? ((browser && urlParameters?.size !== 0
				? parseInt(urlParameters?.get(parameter) || "", 10) || fallback
				: fallback) as T)
		: ((browser && urlParameters?.size !== 0
				? urlParameters?.get(parameter) || fallback
				: fallback) as T);