UNPKG

analytica-frontend-lib

Version:

Repositório público dos componentes utilizados nas plataformas da Analytica Ensino

130 lines (129 loc) 3.55 kB
// src/hooks/useActivityDrafts.ts import { useState, useCallback } from "react"; import dayjs from "dayjs"; var DEFAULT_DRAFTS_PAGINATION = { total: 0, page: 1, limit: 10, totalPages: 0 }; var transformDraftToTableItem = (draft, subjectsMap) => { let subject = draft.subject; if (!subject && draft.subjectId && subjectsMap) { const subjectName = subjectsMap.get(draft.subjectId); if (subjectName) { subject = { id: draft.subjectId, name: subjectName, icon: "BookOpen", color: "#6B7280" }; } } const activityType = draft.type === "MODELO" /* MODELO */ ? "MODELO" /* MODELO */ : "RASCUNHO" /* RASCUNHO */; return { id: draft.id, type: activityType, title: draft.title || "Sem t\xEDtulo", savedAt: draft.updatedAt ? dayjs(draft.updatedAt).format("DD/MM/YYYY") : "-", subject: subject || null, subjectId: draft.subjectId }; }; var buildQueryParams = (filters, activityCategory) => { const params = { type: "RASCUNHO" /* RASCUNHO */ // drafts = RASCUNHO }; if (activityCategory) { params.activityType = activityCategory; } if (filters) { for (const key in filters) { const value = filters[key]; if (value !== void 0 && value !== null) { params[key] = value; } } } return params; }; var useActivityDraftsImpl = (apiClient, options) => { const [state, setState] = useState({ drafts: [], loading: false, error: null, pagination: DEFAULT_DRAFTS_PAGINATION }); const fetchDrafts = useCallback( async (filters = {}) => { setState((prev) => ({ ...prev, loading: true, error: null })); try { const params = buildQueryParams(filters, options?.activityCategory); const response = await apiClient.get( "/activity-drafts", { params } ); const tableItems = response.data.data.activityDrafts.map( (draft) => transformDraftToTableItem(draft) ); const limit = filters.limit || 10; const total = response.data.data.total; setState({ drafts: tableItems, loading: false, error: null, pagination: { total, page: filters.page || 1, limit, totalPages: Math.ceil(total / limit) } }); } catch (error) { console.error("Erro ao carregar rascunhos:", error); setState((prev) => ({ ...prev, loading: false, error: "Erro ao carregar rascunhos" })); } }, [apiClient, options?.activityCategory] ); const deleteDraft = useCallback( async (id) => { try { await apiClient.delete(`/activity-drafts/${id}`); setState((prev) => ({ ...prev, drafts: prev.drafts.filter((d) => d.id !== id), pagination: { ...prev.pagination, total: Math.max(0, prev.pagination.total - 1) } })); } catch (error) { console.error("Erro ao deletar rascunho:", error); throw error; } }, [apiClient] ); return { ...state, fetchDrafts, deleteDraft }; }; var createUseActivityDrafts = (apiClient, options) => { return () => useActivityDraftsImpl(apiClient, options); }; var createActivityDraftsHook = createUseActivityDrafts; export { DEFAULT_DRAFTS_PAGINATION, transformDraftToTableItem, createUseActivityDrafts, createActivityDraftsHook }; //# sourceMappingURL=chunk-YVZ5XEW4.mjs.map