From 7d960579f95ce04e5e37c59f2b3670b3d2424bca Mon Sep 17 00:00:00 2001 From: Julian Dominguez-Schatz <julian.dominguezschatz@gmail.com> Date: Mon, 3 Jun 2024 07:39:57 -0700 Subject: [PATCH] Release 'Splits in rules' feature (#2789) * Release 'Splits in rules' feature * Add release notes * Add missed comment * Remove unused import * Fix failing test --- packages/desktop-client/e2e/rules.test.js | 5 ----- packages/desktop-client/src/components/modals/EditRule.jsx | 6 +----- .../desktop-client/src/components/settings/Experimental.tsx | 1 - packages/desktop-client/src/hooks/useFeatureFlag.ts | 1 - packages/loot-core/src/server/accounts/rules.ts | 4 ++-- packages/loot-core/src/types/prefs.d.ts | 3 +-- upcoming-release-notes/2789.md | 6 ++++++ 7 files changed, 10 insertions(+), 16 deletions(-) create mode 100644 upcoming-release-notes/2789.md diff --git a/packages/desktop-client/e2e/rules.test.js b/packages/desktop-client/e2e/rules.test.js index 69f5238fb..20cc4f7d1 100644 --- a/packages/desktop-client/e2e/rules.test.js +++ b/packages/desktop-client/e2e/rules.test.js @@ -69,11 +69,6 @@ test.describe('Rules', () => { }); test('creates a split transaction rule and makes sure it is applied when creating a transaction', async () => { - const settingsPage = await navigation.goToSettingsPage(); - await settingsPage.enableExperimentalFeature('splits in rules'); - - await expect(settingsPage.page.getByLabel('splits in rules')).toBeChecked(); - rulesPage = await navigation.goToRulesPage(); await rulesPage.createRule({ diff --git a/packages/desktop-client/src/components/modals/EditRule.jsx b/packages/desktop-client/src/components/modals/EditRule.jsx index 12ed1a593..104829ec3 100644 --- a/packages/desktop-client/src/components/modals/EditRule.jsx +++ b/packages/desktop-client/src/components/modals/EditRule.jsx @@ -30,7 +30,6 @@ import { } from 'loot-core/src/shared/util'; import { useDateFormat } from '../../hooks/useDateFormat'; -import { useFeatureFlag } from '../../hooks/useFeatureFlag'; import { useSelected, SelectedProvider } from '../../hooks/useSelected'; import { SvgDelete, SvgAdd, SvgSubtract } from '../../icons/v0'; import { SvgInformationOutline } from '../../icons/v1'; @@ -655,7 +654,6 @@ const conditionFields = [ ]); export function EditRule({ modalProps, defaultRule, onSave: originalOnSave }) { - const splitsEnabled = useFeatureFlag('splitsInRules'); const [conditions, setConditions] = useState( defaultRule.conditions.map(parse), ); @@ -883,9 +881,7 @@ export function EditRule({ modalProps, defaultRule, onSave: originalOnSave }) { }; // Enable editing existing split rules even if the feature has since been disabled. - const showSplitButton = splitsEnabled - ? actionSplits.length > 0 - : actionSplits.length > 1; + const showSplitButton = actionSplits.length > 0; return ( <Modal diff --git a/packages/desktop-client/src/components/settings/Experimental.tsx b/packages/desktop-client/src/components/settings/Experimental.tsx index c0917d169..41fe8d6e9 100644 --- a/packages/desktop-client/src/components/settings/Experimental.tsx +++ b/packages/desktop-client/src/components/settings/Experimental.tsx @@ -90,7 +90,6 @@ export function ExperimentalFeatures() { Goal templates </FeatureToggle> <FeatureToggle flag="simpleFinSync">SimpleFIN sync</FeatureToggle> - <FeatureToggle flag="splitsInRules">Splits in rules</FeatureToggle> </View> ) : ( <Link diff --git a/packages/desktop-client/src/hooks/useFeatureFlag.ts b/packages/desktop-client/src/hooks/useFeatureFlag.ts index d041c17bf..010b172ec 100644 --- a/packages/desktop-client/src/hooks/useFeatureFlag.ts +++ b/packages/desktop-client/src/hooks/useFeatureFlag.ts @@ -9,7 +9,6 @@ const DEFAULT_FEATURE_FLAG_STATE: Record<FeatureFlag, boolean> = { customReports: false, spendingReport: false, simpleFinSync: false, - splitsInRules: false, }; export function useFeatureFlag(name: FeatureFlag): boolean { diff --git a/packages/loot-core/src/server/accounts/rules.ts b/packages/loot-core/src/server/accounts/rules.ts index 96e9cd1d8..d164c5309 100644 --- a/packages/loot-core/src/server/accounts/rules.ts +++ b/packages/loot-core/src/server/accounts/rules.ts @@ -21,7 +21,6 @@ import { import { fastSetMerge } from '../../shared/util'; import { RuleConditionEntity } from '../../types/models'; import { RuleError } from '../errors'; -import * as prefs from '../prefs'; import { Schedule as RSchedule } from '../util/rschedule'; function assert(test, type, msg) { @@ -509,7 +508,8 @@ export function execActions(actions: Action[], transaction) { ) + 1; let update = execNonSplitActions(parentActions, transaction); - if (!prefs.getPrefs()?.['flags.splitsInRules'] || totalSplitCount === 1) { + if (totalSplitCount === 1) { + // No splits, no need to do anything else. return update; } diff --git a/packages/loot-core/src/types/prefs.d.ts b/packages/loot-core/src/types/prefs.d.ts index d3632e030..161c85faa 100644 --- a/packages/loot-core/src/types/prefs.d.ts +++ b/packages/loot-core/src/types/prefs.d.ts @@ -5,8 +5,7 @@ export type FeatureFlag = | 'goalTemplatesEnabled' | 'customReports' | 'spendingReport' - | 'simpleFinSync' - | 'splitsInRules'; + | 'simpleFinSync'; export type LocalPrefs = Partial< { diff --git a/upcoming-release-notes/2789.md b/upcoming-release-notes/2789.md new file mode 100644 index 000000000..5ac4832ad --- /dev/null +++ b/upcoming-release-notes/2789.md @@ -0,0 +1,6 @@ +--- +category: Features +authors: [jfdoming] +--- + +Release 'Splits in rules' feature -- GitLab