import { useNavigate } from "react-router";
import { useSupervisorQuestions } from "../contexts/SupervisorQuestionsContext";
import { PhaseConfirmationModal, type PhaseConfirmationData } from "./contracts/PhaseConfirmationModal";
import type { PendingQuestion } from "../lib/api";
/**
* Notification component for phase confirmation requests.
* Shows a modal when there are pending phase_confirmation type questions.
* Uses the same question infrastructure as supervisor questions.
*/
export function PhaseConfirmationNotification() {
const { notificationQuestions, submitAnswer, dismissNotification } =
useSupervisorQuestions();
// Filter for phase_confirmation type questions
const phaseConfirmationQuestions = notificationQuestions.filter(
(q) => q.questionType === "phase_confirmation"
);
if (phaseConfirmationQuestions.length === 0) {
return null;
}
// Show the first phase confirmation question as a modal
const question = phaseConfirmationQuestions[0];
// Build phase confirmation data from the question
const data: PhaseConfirmationData = {
questionId: question.questionId,
contractId: question.contractId,
contractName: question.phaseConfirmation?.contractName,
currentPhase: question.phaseConfirmation?.currentPhase || "research",
nextPhase: question.phaseConfirmation?.nextPhase || "specify",
summary: question.phaseConfirmation?.summary,
deliverables: question.phaseConfirmation?.deliverables,
};
const handleApprove = async (questionId: string) => {
const success = await submitAnswer(questionId, "APPROVE");
if (success) {
dismissNotification(questionId);
}
};
const handleRequestChanges = async (questionId: string, feedback: string) => {
const success = await submitAnswer(
questionId,
`CHANGES_REQUESTED: ${feedback}`
);
if (success) {
dismissNotification(questionId);
}
};
const handleDismiss = () => {
// Dismiss to notification (user can still respond via task output)
dismissNotification(question.questionId);
};
return (
{question.question}
{question.phaseConfirmation?.contractName && (Contract: {question.phaseConfirmation.contractName}
)}