refactor(messageHandler): sends all necessary data to cache/save unfinished response

This commit is contained in:
Daniel Avila 2023-04-09 09:22:14 -04:00
parent 828e438d53
commit b59588c6ee

View file

@ -2,6 +2,7 @@ import { useEffect, useState } from 'react';
import { useRecoilValue, useRecoilState, useResetRecoilState, useSetRecoilState } from 'recoil'; import { useRecoilValue, useRecoilState, useResetRecoilState, useSetRecoilState } from 'recoil';
import { SSE } from '~/data-provider/sse.mjs'; import { SSE } from '~/data-provider/sse.mjs';
import createPayload from '~/data-provider/createPayload'; import createPayload from '~/data-provider/createPayload';
import { useAbortRequestWithMessage } from '~/data-provider';
import store from '~/store'; import store from '~/store';
@ -68,12 +69,14 @@ export default function MessageHandler() {
...initialResponse, ...initialResponse,
text: data, text: data,
parentMessageId: message?.messageId, parentMessageId: message?.messageId,
messageId: message?.messageId + '_', messageId: message?.messageId + '_'
// cancelled: true // cancelled: true
} }
]); ]);
setLastResponse(''); setLastResponse('');
setSource(null); setSource(null);
setIsSubmitting(false);
setSubmission(null);
} }
}; };
@ -162,9 +165,19 @@ export default function MessageHandler() {
console.log('message aborted', submission); console.log('message aborted', submission);
source.close(); source.close();
const { endpoint } = submission.conversation; const { endpoint } = submission.conversation;
const latestMessage = lastResponse.replaceAll('█', '');
fetch(`/api/ask/${endpoint}/abort?requestId=${abortKey}`) // splitting twice because the cursor may or may not be wrapped in a span
const latestMessage = lastResponse.split('█')[0].split('<span className="result-streaming">')[0];
fetch(`/api/ask/${endpoint}/abort`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
abortKey,
message: latestMessage,
})
})
.then(response => { .then(response => {
if (response.ok) { if (response.ok) {
console.log('Request aborted'); console.log('Request aborted');
@ -177,8 +190,6 @@ export default function MessageHandler() {
}); });
console.log('source closed, got this far'); console.log('source closed, got this far');
cancelHandler(latestMessage, { ...submission, message }); cancelHandler(latestMessage, { ...submission, message });
setIsSubmitting(false);
setSubmission(null);
return; return;
} }
@ -208,7 +219,7 @@ export default function MessageHandler() {
}; };
createdHandler(data, { ...submission, message }); createdHandler(data, { ...submission, message });
console.log('created', message); console.log('created', message);
setAbortKey(message?.messageId); setAbortKey(message?.conversationId);
} else { } else {
let text = data.text || data.response; let text = data.text || data.response;
if (data.initial) console.log(data); if (data.initial) console.log(data);