26d675e162
* WIP * Missing translation * Default duration clears correctly * Fixing hydration error * Applying feedback Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com> Co-authored-by: Peer Richelsen <peeroke@gmail.com>
19 lines
718 B
TypeScript
19 lines
718 B
TypeScript
import { useRouter } from "next/router";
|
|
|
|
export default function useRouterQuery<T extends string>(name: T) {
|
|
const router = useRouter();
|
|
const existingQueryParams = router.asPath.split("?")[1];
|
|
|
|
const urlParams = new URLSearchParams(existingQueryParams);
|
|
const query = Object.fromEntries(urlParams);
|
|
|
|
const setQuery = (newValue: string | number | null | undefined) => {
|
|
router.replace({ query: { ...router.query, [name]: newValue } }, undefined, { shallow: true });
|
|
router.replace({ query: { ...router.query, ...query, [name]: newValue } }, undefined, { shallow: true });
|
|
};
|
|
|
|
return { [name]: query[name], setQuery } as {
|
|
[K in T]: string | undefined;
|
|
} & { setQuery: typeof setQuery };
|
|
}
|