diff --git a/src/pages/ChatPage.tsx b/src/pages/ChatPage.tsx index 9c5b94a..691b048 100644 --- a/src/pages/ChatPage.tsx +++ b/src/pages/ChatPage.tsx @@ -1,5 +1,6 @@ import React, { useState, useEffect, useRef, useCallback, useMemo } from 'react' -import { Search, MessageSquare, AlertCircle, Loader2, RefreshCw, X, ChevronDown, Info, Calendar, Database, Hash, Play, Pause, Image as ImageIcon, Link, Mic, CheckCircle, Copy, Check } from 'lucide-react' +import { Search, MessageSquare, AlertCircle, Loader2, RefreshCw, X, ChevronDown, Info, Calendar, Database, Hash, Play, Pause, Image as ImageIcon, Link, Mic, CheckCircle, Copy, Check, Download } from 'lucide-react' +import { useNavigate } from 'react-router-dom' import { createPortal } from 'react-dom' import { useChatStore } from '../stores/chatStore' import { useBatchTranscribeStore } from '../stores/batchTranscribeStore' @@ -117,6 +118,8 @@ const SessionItem = React.memo(function SessionItem({ function ChatPage(_props: ChatPageProps) { + const navigate = useNavigate() + const { isConnected, isConnecting, @@ -1228,7 +1231,7 @@ function ChatPage(_props: ChatPageProps) { return } - const voiceMessages = result.messages + const voiceMessages: Message[] = result.messages if (voiceMessages.length === 0) { alert('当前会话没有语音消息') return @@ -1245,6 +1248,15 @@ function ChatPage(_props: ChatPageProps) { setShowBatchConfirm(true) }, [sessions, currentSessionId, isBatchTranscribing]) + const handleExportCurrentSession = useCallback(() => { + if (!currentSessionId) return + navigate('/export', { + state: { + preselectSessionIds: [currentSessionId] + } + }) + }, [currentSessionId, navigate]) + // 确认批量转写 const confirmBatchTranscribe = useCallback(async () => { if (!currentSessionId) return @@ -1465,6 +1477,14 @@ function ChatPage(_props: ChatPageProps) { )}
+