import { root } from '@repo/core' import { type ListPublicRecommendedTemplatesInput, type ListPublicRecommendedTemplatesResult, RecommendedTemplateController, } from '@repo/sdk' import { useCallback, useState } from 'react' import { type ApiError } from '@/lib/types' import { handleError } from './use-error' export const usePublicTemplates = () => { const [loading, setLoading] = useState(false) const [error, setError] = useState(null) const [data, setData] = useState() const execute = useCallback(async (params?: ListPublicRecommendedTemplatesInput) => { setLoading(true) setError(null) const recommendedTemplate = root.get(RecommendedTemplateController) const { data, error } = await handleError( async () => await recommendedTemplate.listPublic({ limit: params?.limit || 20, sortBy: params?.sortBy || 'sortOrder', sortOrder: params?.sortOrder || 'desc', }), ) if (error) { setError(error) setLoading(false) return { data: undefined, error } } setData(data) setLoading(false) return { data, error: null } }, []) const refetch = useCallback( (params?: ListPublicRecommendedTemplatesInput) => { return execute(params) }, [execute], ) return { data, loading, error, execute, refetch, } }