4
4
import React , { useRef } from 'react' ;
5
5
//import { Button } from '@fluentui/react';
6
6
import { Accordion , Card , Button } from 'react-bootstrap' ;
7
- import { getHint , processAgentResponse , getSolve , streamData } from "../../api" ;
7
+ import { getHint , processAgentResponse , streamData } from "../../api" ;
8
8
import { useEffect , useState } from "react" ;
9
9
import styles from './Tutor.module.css' ;
10
10
import ReactMarkdown from 'react-markdown' ;
@@ -15,12 +15,11 @@ import CharacterStreamer from '../../components/CharacterStreamer/CharacterStrea
15
15
16
16
const Tutor = ( ) => {
17
17
const [ streamKey , setStreamKey ] = useState ( 0 ) ;
18
- const [ loading , setLoading ] = useState ( false ) ;
18
+ const [ renderAnswer , setRenderAnswer ] = useState ( false ) ;
19
19
const [ error , setError ] = useState ( false ) ;
20
20
const [ errorMessage , setErrorMessage ] = useState ( '' ) ;
21
21
const [ mathProblem , setMathProblem ] = useState ( '' ) ;
22
22
const [ output , setOutput ] = useState ( '' ) ;
23
- //const [output, setOutput] = useState<string | null>("");
24
23
const [ selectedButton , setSelectedButton ] = useState < string | null > ( null ) ;
25
24
const eventSourceRef = useRef < EventSource | null > ( null ) ;
26
25
@@ -32,14 +31,12 @@ const Tutor = () => {
32
31
33
32
const handleInput = ( event : React . FormEvent < HTMLFormElement > ) => {
34
33
event . preventDefault ( ) ;
35
- setLoading ( true ) ;
36
34
userInput ( mathProblem ) ;
37
35
} ;
38
36
39
37
const userInput = ( problem : string ) => {
40
38
// Process the user's math problem here
41
39
console . log ( problem ) ;
42
- setLoading ( false ) ;
43
40
} ;
44
41
45
42
function delay ( ms : number ) : Promise < void > {
@@ -53,7 +50,6 @@ const Tutor = () => {
53
50
) : Promise < T > {
54
51
55
52
setError ( false ) ;
56
- setLoading ( true ) ;
57
53
for ( let attempt = 1 ; attempt <= retries ; attempt ++ ) {
58
54
try {
59
55
return await asyncFn ( ) ; // Try executing the function
@@ -67,33 +63,33 @@ const Tutor = () => {
67
63
}
68
64
}
69
65
setError ( true ) ;
70
- setLoading ( false ) ;
71
66
// If we reach this point, all retries have failed
72
67
throw new Error ( `Max retries reached. Last error: ${ errorMessage } ` ) ;
73
68
}
74
69
75
70
async function hinter ( question : string ) {
76
71
setStreamKey ( prevKey => prevKey + 1 ) ;
77
72
setOutput ( '' ) ;
73
+ setRenderAnswer ( true ) ;
78
74
await retryAsyncFn ( ( ) => getHint ( question ) , 3 , 1000 ) . then ( ( response ) => {
79
75
setOutput ( response . toString ( ) ) ;
80
76
} ) ;
81
- setLoading ( false ) ;
82
77
83
78
}
84
79
85
80
86
81
async function getAnswer ( question : string ) {
87
82
setStreamKey ( prevKey => prevKey + 1 ) ;
88
83
setOutput ( '' ) ;
84
+ setRenderAnswer ( true ) ;
89
85
await retryAsyncFn ( ( ) => processAgentResponse ( question ) , 3 , 1000 ) . then ( ( response ) => {
90
86
setOutput ( response . toString ( ) ) ;
91
87
} ) ;
92
- setLoading ( false ) ;
93
88
} ;
94
89
95
90
async function handleExampleClick ( value : string ) {
96
91
setStreamKey ( prevKey => prevKey + 1 ) ;
92
+ setRenderAnswer ( true ) ;
97
93
setMathProblem ( value ) ;
98
94
getAnswer ( value ) ;
99
95
}
@@ -109,7 +105,7 @@ const EXAMPLES: ExampleModel[] = [
109
105
const handleButton2Click = ( ) => {
110
106
setStreamKey ( prevKey => prevKey + 1 ) ;
111
107
setOutput ( '' ) ;
112
- setLoading ( true ) ;
108
+ setRenderAnswer ( true ) ;
113
109
setSelectedButton ( 'button2' ) ;
114
110
if ( eventSourceRef . current ) {
115
111
eventSourceRef . current . close ( ) ;
@@ -124,7 +120,6 @@ const EXAMPLES: ExampleModel[] = [
124
120
if ( eventSourceRef . current ) {
125
121
eventSourceRef . current . close ( ) ;
126
122
eventSourceRef . current = null ;
127
- setLoading ( false ) ;
128
123
console . log ( 'EventSource closed' ) ;
129
124
}
130
125
}
@@ -134,7 +129,6 @@ const EXAMPLES: ExampleModel[] = [
134
129
if ( eventSourceRef . current ) {
135
130
eventSourceRef . current . close ( ) ;
136
131
eventSourceRef . current = null ;
137
- setLoading ( false ) ;
138
132
console . log ( 'EventSource closed' ) ;
139
133
}
140
134
} ;
@@ -199,7 +193,7 @@ return (
199
193
</ div >
200
194
</ form >
201
195
{ error && < div className = "spinner" > { errorMessage } </ div > }
202
- { < CharacterStreamer key = { streamKey } eventSource = { eventSourceRef . current } onStreamingComplete = { handleCloseEvent } classNames = { styles . centeredAnswerContainer } nonEventString = { output } /> }
196
+ { renderAnswer && < CharacterStreamer key = { streamKey } eventSource = { eventSourceRef . current } onStreamingComplete = { handleCloseEvent } classNames = { styles . centeredAnswerContainer } nonEventString = { output } /> }
203
197
</ div >
204
198
</ div >
205
199
)
0 commit comments