import { useRef, useState } from "react"; import React from "react"; import Markdown from "react-markdown"; import "../../styles/markdown.css"; import { featureEnabled } from "../domainContext"; import { UpdateTranscript } from "../../api"; import useApi from "../../lib/useApi"; type FinalSummaryProps = { summary: string; fullTranscript: string; transcriptId: string; openZulipModal: () => void; }; export default function FinalSummary(props: FinalSummaryProps) { const finalSummaryRef = useRef(null); const [isCopiedSummary, setIsCopiedSummary] = useState(false); const [isCopiedTranscript, setIsCopiedTranscript] = useState(false); const [isEditMode, setIsEditMode] = useState(false); const [preEditSummary, setPreEditSummary] = useState(props.summary); const [editedSummary, setEditedSummary] = useState(props.summary); const updateSummary = async (newSummary: string, transcriptId: string) => { try { const api = useApi(); const requestBody: UpdateTranscript = { long_summary: newSummary, }; const updatedTranscript = await api?.v1TranscriptUpdate( transcriptId, requestBody, ); console.log("Updated long summary:", updatedTranscript); } catch (err) { console.error("Failed to update long summary:", err); } }; const onCopySummaryClick = () => { let text_to_copy = finalSummaryRef.current?.innerText; text_to_copy && navigator.clipboard.writeText(text_to_copy).then(() => { setIsCopiedSummary(true); // Reset the copied state after 2 seconds setTimeout(() => setIsCopiedSummary(false), 2000); }); }; const onCopyTranscriptClick = () => { let text_to_copy = props.fullTranscript; text_to_copy && navigator.clipboard.writeText(text_to_copy).then(() => { setIsCopiedTranscript(true); // Reset the copied state after 2 seconds setTimeout(() => setIsCopiedTranscript(false), 2000); }); }; const onEditClick = () => { setPreEditSummary(editedSummary); setIsEditMode(true); }; const onDiscardClick = () => { setEditedSummary(preEditSummary); setIsEditMode(false); }; const onSaveClick = () => { updateSummary(editedSummary, props.transcriptId); setIsEditMode(false); }; const handleTextAreaKeyDown = (e: React.KeyboardEvent) => { if (e.key === "Escape") { onDiscardClick(); } if (e.key === "Enter" && e.shiftKey) { onSaveClick(); e.preventDefault(); // prevent the default action of adding a new line } }; return (

Final Summary

{isEditMode && ( <> )} {!isEditMode && ( <> {featureEnabled("sendToZulip") && ( )} )}
{isEditMode ? (