From c11ecbb323107a3d9ee9325bab074e7d35828efb Mon Sep 17 00:00:00 2001 From: sean-brydon <55134778+sean-brydon@users.noreply.github.com> Date: Wed, 29 Nov 2023 22:51:47 +0000 Subject: [PATCH] Fix:use typed query initially fill default paramaters (#12568) --- packages/lib/hooks/useTypedQuery.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/lib/hooks/useTypedQuery.ts b/packages/lib/hooks/useTypedQuery.ts index 7fb61414d0..974c0ede25 100644 --- a/packages/lib/hooks/useTypedQuery.ts +++ b/packages/lib/hooks/useTypedQuery.ts @@ -1,5 +1,5 @@ import { usePathname, useRouter } from "next/navigation"; -import { useCallback, useMemo } from "react"; +import { useCallback, useMemo, useEffect } from "react"; import { z } from "zod"; import { useRouterQuery } from "./useRouterQuery"; @@ -46,6 +46,17 @@ export function useTypedQuery(schema: T) { return {} as Output; }, []); + useEffect(() => { + if (parsedQuerySchema.success && parsedQuerySchema.data) { + Object.entries(parsedQuerySchema.data).forEach(([key, value]) => { + if (key in unparsedQuery || !value) return; + const search = new URLSearchParams(parsedQuery); + search.set(String(key), String(value)); + router.replace(`${pathname}?${search.toString()}`); + }); + } + }, [parsedQuerySchema, schema, router, pathname, unparsedQuery, parsedQuery]); + if (parsedQuerySchema.success) parsedQuery = parsedQuerySchema.data; else if (!parsedQuerySchema.success) console.error(parsedQuerySchema.error);