import { useEffect, useRef, useState } from "react"; import React from "react"; import Markdown from "react-markdown"; import "../../../styles/markdown.css"; import { UpdateTranscript } from "../../../api"; import useApi from "../../../lib/useApi"; import useTranscript from "../useTranscript"; import useTopics from "../useTopics"; import { Box, Flex, IconButton, Modal, ModalContent } from "@chakra-ui/react"; import { FaShare } from "react-icons/fa"; import ShareTranscript from "../shareTranscript"; type FinalSummaryProps = { transcriptId: string; }; export default function FinalSummary(props: FinalSummaryProps) { const transcript = useTranscript(props.transcriptId); const topics = useTopics(props.transcriptId); const finalSummaryRef = useRef(null); const [isEditMode, setIsEditMode] = useState(false); const [preEditSummary, setPreEditSummary] = useState(""); const [editedSummary, setEditedSummary] = useState(""); const [showShareModal, setShowShareModal] = useState(false); useEffect(() => { setEditedSummary(transcript.response?.long_summary || ""); }, [transcript.response?.long_summary]); if (!topics.topics || !transcript.response) { return null; } 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 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 && ( <> } onClick={() => setShowShareModal(true)} aria-label="Share" /> {showShareModal && ( setShowShareModal(false)} size="xl" > )} )}
{isEditMode ? (