import { usePathname, useRouter, useSearchParams } from 'next/navigation';
const useHandleParams = () => {
const searchParams = useSearchParams();
const router = useRouter();
const pathname = usePathname();
const setParams = (name:string, value:string) => {
const params = new URLSearchParams(searchParams.toString());
params.set(name, value);
if(value === 'all')params.delete(name)
router.push(pathname + "?" + params.toString());
};
const setMultipleParams = (paramsObj: Record<string, string>) => {
const params = new URLSearchParams(searchParams.toString());
Object.entries(paramsObj).forEach(([key, value]) => {
params.set(key, value);
});
router.push(pathname + "?" + params.toString());
};
const getParam=(name:string)=>{
const params = new URLSearchParams(searchParams.toString());
return params.get(name) || ""
}
const getAllParams=()=>{
const params = new URLSearchParams(searchParams.toString());
return Object.fromEntries(params)
}
const removeParam=(name:string)=>{
const params = new URLSearchParams(searchParams.toString());
params.delete(name)
router.push(pathname + "?" + params.toString());
}
const clearParams=()=>{
router.push(pathname);
}
return {
setParams,
getParam,
setMultipleParams,
removeParam,
clearParams,
getAllParams
}
}
export default useHandleParams