enh/refac: debounce chat draft save
This commit is contained in:
parent
05895d9657
commit
73b07df28f
|
|
@ -2038,6 +2038,25 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const MAX_DRAFT_LENGTH = 5000;
|
||||||
|
let saveDraftTimeout = null;
|
||||||
|
const saveDraft = async (draft, chatId = null) => {
|
||||||
|
if (saveDraftTimeout) {
|
||||||
|
clearTimeout(saveDraftTimeout);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (draft.prompt !== null && draft.prompt.length < MAX_DRAFT_LENGTH) {
|
||||||
|
saveDraftTimeout = setTimeout(async () => {
|
||||||
|
await sessionStorage.setItem(
|
||||||
|
`chat-input${chatId ? `-${chatId}` : ''}`,
|
||||||
|
JSON.stringify(draft)
|
||||||
|
);
|
||||||
|
}, 500);
|
||||||
|
} else {
|
||||||
|
sessionStorage.removeItem(`chat-input${chatId ? `-${chatId}` : ''}`);
|
||||||
|
}
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<svelte:head>
|
<svelte:head>
|
||||||
|
|
@ -2173,16 +2192,9 @@
|
||||||
false}
|
false}
|
||||||
{stopResponse}
|
{stopResponse}
|
||||||
{createMessagePair}
|
{createMessagePair}
|
||||||
onChange={(input) => {
|
onChange={(data) => {
|
||||||
if (!$temporaryChatEnabled) {
|
if (!$temporaryChatEnabled) {
|
||||||
if (input.prompt !== null) {
|
saveDraft(data, $chatId);
|
||||||
sessionStorage.setItem(
|
|
||||||
`chat-input${$chatId ? `-${$chatId}` : ''}`,
|
|
||||||
JSON.stringify(input)
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
sessionStorage.removeItem(`chat-input${$chatId ? `-${$chatId}` : ''}`);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
on:upload={async (e) => {
|
on:upload={async (e) => {
|
||||||
|
|
@ -2237,6 +2249,11 @@
|
||||||
{stopResponse}
|
{stopResponse}
|
||||||
{createMessagePair}
|
{createMessagePair}
|
||||||
{onSelect}
|
{onSelect}
|
||||||
|
onChange={(data) => {
|
||||||
|
if (!$temporaryChatEnabled) {
|
||||||
|
saveDraft(data);
|
||||||
|
}
|
||||||
|
}}
|
||||||
on:upload={async (e) => {
|
on:upload={async (e) => {
|
||||||
const { type, data } = e.detail;
|
const { type, data } = e.detail;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,7 @@
|
||||||
export let webSearchEnabled = false;
|
export let webSearchEnabled = false;
|
||||||
|
|
||||||
export let onSelect = (e) => {};
|
export let onSelect = (e) => {};
|
||||||
|
export let onChange = (e) => {};
|
||||||
|
|
||||||
export let toolServers = [];
|
export let toolServers = [];
|
||||||
|
|
||||||
|
|
@ -224,15 +225,7 @@
|
||||||
{stopResponse}
|
{stopResponse}
|
||||||
{createMessagePair}
|
{createMessagePair}
|
||||||
placeholder={$i18n.t('How can I help you today?')}
|
placeholder={$i18n.t('How can I help you today?')}
|
||||||
onChange={(input) => {
|
{onChange}
|
||||||
if (!$temporaryChatEnabled) {
|
|
||||||
if (input.prompt !== null) {
|
|
||||||
sessionStorage.setItem(`chat-input`, JSON.stringify(input));
|
|
||||||
} else {
|
|
||||||
sessionStorage.removeItem(`chat-input`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
on:upload={(e) => {
|
on:upload={(e) => {
|
||||||
dispatch('upload', e.detail);
|
dispatch('upload', e.detail);
|
||||||
}}
|
}}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue