diff --git a/packages/desktop-client/e2e/reports.test.js b/packages/desktop-client/e2e/reports.test.js index dc052e0698f..6d57c77a5e0 100644 --- a/packages/desktop-client/e2e/reports.test.js +++ b/packages/desktop-client/e2e/reports.test.js @@ -30,7 +30,7 @@ test.describe.parallel('Reports', () => { test('loads net worth and cash flow reports', async () => { const reports = await reportsPage.getAvailableReportList(); - expect(reports).toEqual(['Net Worth', 'Cash Flow']); + expect(reports).toEqual(['Net Worth', 'Cash Flow', 'Monthly Spending']); await expect(page).toMatchThemeScreenshots(); }); diff --git a/packages/desktop-client/e2e/reports.test.js-snapshots/Reports-loads-net-worth-and-cash-flow-reports-1-chromium-linux.png b/packages/desktop-client/e2e/reports.test.js-snapshots/Reports-loads-net-worth-and-cash-flow-reports-1-chromium-linux.png index 8e868b42bd5..693e47ae3f8 100644 Binary files a/packages/desktop-client/e2e/reports.test.js-snapshots/Reports-loads-net-worth-and-cash-flow-reports-1-chromium-linux.png and b/packages/desktop-client/e2e/reports.test.js-snapshots/Reports-loads-net-worth-and-cash-flow-reports-1-chromium-linux.png differ diff --git a/packages/desktop-client/e2e/reports.test.js-snapshots/Reports-loads-net-worth-and-cash-flow-reports-2-chromium-linux.png b/packages/desktop-client/e2e/reports.test.js-snapshots/Reports-loads-net-worth-and-cash-flow-reports-2-chromium-linux.png index d5344e30dde..f8d7f531f39 100644 Binary files a/packages/desktop-client/e2e/reports.test.js-snapshots/Reports-loads-net-worth-and-cash-flow-reports-2-chromium-linux.png and b/packages/desktop-client/e2e/reports.test.js-snapshots/Reports-loads-net-worth-and-cash-flow-reports-2-chromium-linux.png differ diff --git a/packages/desktop-client/e2e/reports.test.js-snapshots/Reports-loads-net-worth-and-cash-flow-reports-3-chromium-linux.png b/packages/desktop-client/e2e/reports.test.js-snapshots/Reports-loads-net-worth-and-cash-flow-reports-3-chromium-linux.png index fdaf3478c8d..f86c357494f 100644 Binary files a/packages/desktop-client/e2e/reports.test.js-snapshots/Reports-loads-net-worth-and-cash-flow-reports-3-chromium-linux.png and b/packages/desktop-client/e2e/reports.test.js-snapshots/Reports-loads-net-worth-and-cash-flow-reports-3-chromium-linux.png differ diff --git a/packages/desktop-client/src/components/reports/Overview.tsx b/packages/desktop-client/src/components/reports/Overview.tsx index 36692aea017..c21661e9567 100644 --- a/packages/desktop-client/src/components/reports/Overview.tsx +++ b/packages/desktop-client/src/components/reports/Overview.tsx @@ -80,7 +80,6 @@ export function Overview() { sessionStorage.setItem('url', location.pathname); const isDashboardsFeatureEnabled = useFeatureFlag('dashboards'); - const spendingReportFeatureFlag = useFeatureFlag('spendingReport'); const baseLayout = widgets .map(widget => ({ @@ -103,25 +102,7 @@ export function Overview() { return true; }); - const layout = - spendingReportFeatureFlag && - !isDashboardsFeatureEnabled && - !baseLayout.find(({ type }) => type === 'spending-card') - ? [ - ...baseLayout, - { - i: 'spending', - type: 'spending-card' as const, - x: 0, - y: Math.max(...baseLayout.map(({ y }) => y), 0) + 2, - w: 4, - h: 2, - minW: 3, - minH: 2, - meta: null, - }, - ] - : baseLayout; + const layout = baseLayout; const closeNotifications = () => { dispatch(removeNotification('import')); @@ -407,14 +388,10 @@ export function Overview() { name: 'net-worth-card' as const, text: t('Net worth graph'), }, - ...(spendingReportFeatureFlag - ? [ - { - name: 'spending-card' as const, - text: t('Spending analysis'), - }, - ] - : []), + { + name: 'spending-card' as const, + text: t('Spending analysis'), + }, { name: 'markdown-card' as const, text: t('Text widget'), diff --git a/packages/desktop-client/src/components/reports/reports/SpendingCard.tsx b/packages/desktop-client/src/components/reports/reports/SpendingCard.tsx index 306d92dca64..fb5407f237d 100644 --- a/packages/desktop-client/src/components/reports/reports/SpendingCard.tsx +++ b/packages/desktop-client/src/components/reports/reports/SpendingCard.tsx @@ -1,5 +1,5 @@ import React, { useState, useMemo } from 'react'; -import { Trans, useTranslation } from 'react-i18next'; +import { useTranslation } from 'react-i18next'; import * as monthUtils from 'loot-core/src/shared/months'; import { amountToCurrency } from 'loot-core/src/shared/util'; @@ -20,8 +20,6 @@ import { calculateSpendingReportTimeRange } from '../reportRanges'; import { createSpendingSpreadsheet } from '../spreadsheets/spending-spreadsheet'; import { useReport } from '../useReport'; -import { MissingReportCard } from './MissingReportCard'; - type SpendingCardProps = { widgetId: string; isEditing?: boolean; @@ -70,17 +68,6 @@ export function SpendingCard({ data.intervalData[todayDay][selection] - data.intervalData[todayDay].compare; - const spendingReportFeatureFlag = useFeatureFlag('spendingReport'); - - if (!spendingReportFeatureFlag) { - return ( - - - The experimental spending report feature has not been enabled. - - - ); - } return ( - - Monthly spending report - - diff --git a/packages/desktop-client/src/hooks/useFeatureFlag.ts b/packages/desktop-client/src/hooks/useFeatureFlag.ts index c733df9bcdf..fb4e205b2e7 100644 --- a/packages/desktop-client/src/hooks/useFeatureFlag.ts +++ b/packages/desktop-client/src/hooks/useFeatureFlag.ts @@ -5,7 +5,6 @@ import { useSyncedPref } from './useSyncedPref'; const DEFAULT_FEATURE_FLAG_STATE: Record = { reportBudget: false, goalTemplatesEnabled: false, - spendingReport: false, dashboards: false, actionTemplating: false, upcomingLengthAdjustment: false, diff --git a/packages/loot-core/migrations/1722804019000_create_dashboard_table.js b/packages/loot-core/migrations/1722804019000_create_dashboard_table.js index 228b85ede0d..fbed322fce5 100644 --- a/packages/loot-core/migrations/1722804019000_create_dashboard_table.js +++ b/packages/loot-core/migrations/1722804019000_create_dashboard_table.js @@ -17,7 +17,8 @@ export default async function runMigration(db) { INSERT INTO dashboard (id, type, width, height, x, y) VALUES ('${uuidv4()}','net-worth-card', 8, 2, 0, 0), - ('${uuidv4()}', 'cash-flow-card', 4, 2, 8, 0); + ('${uuidv4()}', 'cash-flow-card', 4, 2, 8, 0), + ('${uuidv4()}', 'spending-card', 4, 2, 0, 2); `); // Add custom reports to the dashboard diff --git a/packages/loot-core/src/shared/dashboard.ts b/packages/loot-core/src/shared/dashboard.ts index 1479d9b3b4b..e5fbe9da282 100644 --- a/packages/loot-core/src/shared/dashboard.ts +++ b/packages/loot-core/src/shared/dashboard.ts @@ -17,4 +17,12 @@ export const DEFAULT_DASHBOARD_STATE: NewWidget[] = [ y: 0, meta: null, }, + { + type: 'spending-card', + width: 4, + height: 2, + x: 0, + y: 2, + meta: null, + }, ]; diff --git a/packages/loot-core/src/types/prefs.d.ts b/packages/loot-core/src/types/prefs.d.ts index 8678cb0218c..5d695db083f 100644 --- a/packages/loot-core/src/types/prefs.d.ts +++ b/packages/loot-core/src/types/prefs.d.ts @@ -2,7 +2,6 @@ export type FeatureFlag = | 'dashboards' | 'reportBudget' | 'goalTemplatesEnabled' - | 'spendingReport' | 'actionTemplating' | 'upcomingLengthAdjustment'; diff --git a/upcoming-release-notes/3611.md b/upcoming-release-notes/3611.md new file mode 100644 index 00000000000..a2ab592631c --- /dev/null +++ b/upcoming-release-notes/3611.md @@ -0,0 +1,6 @@ +--- +category: Maintenance +authors: [carkom] +--- + +Removing feature flag from spending reports.