UNPKG

analytica-frontend-lib

Version:

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

220 lines 8.53 kB
import { z } from 'zod'; import { ActivityDraftType } from '../types/activitiesHistory'; import type { ActivityModelResponse, ActivityModelTableItem, ActivityModelsApiResponse, ActivityModelFilters, ActivityPagination } from '../types/activitiesHistory'; /** * Zod schema for activity models API response validation */ export declare const activityModelsApiResponseSchema: z.ZodObject<{ message: z.ZodString; data: z.ZodObject<{ activityDrafts: z.ZodArray<z.ZodObject<{ id: z.ZodString; type: z.ZodNativeEnum<typeof ActivityDraftType>; title: z.ZodNullable<z.ZodString>; creatorUserInstitutionId: z.ZodNullable<z.ZodString>; subjectId: z.ZodNullable<z.ZodString>; filters: z.ZodNullable<z.ZodObject<{ questionTypes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>; questionBanks: z.ZodOptional<z.ZodArray<z.ZodString, "many">>; subjects: z.ZodOptional<z.ZodArray<z.ZodString, "many">>; topics: z.ZodOptional<z.ZodArray<z.ZodString, "many">>; subtopics: z.ZodOptional<z.ZodArray<z.ZodString, "many">>; contents: z.ZodOptional<z.ZodArray<z.ZodString, "many">>; }, "strip", z.ZodTypeAny, { contents?: string[] | undefined; questionTypes?: string[] | undefined; topics?: string[] | undefined; subtopics?: string[] | undefined; subjects?: string[] | undefined; questionBanks?: string[] | undefined; }, { contents?: string[] | undefined; questionTypes?: string[] | undefined; topics?: string[] | undefined; subtopics?: string[] | undefined; subjects?: string[] | undefined; questionBanks?: string[] | undefined; }>>; createdAt: z.ZodString; updatedAt: z.ZodString; }, "strip", z.ZodTypeAny, { id: string; type: ActivityDraftType; title: string | null; createdAt: string; filters: { contents?: string[] | undefined; questionTypes?: string[] | undefined; topics?: string[] | undefined; subtopics?: string[] | undefined; subjects?: string[] | undefined; questionBanks?: string[] | undefined; } | null; subjectId: string | null; updatedAt: string; creatorUserInstitutionId: string | null; }, { id: string; type: ActivityDraftType; title: string | null; createdAt: string; filters: { contents?: string[] | undefined; questionTypes?: string[] | undefined; topics?: string[] | undefined; subtopics?: string[] | undefined; subjects?: string[] | undefined; questionBanks?: string[] | undefined; } | null; subjectId: string | null; updatedAt: string; creatorUserInstitutionId: string | null; }>, "many">; total: z.ZodNumber; }, "strip", z.ZodTypeAny, { total: number; activityDrafts: { id: string; type: ActivityDraftType; title: string | null; createdAt: string; filters: { contents?: string[] | undefined; questionTypes?: string[] | undefined; topics?: string[] | undefined; subtopics?: string[] | undefined; subjects?: string[] | undefined; questionBanks?: string[] | undefined; } | null; subjectId: string | null; updatedAt: string; creatorUserInstitutionId: string | null; }[]; }, { total: number; activityDrafts: { id: string; type: ActivityDraftType; title: string | null; createdAt: string; filters: { contents?: string[] | undefined; questionTypes?: string[] | undefined; topics?: string[] | undefined; subtopics?: string[] | undefined; subjects?: string[] | undefined; questionBanks?: string[] | undefined; } | null; subjectId: string | null; updatedAt: string; creatorUserInstitutionId: string | null; }[]; }>; }, "strip", z.ZodTypeAny, { data: { total: number; activityDrafts: { id: string; type: ActivityDraftType; title: string | null; createdAt: string; filters: { contents?: string[] | undefined; questionTypes?: string[] | undefined; topics?: string[] | undefined; subtopics?: string[] | undefined; subjects?: string[] | undefined; questionBanks?: string[] | undefined; } | null; subjectId: string | null; updatedAt: string; creatorUserInstitutionId: string | null; }[]; }; message: string; }, { data: { total: number; activityDrafts: { id: string; type: ActivityDraftType; title: string | null; createdAt: string; filters: { contents?: string[] | undefined; questionTypes?: string[] | undefined; topics?: string[] | undefined; subtopics?: string[] | undefined; subjects?: string[] | undefined; questionBanks?: string[] | undefined; } | null; subjectId: string | null; updatedAt: string; creatorUserInstitutionId: string | null; }[]; }; message: string; }>; /** * Hook state interface */ export interface UseActivityModelsState { models: ActivityModelTableItem[]; loading: boolean; error: string | null; pagination: ActivityPagination; } /** * Hook return type */ export interface UseActivityModelsReturn extends UseActivityModelsState { fetchModels: (filters?: ActivityModelFilters, subjectsMap?: Map<string, string>) => Promise<void>; deleteModel: (id: string) => Promise<boolean>; } /** * Default pagination values */ export declare const DEFAULT_MODELS_PAGINATION: ActivityPagination; /** * Transform API response to table item format * @param model - Activity model from API response * @param subjectsMap - Map of subject IDs to subject names * @returns Formatted model for table display */ export declare const transformModelToTableItem: (model: ActivityModelResponse, subjectsMap?: Map<string, string>) => ActivityModelTableItem; /** * Handle errors during model fetch * Uses the generic error handler factory to reduce code duplication */ export declare const handleModelFetchError: (error: unknown) => string; /** * Factory function to create useActivityModels hook * * @param fetchActivityModels - Function to fetch models from API * @param deleteActivityModel - Function to delete a model * @returns Hook for managing activity models * * @example * ```tsx * // In your app setup * const fetchActivityModels = async (filters) => { * const response = await api.get('/activity-drafts', { params: { ...filters, type: 'MODELO' } }); * return response.data; * }; * * const deleteActivityModel = async (id) => { * await api.delete(`/activity-drafts/${id}`); * }; * * const useActivityModels = createUseActivityModels(fetchActivityModels, deleteActivityModel); * * // In your component * const { models, loading, error, pagination, fetchModels, deleteModel } = useActivityModels(); * ``` */ export declare const createUseActivityModels: (fetchActivityModels: (filters?: ActivityModelFilters) => Promise<ActivityModelsApiResponse>, deleteActivityModel: (id: string) => Promise<void>) => () => UseActivityModelsReturn; /** * Alias for createUseActivityModels */ export declare const createActivityModelsHook: (fetchActivityModels: (filters?: ActivityModelFilters) => Promise<ActivityModelsApiResponse>, deleteActivityModel: (id: string) => Promise<void>) => () => UseActivityModelsReturn; //# sourceMappingURL=useActivityModels.d.ts.map