import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
import { listPendingQuestions, answerQuestion, type PendingQuestion } from '../lib/api';

// Query keys for questions
export const questionKeys = {
  all: ['questions'] as const,
  lists: () => [...questionKeys.all, 'list'] as const,
  list: () => [...questionKeys.lists()] as const,
};

/**
 * Hook to fetch pending questions
 * Polls every 5 seconds for updates
 */
export function usePendingQuestions() {
  return useQuery({
    queryKey: questionKeys.list(),
    queryFn: listPendingQuestions,
    refetchInterval: 5000,
  });
}

/**
 * Hook to answer a pending question
 */
export function useAnswerQuestion() {
  const queryClient = useQueryClient();

  return useMutation({
    mutationFn: ({ questionId, response }: { questionId: string; response: string }) =>
      answerQuestion(questionId, response),
    onSuccess: () => {
      // Invalidate questions list to refetch
      queryClient.invalidateQueries({ queryKey: questionKeys.lists() });
    },
  });
}

/**
 * Get the count of pending questions
 */
export function getQuestionCount(questions: PendingQuestion[] | undefined): number {
  return questions?.length ?? 0;
}
