import { ApiError } from "@/lib/types" import { useState, useCallback } from "react" import { root } from '@repo/core' import { TemplateController, TemplateGenerationController, RunTemplateInput, CreateTemplateGenerationInput } from "@repo/sdk" import { useError } from "../data/use-error" export const useTemplateActions = () => { const [loading, setLoading] = useState(false) const [error, setError] = useState(null) const runTemplate = useCallback(async (params: RunTemplateInput) => { setLoading(true) setError(null) const template = root.get(TemplateController) const { data, error } = await useError(async () => await template.run(params)) if (error) { setError(error) setLoading(false) return { generationId: null, error } } setLoading(false) return { generationId: data?.generationId, error: null } }, []) const createGeneration = useCallback(async (params: CreateTemplateGenerationInput) => { setLoading(true) setError(null) const templateGeneration = root.get(TemplateGenerationController) const { data, error } = await useError(async () => await templateGeneration.create(params)) if (error) { setError(error) setLoading(false) return { generation: null, error } } setLoading(false) return { generation: data, error: null } }, []) const deleteGeneration = useCallback(async (id: string) => { setLoading(true) setError(null) const templateGeneration = root.get(TemplateGenerationController) const { data, error } = await useError(async () => await templateGeneration.delete({ id })) if (error) { setError(error) setLoading(false) return { success: false, error } } setLoading(false) return { success: true, message: data?.message, error: null } }, []) const batchDeleteGenerations = useCallback(async (ids: string[]) => { setLoading(true) setError(null) const templateGeneration = root.get(TemplateGenerationController) const { data, error } = await useError(async () => await templateGeneration.batchDelete({ ids })) if (error) { setError(error) setLoading(false) return { success: false, error } } setLoading(false) return { success: true, message: data?.message, error: null } }, []) return { loading, error, runTemplate, createGeneration, deleteGeneration, batchDeleteGenerations, } }