aboutsummaryrefslogtreecommitdiff
path: root/src/lib/Utility/parameters.ts
blob: 0715475499c6ec19b25416242d3df0a4fea1593a (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 { browser } from '$app/environment';
import { page } from '$app/stores';
import { get } from 'svelte/store';

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);