"use client";
import { trpc } from "@/app/_trpc/client";
import useFormHandler from "@/hooks/useFormHandler";
import { logsSchema } from "@/lib/schemas/logsSchema";
import { useEffect, useState } from "react";
import { z } from "zod";
const logsSchemaModified = logsSchema.extend({
startDate: z.date().optional(),
endDate: z.date().optional(),
})
const getTomorrowDate = () => {
const tomorrow = new Date();
tomorrow.setDate(tomorrow.getDate() + 1);
return tomorrow;
};
const useLogPage = () => {
const [paginationParams, setPaginationParams] = useState<
z.infer<typeof logsSchemaModified>
>({
limit: 10,
startDate: new Date(),
endDate: getTomorrowDate(),
cursor: undefined,
});
const [results, setResults] = useState<any>([]);
const { form, isInputChanged, setIsInputChanged } = useFormHandler(
logsSchemaModified,
paginationParams
);
const { data, isPending, error,isError} =
trpc.eventLogs.getLogs.useQuery({...paginationParams,startDate:paginationParams.startDate?.toISOString(),endDate:paginationParams.endDate?.toISOString()});
useEffect(() => {
if (!data?.data) return;
setResults([...results,...data?.data]);
}, [paginationParams, data]) // eslint-disable-next-line react-hooks/exhaustive-deps
//filtra registros por fecha
const onSubmit = (values: z.infer<typeof logsSchemaModified>) => {
setResults([]);
//reinicia cursor cuandos se filtra por fecha
setPaginationParams({
...paginationParams,
startDate: values.startDate,
endDate: values.endDate,
cursor: undefined,
});
};
return {
onSubmit,
isInputChanged,
results,
cursor:data?.cursor || undefined ,
form,
isError,
isPending,
setPaginationParams
};
};
export default useLogPage;