From 210d203fa4ffea767cc3ac09f919ad95e4adb2cc Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Wed, 11 Mar 2026 16:04:17 -0500 Subject: [PATCH] fix mask deletion --- web/src/pages/Settings.tsx | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/web/src/pages/Settings.tsx b/web/src/pages/Settings.tsx index 5f273e93c..f0f1d66e2 100644 --- a/web/src/pages/Settings.tsx +++ b/web/src/pages/Settings.tsx @@ -1205,16 +1205,39 @@ export default function Settings() { config?.cameras?.[selectedCamera]?.profiles?.[profileName]; if (!profileData) return; - // Only delete top-level keys that exist in the profile - const deletePayload: Record = {}; + // Build a targeted delete payload that only removes mask-related + // sub-keys, not the entire motion/objects sections + const deletePayload: Record = {}; + if (profileData.zones !== undefined) { deletePayload.zones = ""; } - if (profileData.motion !== undefined) { - deletePayload.motion = ""; + + if (profileData.motion?.mask !== undefined) { + deletePayload.motion = { mask: "" }; } - if (profileData.objects !== undefined) { - deletePayload.objects = ""; + + if (profileData.objects) { + const objDelete: Record = {}; + if (profileData.objects.mask !== undefined) { + objDelete.mask = ""; + } + if (profileData.objects.filters) { + const filtersDelete: Record = {}; + for (const [filterName, filterVal] of Object.entries( + profileData.objects.filters, + )) { + if (filterVal.mask !== undefined) { + filtersDelete[filterName] = { mask: "" }; + } + } + if (Object.keys(filtersDelete).length > 0) { + objDelete.filters = filtersDelete; + } + } + if (Object.keys(objDelete).length > 0) { + deletePayload.objects = objDelete; + } } if (Object.keys(deletePayload).length === 0) return;