From b77639378fe50f477df8d1001b113a7850ebe1cb Mon Sep 17 00:00:00 2001
From: Jed Fox <git@jedfox.com>
Date: Fri, 3 Feb 2023 14:53:47 -0500
Subject: [PATCH] Improve behavior of deleted payees/categories/accounts in
 rules (#617)

---
 .../src/components/ManageRules.js             | 21 ++++++++++++-------
 1 file changed, 14 insertions(+), 7 deletions(-)

diff --git a/packages/desktop-client/src/components/ManageRules.js b/packages/desktop-client/src/components/ManageRules.js
index 76ecda835..62ea2a204 100644
--- a/packages/desktop-client/src/components/ManageRules.js
+++ b/packages/desktop-client/src/components/ManageRules.js
@@ -110,14 +110,16 @@ export function Value({
       } else if (field === 'year') {
         return value ? formatDate(parseISO(value), 'yyyy') : null;
       } else {
-        let name = value;
-        if (data) {
+        if (data && data.length) {
           let item = data.find(item => item.id === value);
           if (item) {
-            name = describe(item);
+            return describe(item);
+          } else {
+            return '(deleted)';
           }
+        } else {
+          return '…';
         }
-        return name;
       }
     }
   }
@@ -508,15 +510,20 @@ function RulesList({
 function mapValue(field, value, { payees, categories, accounts }) {
   if (!value) return '';
 
+  let object = null;
   if (field === 'payee') {
-    return payees.find(p => p.id === value).name;
+    object = payees.find(p => p.id === value);
   } else if (field === 'category') {
-    return categories.find(c => c.id === value).name;
+    object = categories.find(c => c.id === value);
   } else if (field === 'account') {
-    return accounts.find(a => a.id === value).name;
+    object = accounts.find(a => a.id === value);
   } else {
     return value;
   }
+  if (object) {
+    return object.name;
+  }
+  return '(deleted)';
 }
 
 function ruleToString(rule, data) {
-- 
GitLab