feat: preserve activation state when updating or creating Sieve scripts to avoid deactivating server-managed vacation scripts

This commit is contained in:
Linus Rath
2026-03-29 17:25:15 +02:00
parent 9d1302ef0a
commit 5583d95ecc
+7 -2
View File
@@ -188,7 +188,10 @@ export const useFilterStore = create<FilterStore>()((set, get) => ({
const content = generateScript(rules, vacation.isEnabled ? vacation : undefined); const content = generateScript(rules, vacation.isEnabled ? vacation : undefined);
if (activeScript) { if (activeScript) {
await client.updateSieveScript(activeScript.id, content, true); // Preserve the script's current activation state — don't pass activate: true
// unconditionally, as that would deactivate the server-managed 'vacation'
// script and cause VacationResponse/get to return isEnabled: false.
await client.updateSieveScript(activeScript.id, content, activeScript.isActive);
set({ set({
activeScriptId: activeScript.id, activeScriptId: activeScript.id,
rawScript: content, rawScript: content,
@@ -197,7 +200,9 @@ export const useFilterStore = create<FilterStore>()((set, get) => ({
isOpaque: false, isOpaque: false,
}); });
} else { } else {
const script = await client.createSieveScript('filters', content, true); // Don't activate; there may be a server-managed 'vacation' script active.
// The filters script will be activated when the user saves filters normally.
const script = await client.createSieveScript('filters', content, false);
set({ set({
activeScriptId: script.id, activeScriptId: script.id,
rawScript: content, rawScript: content,