diff --git a/packages/desktop-client/src/components/settings/Experimental.tsx b/packages/desktop-client/src/components/settings/Experimental.tsx index fec5f04cabe68a3f14726d6a1ca1c39fcfb80aa6..ab49f18c426f77ba4ae8d7ca5d3c7f07ef2fcf8e 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 689b3772e79eb32d54b9cb47af1a63b24a486779..f6756404513f710a1bbf10ff4981fc7238e709f3 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 be2669d1ff2d82daea376d2d63433877503329ba..f5bc30a92fbc76e1bb18729c4c4bd81488c9cbb9 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 ee5aa40ec642c0464cc46e9be41be8fe0bac425d..3d3664a87cb79bda0a980073b77cffa48a37eb06 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 0000000000000000000000000000000000000000..51cfaaee1cb79655cf6acc76fe7f62bef54b14e1 --- /dev/null +++ b/upcoming-release-notes/3262.md @@ -0,0 +1,6 @@ +--- +category: Maintenance +authors: [Matissjanis] +--- + +Cleanup `iterableTopologicalSort` feature flag.