1
- import type { ChatMessage } from '@/types'
1
+ import type { ChatMessage , ErrorMessage } from '@/types'
2
2
import { createSignal , Index , Show , onMount , onCleanup } from 'solid-js'
3
3
import IconClear from './icons/Clear'
4
4
import MessageItem from './MessageItem'
5
5
import SystemRoleSettings from './SystemRoleSettings'
6
+ import ErrorMessageItem from './ErrorMessageItem'
6
7
import { generateSignature } from '@/utils/auth'
7
8
import { useThrottleFn } from 'solidjs-use'
8
9
@@ -11,6 +12,7 @@ export default () => {
11
12
const [ currentSystemRoleSettings , setCurrentSystemRoleSettings ] = createSignal ( '' )
12
13
const [ systemRoleEditing , setSystemRoleEditing ] = createSignal ( false )
13
14
const [ messageList , setMessageList ] = createSignal < ChatMessage [ ] > ( [ ] )
15
+ const [ currentError , setCurrentError ] = createSignal < ErrorMessage > ( )
14
16
const [ currentAssistantMessage , setCurrentAssistantMessage ] = createSignal ( '' )
15
17
const [ loading , setLoading ] = createSignal ( false )
16
18
const [ controller , setController ] = createSignal < AbortController > ( null )
@@ -64,6 +66,7 @@ export default () => {
64
66
const requestWithLatestMessage = async ( ) => {
65
67
setLoading ( true )
66
68
setCurrentAssistantMessage ( '' )
69
+ setCurrentError ( null )
67
70
const storagePassword = localStorage . getItem ( 'pass' )
68
71
try {
69
72
const controller = new AbortController ( )
@@ -90,7 +93,10 @@ export default () => {
90
93
signal : controller . signal ,
91
94
} )
92
95
if ( ! response . ok ) {
93
- throw new Error ( response . statusText )
96
+ const error = await response . json ( )
97
+ console . error ( error . error )
98
+ setCurrentError ( error . error )
99
+ throw new Error ( 'Request failed' )
94
100
}
95
101
const data = response . body
96
102
if ( ! data ) {
@@ -160,8 +166,8 @@ export default () => {
160
166
console . log ( lastMessage )
161
167
if ( lastMessage . role === 'assistant' ) {
162
168
setMessageList ( messageList ( ) . slice ( 0 , - 1 ) )
163
- requestWithLatestMessage ( )
164
169
}
170
+ requestWithLatestMessage ( )
165
171
}
166
172
}
167
173
@@ -199,6 +205,7 @@ export default () => {
199
205
message = { currentAssistantMessage }
200
206
/>
201
207
) }
208
+ { currentError ( ) && < ErrorMessageItem data = { currentError ( ) } onRetry = { retryLastFetch } /> }
202
209
< Show
203
210
when = { ! loading ( ) }
204
211
fallback = { ( ) => (
0 commit comments