Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | 1x 1x 1x 1x | import { CatalogSearchSort } from "../../api/catalog-search/constants";
import { CDKType } from "../../constants/constructs";
import { Language } from "../../constants/languages";
import { QUERY_PARAMS } from "../../constants/url";
export const toNum = (val: string) => {
const result = parseInt(val);
if (`${result}` === "NaN") {
return 0;
}
return result;
};
export const parseQueryArray = <T extends string>(
queryString: string | null
) => {
if (!queryString) return [];
return decodeURIComponent(queryString).split(",") as T[];
};
const getParamFromUrl = (key: string) => {
if (typeof window === "undefined") return null;
const queryParams = new URL(window.location.href).searchParams;
return queryParams.get(key);
};
export const getSearchUrlParams = () => {
return {
query: getParamFromUrl(QUERY_PARAMS.SEARCH_QUERY) ?? "",
keywords: parseQueryArray(getParamFromUrl(QUERY_PARAMS.KEYWORDS)),
cdkType: (getParamFromUrl(QUERY_PARAMS.CDK_TYPE) as CDKType) ?? undefined,
cdkMajor: (() => {
const cdkMajorParam = getParamFromUrl(QUERY_PARAMS.CDK_MAJOR);
return cdkMajorParam ? toNum(cdkMajorParam) : undefined;
})(),
languages: parseQueryArray(
getParamFromUrl(QUERY_PARAMS.LANGUAGES)
) as Language[],
offset: toNum(getParamFromUrl(QUERY_PARAMS.OFFSET) ?? ""),
sort:
(getParamFromUrl(QUERY_PARAMS.SORT) as CatalogSearchSort) ?? undefined,
tags: parseQueryArray(getParamFromUrl(QUERY_PARAMS.TAGS)),
};
};
|