import { useState, useEffect, useRef } from 'react'
import { Reaction } from '../__data__/model'

export const useStudentReactions = (accessCode: any) => {
  // Отслеживаем предыдущие реакции для определения новых
  const prevReactionsRef = useRef<Record<string, Reaction[]>>({})
  // Храним актуальные реакции студентов
  const [studentReactions, setStudentReactions] = useState<Record<string, Reaction[]>>({})
  
  // Эффект для обработки новых реакций
  useEffect(() => {
    if (accessCode?.body?.lesson?.studentReactions) {
      const reactions = accessCode.body.lesson.studentReactions;
      
      // Группируем реакции по sub (идентификатору студента)
      const groupedReactions: Record<string, Reaction[]> = {};
      
      reactions.forEach(reaction => {
        if (!groupedReactions[reaction.sub]) {
          groupedReactions[reaction.sub] = [];
        }
        groupedReactions[reaction.sub].push(reaction);
      });
      
      // Обновляем отображаемые реакции
      setStudentReactions(groupedReactions);
      
      // Обновляем предыдущие реакции после небольшой задержки
      const updatePrevReactionsTimeout = setTimeout(() => {
        prevReactionsRef.current = groupedReactions;
      }, 1000);
      
      return () => clearTimeout(updatePrevReactionsTimeout);
    }
  }, [accessCode?.body?.lesson?.studentReactions]);

  return {
    studentReactions
  }
} 