analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
59 lines • 2.12 kB
TypeScript
import type { BaseApiClient } from '../types/api';
import type { QuestionsFilterBody, Question, Pagination } from '../types/questions';
/**
* Hook state interface
*/
interface UseQuestionsListState {
questions: Question[];
pagination: Pagination | null;
loading: boolean;
loadingMore: boolean;
error: string | null;
currentFilters: Partial<QuestionsFilterBody> | null;
}
/**
* Hook return type
*/
export interface UseQuestionsListReturn extends UseQuestionsListState {
fetchQuestions: (filters?: Partial<QuestionsFilterBody>, append?: boolean) => Promise<void>;
fetchRandomQuestions: (count: number, filters?: Partial<QuestionsFilterBody>) => Promise<Question[]>;
fetchQuestionsByIds: (questionIds: string[]) => Promise<Question[]>;
loadMore: () => Promise<void>;
reset: () => void;
}
/**
* Create a questions list hook with API client injection.
* @param apiClient - API client instance
* @returns Pre-configured useQuestionsList hook
*
* @example
* // In your app setup
* import { createUseQuestionsList } from 'analytica-frontend-lib';
* import api from './services/api';
*
* export const useQuestionsList = createUseQuestionsList(api);
*
* // Then use directly in components
* const { questions, fetchQuestions, loadMore } = useQuestionsList();
*/
export declare const createUseQuestionsList: (apiClient: BaseApiClient) => () => UseQuestionsListReturn;
/**
* Create a pre-configured questions list hook
* This is a convenience function that returns a hook ready to use
*
* @param apiClient - API client instance
* @returns Pre-configured useQuestionsList hook
*
* @example
* // In your app setup
* import { createQuestionsListHook } from 'analytica-frontend-lib';
* import api from './services/api';
*
* export const useQuestionsList = createQuestionsListHook(api);
*
* // Then use directly in components
* const { questions, fetchQuestions, loadMore } = useQuestionsList();
*/
export declare const createQuestionsListHook: (apiClient: BaseApiClient) => () => UseQuestionsListReturn;
export {};
//# sourceMappingURL=useQuestionsList.d.ts.map