import { ApiError, PaginationParams } from "@/lib/types" import { useState, useCallback } from "react" import { root } from '@repo/core' import { TemplateGenerationController } from "@repo/sdk" import { useError } from "./use-error" type ApiListResult = Awaited> type ApiData = NonNullable export type TemplateGeneration = ApiData['data'][number] type ListResponse = ApiData interface ListParams extends PaginationParams { userId?: string templateId?: string status?: "pending" | "processing" | "completed" | "failed" search?: string } export const useTemplateGenerations = () => { const [loading, setLoading] = useState(false) const [error, setError] = useState(null) const [data, setData] = useState() const load = useCallback(async (params?: ListParams) => { setLoading(true) setError(null) const templateGeneration = root.get(TemplateGenerationController) const { data, error } = await useError(async () => await templateGeneration.list({ page: params?.page || 1, limit: params?.limit || 20, ...params })) if (error) { setError(error) setLoading(false) return { data: undefined, error } } setData(data) setLoading(false) return { data, error: null } }, []) const refetch = useCallback((params?: ListParams) => { return load(params) }, [load]) return { data, loading, error, load, refetch, } }