analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
141 lines (137 loc) • 4.53 kB
JavaScript
// src/hooks/useActivitiesHistory.ts
import { useState, useCallback } from "react";
import { z as z2 } from "zod";
import dayjs from "dayjs";
// src/types/common.ts
var GenericApiStatus = /* @__PURE__ */ ((GenericApiStatus2) => {
GenericApiStatus2["A_VENCER"] = "A_VENCER";
GenericApiStatus2["VENCIDA"] = "VENCIDA";
GenericApiStatus2["CONCLUIDA"] = "CONCLUIDA";
return GenericApiStatus2;
})(GenericApiStatus || {});
var mapApiStatusToDisplay = (apiStatus) => {
const statusMap = {
["A_VENCER" /* A_VENCER */]: "ATIVA" /* ATIVA */,
["VENCIDA" /* VENCIDA */]: "VENCIDA" /* VENCIDA */,
["CONCLUIDA" /* CONCLUIDA */]: "CONCLU\xCDDA" /* CONCLUIDA */
};
return statusMap[apiStatus];
};
// src/types/activitiesHistory.ts
var ACTIVITY_FILTER_STATUS_OPTIONS = [
{ id: "A_VENCER" /* A_VENCER */, name: "A Vencer" },
{ id: "VENCIDA" /* VENCIDA */, name: "Vencida" },
{ id: "CONCLUIDA" /* CONCLUIDA */, name: "Conclu\xEDda" }
];
var mapActivityStatusToDisplay = (apiStatus) => mapApiStatusToDisplay(apiStatus);
// src/utils/hookErrorHandler.ts
import { z } from "zod";
var createFetchErrorHandler = (validationErrorMessage, genericErrorMessage) => (error) => {
if (error instanceof z.ZodError) {
console.error(validationErrorMessage, error);
return validationErrorMessage;
}
console.error(genericErrorMessage, error);
return genericErrorMessage;
};
// src/hooks/useActivitiesHistory.ts
var activityHistoryResponseSchema = z2.object({
id: z2.string().uuid(),
title: z2.string(),
startDate: z2.string().nullable(),
finalDate: z2.string().nullable(),
status: z2.nativeEnum(GenericApiStatus),
completionPercentage: z2.number().min(0).max(100),
subjectId: z2.string().uuid().optional().nullable(),
schoolId: z2.string().optional(),
schoolName: z2.string().optional(),
year: z2.string().optional(),
className: z2.string().optional(),
subjectName: z2.string().optional()
});
var activitiesHistoryApiResponseSchema = z2.object({
message: z2.string(),
data: z2.object({
activities: z2.array(activityHistoryResponseSchema),
pagination: z2.object({
total: z2.number(),
page: z2.number(),
limit: z2.number(),
totalPages: z2.number()
})
})
});
var DEFAULT_ACTIVITIES_PAGINATION = {
total: 0,
page: 1,
limit: 10,
totalPages: 0
};
var transformActivityToTableItem = (activity) => {
return {
id: activity.id,
startDate: activity.startDate ? dayjs(activity.startDate).format("DD/MM") : "-",
deadline: activity.finalDate ? dayjs(activity.finalDate).format("DD/MM") : "-",
title: activity.title,
school: activity.schoolName || "-",
year: activity.year || "-",
subject: activity.subjectName || "-",
class: activity.className || "-",
status: mapActivityStatusToDisplay(activity.status),
completionPercentage: activity.completionPercentage
};
};
var handleActivityFetchError = createFetchErrorHandler(
"Erro ao validar dados de hist\xF3rico de atividades",
"Erro ao carregar hist\xF3rico de atividades"
);
var createUseActivitiesHistory = (fetchActivitiesHistory) => {
return () => {
const [state, setState] = useState({
activities: [],
loading: false,
error: null,
pagination: DEFAULT_ACTIVITIES_PAGINATION
});
const fetchActivities = useCallback(
async (filters) => {
setState((prev) => ({ ...prev, loading: true, error: null }));
try {
const responseData = await fetchActivitiesHistory(filters);
const validatedData = activitiesHistoryApiResponseSchema.parse(responseData);
const tableItems = validatedData.data.activities.map(
transformActivityToTableItem
);
setState({
activities: tableItems,
loading: false,
error: null,
pagination: validatedData.data.pagination
});
} catch (error) {
const errorMessage = handleActivityFetchError(error);
setState((prev) => ({
...prev,
loading: false,
error: errorMessage
}));
}
},
[fetchActivitiesHistory]
);
return {
...state,
fetchActivities
};
};
};
var createActivitiesHistoryHook = createUseActivitiesHistory;
export {
DEFAULT_ACTIVITIES_PAGINATION,
activitiesHistoryApiResponseSchema,
createActivitiesHistoryHook,
createUseActivitiesHistory,
handleActivityFetchError,
transformActivityToTableItem
};
//# sourceMappingURL=index.mjs.map