analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
60 lines • 2.32 kB
TypeScript
import type { BaseApiClient } from '../../types/api';
import type { ActivityModelResponse, ActivityModelTableItem, ActivityModelFilters, ActivityPagination } from '../../types/activitiesHistory';
/**
* Options for configuring the useActivityModels hook
*/
export interface UseActivityModelsOptions {
/** Filter by activity category (PROVA, ATIVIDADE, etc.) */
activityCategory?: 'PROVA' | 'ATIVIDADE';
}
/**
* 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 (fallback if subject is not in response)
* @returns Formatted model for table display
*/
export declare const transformModelToTableItem: (model: ActivityModelResponse, subjectsMap?: Map<string, string>) => ActivityModelTableItem;
/**
* Factory function to create useActivityModels hook
*
* @param apiClient - API client instance (axios, fetch wrapper, etc.)
* @param options - Hook configuration options
* @returns Hook for managing activity models
*
* @example
* ```tsx
* import { createUseActivityModels } from 'analytica-frontend-lib';
* import api from '@/services/apiService';
*
* const useActivityModels = createUseActivityModels(api, { activityCategory: 'ATIVIDADE' });
*
* // In your component
* const { models, loading, fetchModels, deleteModel } = useActivityModels();
* ```
*/
export declare const createUseActivityModels: (apiClient: BaseApiClient, options?: UseActivityModelsOptions) => () => UseActivityModelsReturn;
/**
* Alias for createUseActivityModels
*/
export declare const createActivityModelsHook: (apiClient: BaseApiClient, options?: UseActivityModelsOptions) => () => UseActivityModelsReturn;
//# sourceMappingURL=useActivityModels.d.ts.map