1+ import { useEffect , useState } from 'react'
12import { Box , Flex , VStack } from '@chakra-ui/react'
23
34import { Message } from '@/hooks/useChatStream'
@@ -23,8 +24,38 @@ export default function ChatMessages({
2324 messagesEndRef,
2425 messagesContainerRef,
2526 hasMessages,
26- onOpenDrawer : onOpenDrawer ,
27+ onOpenDrawer,
2728} : ChatMessagesProps ) {
29+ const [ isReadyForPreview , setIsReadyForPreview ] = useState ( false )
30+
31+ useEffect ( ( ) => {
32+ const checkReadiness = async ( ) => {
33+ if ( isStreaming || messages . length === 0 ) {
34+ setIsReadyForPreview ( false )
35+ return
36+ }
37+
38+ const lastMessage = messages [ messages . length - 1 ]
39+
40+ try {
41+ const response = await fetch ( '/api/chat/readiness' , {
42+ method : 'POST' ,
43+ body : JSON . stringify ( { message : lastMessage . text } ) ,
44+ headers : {
45+ 'Content-Type' : 'application/json' ,
46+ } ,
47+ } )
48+
49+ const result = await response . json ( )
50+ setIsReadyForPreview ( result . isReady )
51+ } catch {
52+ setIsReadyForPreview ( false )
53+ }
54+ }
55+
56+ checkReadiness ( )
57+ } , [ isStreaming , messages ] )
58+
2859 return (
2960 < Flex
3061 ref = { messagesContainerRef }
@@ -39,7 +70,7 @@ export default function ChatMessages({
3970 < ChatMessage key = { index } message = { message } />
4071 ) ) }
4172
42- { hasMessages && ! isStreaming && (
73+ { hasMessages && ! isStreaming && isReadyForPreview && (
4374 < PreviewStepsButton
4475 messages = { messages }
4576 onOpenDrawer = { onOpenDrawer }
0 commit comments