Openstatus
www.openstatus.dev
1import { useSearchParams } from "next/navigation";
2import * as React from "react";
3
4/**
5 *
6 * @deprecated use `nuqs` instead
7 */
8export default function useUpdateSearchParams() {
9 const searchParams = useSearchParams();
10
11 /**
12 * Get a new searchParams string by merging the current searchParams with a provided key/value pair.
13 * If param is `null`, will be deleted.
14 */
15 const update = React.useCallback(
16 (params: Record<string, boolean | string | number | null>) => {
17 const newSearchParams = new URLSearchParams(searchParams?.toString());
18
19 for (const [key, value] of Object.entries(params)) {
20 if (value === null) {
21 newSearchParams.delete(key);
22 } else {
23 newSearchParams.set(key, String(value));
24 }
25 }
26
27 return newSearchParams.toString();
28 },
29 [searchParams],
30 );
31
32 return update;
33}