Fix abort issue
This commit is contained in:
parent
ad1b3150e5
commit
fdd46fdd06
|
@ -57,7 +57,7 @@
|
||||||
export let params = { chatId: '' }
|
export let params = { chatId: '' }
|
||||||
const chatId: number = parseInt(params.chatId)
|
const chatId: number = parseInt(params.chatId)
|
||||||
|
|
||||||
const controller = new AbortController()
|
let controller:AbortController = new AbortController()
|
||||||
|
|
||||||
let updating: boolean|number = false
|
let updating: boolean|number = false
|
||||||
let updatingMessage: string = ''
|
let updatingMessage: string = ''
|
||||||
|
@ -380,16 +380,18 @@
|
||||||
signal
|
signal
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// fetchEventSource doesn't seem to throw on abort, so...
|
||||||
|
const abortListener = (e:Event) => {
|
||||||
|
controller = new AbortController()
|
||||||
|
chatResponse.updateFromError('User aborted request.')
|
||||||
|
signal.removeEventListener('abort', abortListener)
|
||||||
|
}
|
||||||
|
signal.addEventListener('abort', abortListener)
|
||||||
|
|
||||||
if (opts.streaming) {
|
if (opts.streaming) {
|
||||||
const abortListener = (e:Event) => {
|
|
||||||
chatResponse.updateFromError('User aborted request.')
|
|
||||||
}
|
|
||||||
// fetchEventSource doesn't seem to throw on abort, so...
|
|
||||||
signal.addEventListener('abort', abortListener)
|
|
||||||
chatResponse.onFinish(() => {
|
chatResponse.onFinish(() => {
|
||||||
updating = false
|
updating = false
|
||||||
updatingMessage = ''
|
updatingMessage = ''
|
||||||
signal.removeEventListener('abort', abortListener)
|
|
||||||
scrollToBottom()
|
scrollToBottom()
|
||||||
})
|
})
|
||||||
fetchEventSource(apiBase + '/v1/chat/completions', {
|
fetchEventSource(apiBase + '/v1/chat/completions', {
|
||||||
|
|
|
@ -67,7 +67,7 @@ export class ChatCompletionResponse {
|
||||||
} as Usage
|
} as Usage
|
||||||
message.model = response.model
|
message.model = response.model
|
||||||
message.finish_reason = choice.finish_reason
|
message.finish_reason = choice.finish_reason
|
||||||
message.streaming = choice.finish_reason === null
|
message.streaming = choice.finish_reason === null && !this.finished
|
||||||
this.messages[i] = message
|
this.messages[i] = message
|
||||||
if (this.opts.autoAddMessages) addMessage(this.chat.id, message)
|
if (this.opts.autoAddMessages) addMessage(this.chat.id, message)
|
||||||
})
|
})
|
||||||
|
@ -85,7 +85,7 @@ export class ChatCompletionResponse {
|
||||||
}
|
}
|
||||||
|
|
||||||
updateFromError (errorMessage: string): void {
|
updateFromError (errorMessage: string): void {
|
||||||
if (this.finished) return
|
if (this.finished || this.error) return
|
||||||
this.error = errorMessage
|
this.error = errorMessage
|
||||||
if (this.opts.autoAddMessages) {
|
if (this.opts.autoAddMessages) {
|
||||||
addMessage(this.chat.id, {
|
addMessage(this.chat.id, {
|
||||||
|
@ -95,11 +95,11 @@ export class ChatCompletionResponse {
|
||||||
} as Message)
|
} as Message)
|
||||||
}
|
}
|
||||||
this.notifyMessageChange()
|
this.notifyMessageChange()
|
||||||
this.finish()
|
setTimeout(() => this.finish(), 250) // give others a chance to signal the finish first
|
||||||
}
|
}
|
||||||
|
|
||||||
updateFromClose (): void {
|
updateFromClose (): void {
|
||||||
setTimeout(() => this.finish(), 100) // give others a chance to signal the finish first
|
setTimeout(() => this.finish(), 250) // give others a chance to signal the finish first
|
||||||
}
|
}
|
||||||
|
|
||||||
onMessageChange = (listener: (m: Message[]) => void): number =>
|
onMessageChange = (listener: (m: Message[]) => void): number =>
|
||||||
|
|
Loading…
Reference in New Issue