From 4443de471a619059803ad3a70968a7f345804ed9 Mon Sep 17 00:00:00 2001 From: Lars Marowsky-Bree Date: Wed, 7 Jan 2026 12:19:10 +0100 Subject: [PATCH] fix: sync default status/priority when referenced value is deleted --- .../taskProperties/priorityPropertyCard.ts | 18 ++++++++++++++++++ .../tabs/taskProperties/statusPropertyCard.ts | 16 ++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/src/settings/tabs/taskProperties/priorityPropertyCard.ts b/src/settings/tabs/taskProperties/priorityPropertyCard.ts index a3a66b15..750b1cf7 100644 --- a/src/settings/tabs/taskProperties/priorityPropertyCard.ts +++ b/src/settings/tabs/taskProperties/priorityPropertyCard.ts @@ -27,6 +27,13 @@ export function renderPriorityPropertyCard( plugin.settings.fieldMapping.priority ); + // Validate defaultTaskPriority - if it doesn't exist in customPriorities (and isn't empty), reset to empty + const validPriorityValues = plugin.settings.customPriorities.map((p) => p.value); + if (plugin.settings.defaultTaskPriority !== "" && !validPriorityValues.includes(plugin.settings.defaultTaskPriority)) { + plugin.settings.defaultTaskPriority = validPriorityValues.length > 0 ? validPriorityValues[0] : ""; + save(); + } + const defaultSelect = createCardSelect( [ { value: "", label: translate("settings.defaults.options.noDefault") }, @@ -235,12 +242,23 @@ function renderPriorityList( (p) => p.id === priority.id ); if (priorityIndex !== -1) { + // Check if we're deleting the default priority + const wasDefault = plugin.settings.defaultTaskPriority === priority.value; + plugin.settings.customPriorities.splice(priorityIndex, 1); plugin.settings.customPriorities .sort((a, b) => a.weight - b.weight) .forEach((p, i) => { p.weight = i; }); + + // If deleted priority was the default, update to first available or empty + if (wasDefault) { + plugin.settings.defaultTaskPriority = plugin.settings.customPriorities.length > 0 + ? plugin.settings.customPriorities[0].value + : ""; + } + save(); renderPriorityList(container, plugin, save, translate, onPrioritiesChanged); if (onPrioritiesChanged) onPrioritiesChanged(); diff --git a/src/settings/tabs/taskProperties/statusPropertyCard.ts b/src/settings/tabs/taskProperties/statusPropertyCard.ts index d3756a7b..cc7d4d8e 100644 --- a/src/settings/tabs/taskProperties/statusPropertyCard.ts +++ b/src/settings/tabs/taskProperties/statusPropertyCard.ts @@ -31,6 +31,13 @@ export function renderStatusPropertyCard( plugin.settings.fieldMapping.status ); + // Validate defaultTaskStatus - if it doesn't exist in customStatuses, reset to first available + const validStatusValues = plugin.settings.customStatuses.map((s) => s.value); + if (!validStatusValues.includes(plugin.settings.defaultTaskStatus) && validStatusValues.length > 0) { + plugin.settings.defaultTaskStatus = validStatusValues[0]; + save(); + } + const defaultSelect = createCardSelect( plugin.settings.customStatuses.map((status) => ({ value: status.value, @@ -280,10 +287,19 @@ function renderStatusList( (s) => s.id === status.id ); if (statusIndex !== -1) { + // Check if we're deleting the default status + const wasDefault = plugin.settings.defaultTaskStatus === status.value; + plugin.settings.customStatuses.splice(statusIndex, 1); plugin.settings.customStatuses.forEach((s, i) => { s.order = i; }); + + // If deleted status was the default, update to first available status + if (wasDefault && plugin.settings.customStatuses.length > 0) { + plugin.settings.defaultTaskStatus = plugin.settings.customStatuses[0].value; + } + save(); renderStatusList(container, plugin, save, translate, onStatusesChanged); if (onStatusesChanged) onStatusesChanged();