Skip to content

Commit 8623a9a

Browse files
committed
feat: create helper to parse search params
1 parent 045a4b9 commit 8623a9a

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

src/helpers.tsx

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
import React from 'react';
2+
import {
3+
useSearchParams
4+
} from 'react-router-dom';
25
import {
36
Divider,
47
DividerProps
@@ -23,3 +26,29 @@ export function insertDividerBetweenElements({
2326
}
2427
</>);
2528
}
29+
30+
export function getSearchParams(
31+
requiredParams: Record<string, any> = {},
32+
optionalParams: Record<string, any> = {}
33+
): Record<string, any> | null {
34+
const searchParams = useSearchParams()[0];
35+
36+
if (Object
37+
.keys(requiredParams)
38+
.some(name => searchParams.get(name) === null)
39+
) { return null; }
40+
41+
const params = {
42+
...requiredParams,
43+
...Object.fromEntries(
44+
Object.keys(optionalParams)
45+
.filter(name => searchParams.get(name) !== null)
46+
.map(name => [name, optionalParams[name]])
47+
)
48+
};
49+
50+
return Object.fromEntries(
51+
Object.entries(params)
52+
.map(([key, value]) => [key, value(searchParams.get(key))])
53+
);
54+
}

tsconfig.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
"target": "es5",
66
"lib": [
77
"es6",
8+
"esnext",
89
"dom",
910
"es2016",
1011
"es2017"

0 commit comments

Comments
 (0)