analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
78 lines • 3.27 kB
TypeScript
import type { BaseApiClient } from '../types/api';
import type { ActivityDetailsData, ActivityDetailsQueryParams } from '../types/activityDetails';
import type { QuestionsAnswersByStudentResponse, SaveQuestionCorrectionPayload } from '../utils/studentActivityCorrection/index';
/**
* Hook return type for activity details
*/
export interface StudentFeedbackResponse {
teacherFeedback: string | null;
attachment: string | null;
}
export interface UseActivityDetailsReturn {
/**
* Fetch activity details from API
* @param id - Activity ID
* @param params - Query parameters for pagination
* @returns Activity details data
*/
fetchActivityDetails: (id: string, params?: ActivityDetailsQueryParams) => Promise<ActivityDetailsData>;
/**
* Fetch student correction data from API
* @param activityId - Activity ID
* @param studentId - Student ID
* @returns Student answers response data
*/
fetchStudentCorrection: (activityId: string, studentId: string) => Promise<QuestionsAnswersByStudentResponse>;
/**
* Fetch teacher feedback for a student activity
* @param activityId - Activity ID
* @param studentId - Student ID
* @returns Teacher feedback and attachment
*/
fetchStudentFeedback: (activityId: string, studentId: string) => Promise<StudentFeedbackResponse>;
/**
* Fetch teacher feedback for a student activity, returning null on error
* @param activityId - Activity ID
* @param studentId - Student ID
* @returns Teacher feedback and attachment, or null if fetch fails
*/
safeFetchStudentFeedback: (activityId: string, studentId: string) => Promise<StudentFeedbackResponse | null>;
/**
* Submit observation for student activity
* @param actId - Activity ID
* @param studentId - Student ID
* @param observation - Observation text
* @param file - Attached file (optional)
* @returns The attachment URL if a file was uploaded, null otherwise
*/
submitObservation: (actId: string, studentId: string, observation: string, file: File | null, existingAttachment: string | null) => Promise<string | null>;
/**
* Submit question correction for student activity
* @param activityId - Activity ID
* @param studentId - Student ID
* @param payload - Question correction payload
*/
submitQuestionCorrection: (activityId: string, studentId: string, payload: SaveQuestionCorrectionPayload) => Promise<void>;
}
/**
* Hook for managing activity details API calls
* Provides functions to fetch activity details, student corrections, and submit observations/corrections
*
* @param apiClient - API client instance for making requests
* @returns Hook return object with API functions
*
* @example
* ```tsx
* import { useActivityDetails } from 'analytica-frontend-lib';
* import { useApi } from './services/apiService';
*
* function ActivityDetailsPage() {
* const api = useApi();
* const { fetchActivityDetails, fetchStudentCorrection } = useActivityDetails(api);
*
* // Use functions...
* }
* ```
*/
export declare const useActivityDetails: (apiClient: BaseApiClient) => UseActivityDetailsReturn;
//# sourceMappingURL=useActivityDetails.d.ts.map