aboutsummaryrefslogtreecommitdiff
path: root/FrontEnd/src/utilities/url.ts
blob: 9700d8615b4ec0e65c6859c327e923aa0b326ee7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
export function withQuery<T>(url: string, query: T): string {
  if (query == null) return url;

  const params = new URLSearchParams();

  for (const [key, value] of Object.entries(query)) {
    if (value == null) void 0;
    else if (typeof value === "string") params.set(key, value);
    else if (typeof value === "number") params.set(key, String(value));
    else if (typeof value === "boolean") params.set(key, String(value));
    else if (value instanceof Date) params.set(key, value.toISOString());
    else {
      console.error("Unknown query parameter type. Param: ", value);
    }
  }

  const p = params.toString();

  if (p == "") {
    return url;
  }

  return url + "?" + p;
}