import { useEffect, useRef } from 'react'; import { getAnalytics } from './AnalyticsManager'; /** * Hook para rastrear uso de atividades de letramento * @param {string} activityId - ID Ășnico da atividade de letramento (ex: 'mouse-basico') * @param {string} categoryName - Nome da categoria (ex: 'Mouse', 'Teclado') */ export function useLetramentoTracking(activityId, categoryName) { const analyticsRef = useRef(getAnalytics()); const sessionStartRef = useRef(Date.now()); const completionTrackedRef = useRef(false); // Track activity start useEffect(() => { if (!activityId) return; sessionStartRef.current = Date.now(); analyticsRef.current.trackEvent('letramento_atividade_iniciada', { atividade_id: activityId, categoria: categoryName || 'letramento', }); return () => { // Track abandonment on unmount if not completed if (!completionTrackedRef.current) { analyticsRef.current.trackEvent('letramento_atividade_abandonada', { atividade_id: activityId, categoria: categoryName || 'letramento', tempo_sessao_segundos: Math.round((Date.now() - sessionStartRef.current) / 1000), }); } }; }, [activityId, categoryName]); // Track activity completion const trackCompletion = (success = true) => { if (!activityId || completionTrackedRef.current) return; completionTrackedRef.current = true; const sessionDuration = Math.round((Date.now() - sessionStartRef.current) / 1000); analyticsRef.current.trackEvent( success ? 'letramento_atividade_completada' : 'letramento_atividade_falhou', { atividade_id: activityId, categoria: categoryName || 'letramento', tempo_sessao_segundos: sessionDuration, } ); }; // Track custom letramento event const trackEvent = (eventName, eventData = {}) => { if (!activityId) return; analyticsRef.current.trackEvent(eventName, { atividade_id: activityId, categoria: categoryName || 'letramento', ...eventData, }); }; return { trackCompletion, trackEvent, }; }