mirror of
https://github.com/open-webui/open-webui.git
synced 2026-09-17 23:52:29 +00:00
fix: autosave chat controls on change
This commit is contained in:
parent
a32d26e61d
commit
13cb38aa7d
1 changed files with 40 additions and 0 deletions
|
|
@ -175,6 +175,26 @@
|
|||
let chatFiles = [];
|
||||
let files = [];
|
||||
let params = {};
|
||||
let lastObservedParams = {};
|
||||
let lastObservedChatFiles = [];
|
||||
let controlsSaveTimer: ReturnType<typeof setTimeout> | null = null;
|
||||
|
||||
$: if (!equal(params, lastObservedParams) || !equal(chatFiles, lastObservedChatFiles)) {
|
||||
lastObservedParams = structuredClone(params);
|
||||
lastObservedChatFiles = structuredClone(chatFiles);
|
||||
if (!loading && !$temporaryChatEnabled && $chatId) {
|
||||
if (controlsSaveTimer !== null) {
|
||||
clearTimeout(controlsSaveTimer);
|
||||
}
|
||||
controlsSaveTimer = setTimeout(() => {
|
||||
controlsSaveTimer = null;
|
||||
saveControlsHandler().catch((err) => {
|
||||
console.error('[saveControlsHandler]', err);
|
||||
toast.error($i18n.t('Failed to save chat controls'));
|
||||
});
|
||||
}, 400);
|
||||
}
|
||||
}
|
||||
|
||||
$: if (chatIdProp) {
|
||||
navigateHandler();
|
||||
|
|
@ -187,6 +207,12 @@
|
|||
updateLastReadAt($chatId);
|
||||
}
|
||||
|
||||
if (controlsSaveTimer !== null) {
|
||||
clearTimeout(controlsSaveTimer);
|
||||
controlsSaveTimer = null;
|
||||
await saveControlsHandler().catch((err) => console.error('[saveControlsHandler]', err));
|
||||
}
|
||||
|
||||
loading = true;
|
||||
|
||||
prompt = '';
|
||||
|
|
@ -807,6 +833,11 @@
|
|||
|
||||
return () => {
|
||||
try {
|
||||
if (controlsSaveTimer !== null) {
|
||||
clearTimeout(controlsSaveTimer);
|
||||
controlsSaveTimer = null;
|
||||
saveControlsHandler().catch((err) => console.error('[saveControlsHandler]', err));
|
||||
}
|
||||
if (chatIdProp && !$temporaryChatEnabled) {
|
||||
updateLastReadAt(chatIdProp);
|
||||
}
|
||||
|
|
@ -2717,6 +2748,15 @@
|
|||
return _chatId;
|
||||
};
|
||||
|
||||
const saveControlsHandler = async () => {
|
||||
const _chatId = $chatId;
|
||||
if (!_chatId || $temporaryChatEnabled || loading) return;
|
||||
await updateChatById(localStorage.token, _chatId, {
|
||||
params: params,
|
||||
files: chatFiles
|
||||
});
|
||||
};
|
||||
|
||||
const saveChatHandler = async (_chatId, history) => {
|
||||
if ($chatId == _chatId) {
|
||||
if (!$temporaryChatEnabled) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue