analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
101 lines • 4.36 kB
TypeScript
import { z } from 'zod';
import { RecommendedClassDisplayStatus } from '../../types/recommendedLessons';
import type { RecommendedClassHistoryItem, RecommendedClassTableItem, RecommendedClassHistoryApiResponse, RecommendedClassHistoryFilters, RecommendedClassHistoryPagination } from '../../types/recommendedLessons';
export declare const recommendedClassHistoryApiResponseSchema: z.ZodObject<{
message: z.ZodString;
data: z.ZodObject<{
recommendedClass: z.ZodArray<z.ZodObject<{
recommendedClass: z.ZodObject<{
id: z.ZodString;
title: z.ZodString;
startDate: z.ZodNullable<z.ZodString>;
finalDate: z.ZodNullable<z.ZodString>;
createdAt: z.ZodString;
progress: z.ZodNumber;
totalLessons: z.ZodNumber;
}, z.core.$strip>;
subject: z.ZodNullable<z.ZodObject<{
id: z.ZodString;
name: z.ZodString;
}, z.core.$strip>>;
creator: z.ZodNullable<z.ZodObject<{
id: z.ZodString;
name: z.ZodString;
}, z.core.$strip>>;
stats: z.ZodObject<{
totalStudents: z.ZodNumber;
completedCount: z.ZodNumber;
completionPercentage: z.ZodNumber;
}, z.core.$strip>;
breakdown: z.ZodArray<z.ZodObject<{
classId: z.ZodString;
className: z.ZodString;
schoolId: z.ZodString;
schoolName: z.ZodString;
studentCount: z.ZodNumber;
completedCount: z.ZodNumber;
}, z.core.$strip>>;
}, z.core.$strip>>;
total: z.ZodNumber;
}, z.core.$strip>;
}, z.core.$strip>;
/**
* Hook state interface
*/
export interface UseRecommendedLessonsHistoryState {
recommendedClass: RecommendedClassTableItem[];
loading: boolean;
error: string | null;
pagination: RecommendedClassHistoryPagination;
}
/**
* Hook return type
*/
export interface UseRecommendedLessonsHistoryReturn extends UseRecommendedLessonsHistoryState {
fetchRecommendedClass: (filters?: RecommendedClassHistoryFilters) => Promise<void>;
}
/**
* Determine status based on dates and completion
* @param finalDate - RecommendedClass final date
* @param completionPercentage - Completion percentage
* @returns Display status for UI
*/
export declare const determineRecommendedClassStatus: (finalDate: string | null, completionPercentage: number) => RecommendedClassDisplayStatus;
/**
* Transform API response to table item format
* @param item - RecommendedClass history item from API response
* @returns Formatted recommendedClass for table display
*/
export declare const transformRecommendedClassToTableItem: (item: RecommendedClassHistoryItem) => RecommendedClassTableItem;
/**
* Handle errors during recommendedClass fetch
* @param error - Error object
* @returns Error message for UI display
*/
export declare const handleRecommendedClassFetchError: (error: unknown) => string;
/**
* Factory function to create useRecommendedLessonsHistory hook
*
* @param fetchRecommendedClassHistory - Function to fetch recommendedClass from API
* @returns Hook for managing recommended lessons history
*
* @example
* ```tsx
* // In your app setup
* const fetchRecommendedClassHistory = async (filters) => {
* const response = await api.get('/recommended-class/history', { params: filters });
* return response.data;
* };
*
* const useRecommendedClassHistory = createUseRecommendedLessonsHistory(fetchRecommendedClassHistory);
*
* // In your component
* const { recommendedClass, loading, error, pagination, fetchRecommendedClass } = useRecommendedClassHistory();
* ```
*/
export declare const createUseRecommendedLessonsHistory: (fetchRecommendedClassHistory: (filters?: RecommendedClassHistoryFilters) => Promise<RecommendedClassHistoryApiResponse>) => () => UseRecommendedLessonsHistoryReturn;
/**
* Alias for createUseRecommendedLessonsHistory
*/
export declare const createRecommendedLessonsHistoryHook: (fetchRecommendedClassHistory: (filters?: RecommendedClassHistoryFilters) => Promise<RecommendedClassHistoryApiResponse>) => () => UseRecommendedLessonsHistoryReturn;
//# sourceMappingURL=useRecommendedLessons.d.ts.map