refac
This commit is contained in:
1 parent
3258330729
commit
f7a533cda6
2 files changed
+20
-16
No files matched your search
@@ -2744,23 +2744,23 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
const responseCompletionEventHandler = (data, message) => {
|
const responseCompletionEventHandler = (data, message) => {
|
||||||
message.output = applyResponseStreamEvent(message.output ?? [], data);
|
const output = Array.isArray(data?.output)
|
||||||
|
? data.output
|
||||||
|
: applyResponseStreamEvent(message.output ?? [], data);
|
||||||
|
|
||||||
|
const updatedMessage = {
|
||||||
|
...message,
|
||||||
|
output
|
||||||
|
};
|
||||||
|
|
||||||
if (data?.type === 'response.output_text.delta') {
|
if (data?.type === 'response.output_text.delta') {
|
||||||
const value = data.delta ?? '';
|
if (navigator.vibrate && ($settings?.hapticFeedback ?? false)) {
|
||||||
if (!(message.content == '' && value == '\n')) {
|
navigator.vibrate(5);
|
||||||
message.content += value;
|
|
||||||
|
|
||||||
if (navigator.vibrate && ($settings?.hapticFeedback ?? false)) {
|
|
||||||
navigator.vibrate(5);
|
|
||||||
}
|
|
||||||
dispatchCallOverlayAudio(message);
|
|
||||||
}
|
}
|
||||||
} else if (data?.type === 'response.completed' || data?.type?.endsWith('.done')) {
|
dispatchCallOverlayAudio(updatedMessage);
|
||||||
message.content = getOutputText(message.output) || message.content;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
history.messages[message.id] = message;
|
history.messages[message.id] = updatedMessage;
|
||||||
history = history;
|
history = history;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -121,13 +121,17 @@
|
|||||||
export let messageId;
|
export let messageId;
|
||||||
export let selectedModels = [];
|
export let selectedModels = [];
|
||||||
|
|
||||||
let message: MessageType = structuredClone(history.messages[messageId]);
|
let messageSource = history.messages[messageId];
|
||||||
|
let message: MessageType = structuredClone(messageSource);
|
||||||
$: if (history.messages) {
|
$: if (history.messages) {
|
||||||
const source = history.messages[messageId];
|
const source = history.messages[messageId];
|
||||||
if (source) {
|
if (source) {
|
||||||
// Fast path: O(1) check on the fields that change most often (content during streaming, done at end)
|
// Fast path for the fields that change most often while streaming.
|
||||||
// Avoids 2x O(n) JSON.stringify calls that are always true during streaming anyway
|
// Responses streams update output even when legacy content is unchanged.
|
||||||
if (
|
if (source !== messageSource) {
|
||||||
|
messageSource = source;
|
||||||
|
message = structuredClone(source);
|
||||||
|
} else if (
|
||||||
message.content !== source.content ||
|
message.content !== source.content ||
|
||||||
message.done !== source.done ||
|
message.done !== source.done ||
|
||||||
message.output?.length !== source.output?.length
|
message.output?.length !== source.output?.length
|
||||||
|
|||||||
Reference in new issue
Block a user