/* eslint-disable @typescript-eslint/no-explicit-any */ import { AxiosError, HttpStatusCode } from "axios"; import { toast } from "sonner"; export const handleError = (error: unknown) => { // eslint-disable-next-line @typescript-eslint/no-explicit-any const response = (error as AxiosError).response as Record; const data = response.data; if (response.status === HttpStatusCode.Forbidden) return; if (data?.errors && (data.errors as []).length) { let newMessage = data.errors[0].errors[0]; if ((data.errors as []).length > 1) { newMessage = newMessage + ` and ${data.errors.length} errors`; } toast.error(newMessage || "Internal Server Error"); return; } toast.error((response?.data.message as string) || "Internal Server Error"); }; export const handleSuccess = (data: IResponse, key?: string) => { toast.success(data.message.replaceAll("@key", key || "")); }; export function generateNestParams(params: Record) { const excludeKeys = ["page"]; const prefixSortKey = ""; if (!params) return params; const newParams = Object.keys(params).reduce((prev, cur) => { if (excludeKeys.includes(cur)) { prev[cur] = params[cur]; } else if (cur.includes(prefixSortKey)) { prev["sortBy"] = `${cur.replace("", "")}:${String( params[cur] ).toLocaleUpperCase()}`; } else if (cur === "per_page") { prev["limit"] = params[cur]; } else if (cur === "") { prev["search"] = params[cur]; } else { prev[`filter.${cur}`] = params[cur]; } return prev; }, {} as Record); return newParams; }