fix: autosave chat controls on change

This commit is contained in:
Algorithm5838 2026-04-20 20:10:12 +03:00
parent a32d26e61d
commit 13cb38aa7d

View file

@ -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) {