analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
89 lines • 3.63 kB
TypeScript
import type { BaseApiClient } from '../../types/api';
import type { ActivityHistoryResponse, ActivityTableItem, ActivityHistoryFilters, ActivityPagination, ActivityFilterOption } from '../../types/activitiesHistory';
/**
* Options for configuring the useActivitiesHistory hook
*/
export interface UseActivitiesHistoryOptions {
/** Filter by activity category (PROVA, ATIVIDADE, etc.) */
activityCategory?: 'PROVA' | 'ATIVIDADE';
}
/**
* API filter options extracted from response
*/
export interface ActivityApiFilterOptions {
schools: ActivityFilterOption[];
classes: ActivityFilterOption[];
subjects: ActivityFilterOption[];
schoolYears: ActivityFilterOption[];
}
/**
* Hook state interface
*/
export interface UseActivitiesHistoryState {
activities: ActivityTableItem[];
loading: boolean;
error: string | null;
pagination: ActivityPagination;
apiFilterOptions: ActivityApiFilterOptions;
}
/**
* Hook return type
*/
export interface UseActivitiesHistoryReturn extends UseActivitiesHistoryState {
fetchActivities: (filters?: ActivityHistoryFilters) => Promise<void>;
}
/**
* Default pagination values
*/
export declare const DEFAULT_ACTIVITIES_PAGINATION: ActivityPagination;
/**
* Default API filter options
*/
export declare const DEFAULT_ACTIVITY_FILTER_OPTIONS: ActivityApiFilterOptions;
/**
* Transform API response to table item format
* @param activity - Activity from API response
* @returns Formatted activity for table display
*/
export declare const transformActivityToTableItem: (activity: ActivityHistoryResponse) => ActivityTableItem;
/**
* Extract unique filter options from activities API response.
* Delegates to the shared extractBreakdownFilterOptions helper.
*/
export declare const extractActivityFilterOptions: (activities: ActivityHistoryResponse[]) => ActivityApiFilterOptions;
/**
* Build the `/activities/history` query params from the raw TableProvider filter
* keys. TableProvider emits UI-category keys (`subject`, `school`, `class`,
* `schoolYear`, `status`, `creatorType`) as arrays; the backend expects a
* different, mostly single-value contract. This adapter renames each key and
* collapses/serializes to what the backend actually reads. Mirrors
* `buildFiltersFromParams` in RecommendedLessonsHistory.
*
* @param filters - Raw table params (arrays under UI keys) plus page/limit/search/sort
* @param activityCategory - Optional value forwarded as the `type` param
*/
export declare const buildActivityHistoryQueryParams: (filters?: Record<string, unknown>, activityCategory?: string) => Record<string, unknown>;
/**
* Factory function to create useActivitiesHistory hook
*
* @param apiClient - API client instance (axios, fetch wrapper, etc.)
* @param options - Hook configuration options
* @returns Hook for managing activities history
*
* @example
* ```tsx
* import { createUseActivitiesHistory } from 'analytica-frontend-lib';
* import api from '@/services/apiService';
*
* const useActivitiesHistory = createUseActivitiesHistory(api, { activityCategory: 'ATIVIDADE' });
*
* // In your component
* const { activities, loading, fetchActivities, apiFilterOptions } = useActivitiesHistory();
* ```
*/
export declare const createUseActivitiesHistory: (apiClient: BaseApiClient, options?: UseActivitiesHistoryOptions) => () => UseActivitiesHistoryReturn;
/**
* Alias for createUseActivitiesHistory
*/
export declare const createActivitiesHistoryHook: (apiClient: BaseApiClient, options?: UseActivitiesHistoryOptions) => () => UseActivitiesHistoryReturn;
//# sourceMappingURL=useActivitiesHistory.d.ts.map