diff --git a/src/components/Tables/admins/useAdminsPresenter.ts b/src/components/Tables/admins/useAdminsPresenter.ts index b90ee65..c42ddaa 100644 --- a/src/components/Tables/admins/useAdminsPresenter.ts +++ b/src/components/Tables/admins/useAdminsPresenter.ts @@ -2,16 +2,16 @@ import { apiDefaultParams } from "@/constants/Api_Params"; import { AdminStatus } from "@/constants/enums"; -import { deleteEmptyKeys } from "@/utils/shared"; import { useChangeAdminStatus, useDeleteAdmin, useGetAdminListQuery, } from "@/hooks/queries"; -import { API_ENDPOINTS, IUser, TChangeAdminStatusCredentials } from "@/lib/api"; -import { useIsMutating, useQueryClient } from "@tanstack/react-query"; -import { usePathname, useRouter } from "next/navigation"; -import { useState } from "react"; +import { IUser, TChangeAdminStatusCredentials } from "@/lib/api"; +import { deleteEmptyKeys } from "@/utils/shared"; +import { useIsMutating } from "@tanstack/react-query"; +import { usePathname, useRouter, useSearchParams } from "next/navigation"; +import { useEffect, useState } from "react"; import { useForm } from "react-hook-form"; export const useAdminsPresenter = () => { @@ -24,9 +24,12 @@ export const useAdminsPresenter = () => { ); const isMutating = useIsMutating(); const router = useRouter(); - const { register: filterRegister, handleSubmit: handleFilterSubmit } = - useForm(); - const queryClient = useQueryClient(); + const searchParams = useSearchParams(); + const { + register: filterRegister, + handleSubmit: handleFilterSubmit, + reset: filterFormReset, + } = useForm(); const { register, @@ -38,12 +41,21 @@ export const useAdminsPresenter = () => { status: currentUser?.status, }, }); - const [params, setParams] = useState>({ - ...apiDefaultParams, - offset: 0, - limit: 10, - }); + const [params, setParams] = useState>({}); const pathName = usePathname(); + + useEffect(() => { + const newParams: Record = { + ...apiDefaultParams, + offset: 0, + limit: 10, + }; + for (const [key, value] of searchParams.entries()) { + newParams[key] = value; + } + setParams(newParams); + filterFormReset(newParams); + }, [searchParams, filterFormReset]); const { data, isPending } = useGetAdminListQuery(params); const { mutate: deleteAdmin } = useDeleteAdmin(() => { setIsModalOpen(false); @@ -62,10 +74,10 @@ export const useAdminsPresenter = () => { }); const search = (data: any) => { - setParams((prevParams) => { - const newParams = { ...prevParams, ...data, offset: 0 }; - return deleteEmptyKeys(newParams); - }); + const newParams = { ...params, ...data, offset: 0 }; + const cleanedParams = deleteEmptyKeys(newParams); + const queryString = new URLSearchParams(cleanedParams).toString(); + router.push(`${pathName}?${queryString}`); setIsFilterModalOpen(false); }; const allUsers = data?.data?.users ?? [];