@@ -95,8 +95,6 @@ export const createCompletion = async (
9595 } , [ ] as RequestMessageType [ ] )
9696 // const conversation = rawconversation
9797 try {
98- console . log ( 'Chat session started: ' , sessionId )
99- messageStore . generating = sessionId
10098 // Create a completion (axios is not used here because it does not support streaming)
10199
102100 const headers : HeadersInit = {
@@ -173,9 +171,17 @@ export const createCompletion = async (
173171 body : JSON . stringify ( body )
174172 }
175173
174+ const abortController = new AbortController ( )
175+
176+ console . log ( 'Chat session started: ' , sessionId )
177+ messageStore . generating [ sessionId ] = abortController
178+
176179 const completion = await fetch (
177180 chatbotStore . url + ( chatbotStore . path ? chatbotStore . path : '' ) ,
178- request
181+ {
182+ ...request ,
183+ signal : abortController . signal
184+ }
179185 )
180186
181187 console . log ( completion )
@@ -227,8 +233,9 @@ export const createCompletion = async (
227233 } catch ( error : any ) {
228234 snackbarStore . showErrorMessage ( error ?. message )
229235 } finally {
230- if ( messageStore . generating === sessionId ) {
231- messageStore . generating = ''
236+ if ( sessionId in messageStore . generating ) {
237+ messageStore . generating [ sessionId ] . abort ( )
238+ delete messageStore . generating [ sessionId ]
232239 }
233240 }
234241}
@@ -244,16 +251,17 @@ const read = async (
244251 const decoder = new TextDecoder ( )
245252 const messageStore = useMessageStore ( )
246253
247- if ( ! messageStore . generating || messageStore . generating !== sessionId ) {
254+ if ( ! ( sessionId in messageStore . generating ) ) {
248255 return reader . releaseLock ( )
249256 }
250257 // Destructure the value returned by reader.read()
251258 const { done, value } = await reader . read ( )
252259
253260 // If the stream is done reading, release the lock on the reader
254261 if ( done ) {
255- if ( messageStore . generating === sessionId ) {
256- messageStore . generating = ''
262+ if ( sessionId in messageStore . generating ) {
263+ messageStore . generating [ sessionId ] . abort ( )
264+ delete messageStore . generating [ sessionId ]
257265 }
258266 return reader . releaseLock ( )
259267 }
0 commit comments