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) {
)}
+