@@ -27,7 +27,9 @@ export default function Home() {
27
27
const [ resultsArray , setResultsArray ] = useState < string [ ] | null > ( null ) ;
28
28
const [ GPTAnswers , setGPTAnswers ] = useState < Array < unknown > > ( [ ] ) ;
29
29
const [ isFetching , setFetching ] = useState ( false ) ;
30
- const [ isFetchingGPT , setFetchingGPT ] = useState ( false ) ;
30
+ const [ isFetchingGPTIndex , setFetchingGPTIndex ] = useState < number | null > (
31
+ null
32
+ ) ;
31
33
const [ messages , setMessages ] = useState ( [
32
34
{
33
35
message : "Hello, I'm ChatGPT! Ask me anything!" ,
@@ -58,15 +60,16 @@ export default function Home() {
58
60
} ;
59
61
60
62
const handleGPTQuestion = async ( message : string , index : number ) => {
63
+ setFetchingGPTIndex ( index ) ;
61
64
const newMessage = {
62
65
message : message ,
63
66
direction : 'outgoing' ,
64
67
sender : 'user' ,
65
68
} ;
66
69
const newMessages = [ ...messages , newMessage ] ;
67
70
68
- setFetchingGPT ( true ) ;
69
71
await handleGPTMessage ( newMessages , index ) ;
72
+ setFetchingGPTIndex ( null ) ;
70
73
} ;
71
74
72
75
useEffect ( ( ) => {
@@ -115,7 +118,6 @@ export default function Home() {
115
118
const newAnswers : Array < unknown > = [ ...GPTAnswers ] ;
116
119
newAnswers [ index ] = data . choices [ 0 ] . message . content ;
117
120
setGPTAnswers ( newAnswers ) ;
118
- setFetchingGPT ( false ) ;
119
121
} ) ;
120
122
} ;
121
123
@@ -181,18 +183,24 @@ export default function Home() {
181
183
alignItems : 'space-between' ,
182
184
} }
183
185
>
184
- < Typography flexGrow = { 1 } > { result } </ Typography >
186
+ < Typography flexGrow = { 1 } sx = { { fontWeight : 500 } } >
187
+ { result }
188
+ </ Typography >
185
189
< Button
186
190
variant = 'outlined'
187
- // loading={isFetching }
191
+ loading = { index === isFetchingGPTIndex }
188
192
onClick = { ( ) => handleGPTQuestion ( result , index ) }
189
193
>
190
194
Explain
191
195
</ Button >
192
196
</ ListItem >
193
197
{ GPTAnswers [ index ] && (
194
198
< ListItem key = { uuidv4 ( ) } >
195
- { GPTAnswers [ index ] as string }
199
+ < Typography
200
+ sx = { { fontWeight : 200 , fontStyle : 'italic' } }
201
+ >
202
+ { GPTAnswers [ index ] as string }
203
+ </ Typography >
196
204
</ ListItem >
197
205
) }
198
206
< ListDivider inset = 'gutter' />
0 commit comments