From fa6cc264168f6ce9b8d3cf92ce1c604499a9f85d Mon Sep 17 00:00:00 2001
From: Matiss Janis Aboltins <matiss@mja.lv>
Date: Wed, 14 Aug 2024 19:42:04 +0100
Subject: [PATCH] :recycle: cleanup iterableTopologicalSort feature flag
 (#3262)

---
 .../src/components/settings/Experimental.tsx  |  3 --
 .../src/hooks/useFeatureFlag.ts               |  1 -
 .../spreadsheet/graph-data-structure.ts       | 30 +------------------
 packages/loot-core/src/types/prefs.d.ts       |  3 +-
 upcoming-release-notes/3262.md                |  6 ++++
 5 files changed, 8 insertions(+), 35 deletions(-)
 create mode 100644 upcoming-release-notes/3262.md

diff --git a/packages/desktop-client/src/components/settings/Experimental.tsx b/packages/desktop-client/src/components/settings/Experimental.tsx
index fec5f04ca..ab49f18c4 100644
--- a/packages/desktop-client/src/components/settings/Experimental.tsx
+++ b/packages/desktop-client/src/components/settings/Experimental.tsx
@@ -89,9 +89,6 @@ export function ExperimentalFeatures() {
               Goal templates
             </FeatureToggle>
             <FeatureToggle flag="simpleFinSync">SimpleFIN sync</FeatureToggle>
-            <FeatureToggle flag="iterableTopologicalSort">
-              Iterable topological sort budget
-            </FeatureToggle>
           </View>
         ) : (
           <Link
diff --git a/packages/desktop-client/src/hooks/useFeatureFlag.ts b/packages/desktop-client/src/hooks/useFeatureFlag.ts
index 689b3772e..f67564045 100644
--- a/packages/desktop-client/src/hooks/useFeatureFlag.ts
+++ b/packages/desktop-client/src/hooks/useFeatureFlag.ts
@@ -8,7 +8,6 @@ const DEFAULT_FEATURE_FLAG_STATE: Record<FeatureFlag, boolean> = {
   goalTemplatesEnabled: false,
   spendingReport: false,
   simpleFinSync: false,
-  iterableTopologicalSort: true,
 };
 
 export function useFeatureFlag(name: FeatureFlag): boolean {
diff --git a/packages/loot-core/src/server/spreadsheet/graph-data-structure.ts b/packages/loot-core/src/server/spreadsheet/graph-data-structure.ts
index be2669d1f..f5bc30a92 100644
--- a/packages/loot-core/src/server/spreadsheet/graph-data-structure.ts
+++ b/packages/loot-core/src/server/spreadsheet/graph-data-structure.ts
@@ -1,5 +1,3 @@
-import { getPrefs } from '../prefs';
-
 // @ts-strict-ignore
 export function Graph() {
   const graph = {
@@ -81,42 +79,16 @@ export function Graph() {
   function topologicalSort(sourceNodes) {
     const visited = new Set();
     const sorted = [];
-    const prefs = getPrefs();
-    const iterableTopologicalSort =
-      prefs != null ? prefs['flags.iterableTopologicalSort'] : false;
 
     sourceNodes.forEach(name => {
       if (!visited.has(name)) {
-        if (iterableTopologicalSort) {
-          topologicalSortIterable(name, visited, sorted);
-        } else {
-          topologicalSortUntil(name, visited, sorted, 0);
-        }
+        topologicalSortIterable(name, visited, sorted);
       }
     });
 
     return sorted;
   }
 
-  function topologicalSortUntil(name, visited, sorted, level) {
-    visited.add(name);
-    if (level > 2500) {
-      console.error('Limit of recursions reached while sorting budget: 2500');
-      return;
-    }
-
-    const iter = adjacent(name).values();
-    let cur = iter.next();
-    while (!cur.done) {
-      if (!visited.has(cur.value)) {
-        topologicalSortUntil(cur.value, visited, sorted, level + 1);
-      }
-      cur = iter.next();
-    }
-
-    sorted.unshift(name);
-  }
-
   function topologicalSortIterable(name, visited, sorted) {
     const stackTrace: StackItem[] = [];
 
diff --git a/packages/loot-core/src/types/prefs.d.ts b/packages/loot-core/src/types/prefs.d.ts
index ee5aa40ec..3d3664a87 100644
--- a/packages/loot-core/src/types/prefs.d.ts
+++ b/packages/loot-core/src/types/prefs.d.ts
@@ -6,8 +6,7 @@ export type FeatureFlag =
   | 'reportBudget'
   | 'goalTemplatesEnabled'
   | 'spendingReport'
-  | 'simpleFinSync'
-  | 'iterableTopologicalSort';
+  | 'simpleFinSync';
 
 /**
  * Cross-device preferences. These sync across devices when they are changed.
diff --git a/upcoming-release-notes/3262.md b/upcoming-release-notes/3262.md
new file mode 100644
index 000000000..51cfaaee1
--- /dev/null
+++ b/upcoming-release-notes/3262.md
@@ -0,0 +1,6 @@
+---
+category: Maintenance
+authors: [Matissjanis]
+---
+
+Cleanup `iterableTopologicalSort` feature flag.
-- 
GitLab