From ddb95359c30dcb20d0453e868d3da280742445b3 Mon Sep 17 00:00:00 2001 From: Matiss Janis Aboltins Date: Sat, 20 Dec 2025 19:45:22 +0000 Subject: [PATCH] lint: fix eslint/default-case rule violations (#6456) --- .oxlintrc.json | 25 ------------------- .../src/components/HelpMenu.tsx | 2 ++ .../budgetsummary/BudgetMonthMenu.tsx | 2 ++ .../budgetsummary/BudgetMonthMenu.tsx | 2 ++ .../mobile/budget/CategoryGroupActionMenu.tsx | 2 ++ .../modals/SelectLinkedAccountsModal.tsx | 2 ++ .../src/components/reports/Overview.tsx | 4 +++ .../reports/reports/CustomReport.tsx | 3 +++ .../reports/reports/CustomReportListCards.tsx | 2 ++ .../reports/reports/MissingReportCard.tsx | 2 ++ .../src/components/reports/util.ts | 2 ++ .../src/components/sidebar/Account.tsx | 3 +++ .../src/hooks/useSplitsExpanded.tsx | 2 ++ .../budget/category-template-context.ts | 5 ++++ .../src/server/budget/schedule-template.ts | 2 ++ .../loot-core/src/server/importers/ynab5.ts | 2 ++ packages/loot-core/src/server/rules/action.ts | 7 ++++++ packages/loot-core/src/shared/schedules.ts | 4 +++ upcoming-release-notes/6456.md | 6 +++++ 19 files changed, 54 insertions(+), 25 deletions(-) create mode 100644 upcoming-release-notes/6456.md diff --git a/.oxlintrc.json b/.oxlintrc.json index b401efbf44..b01da26c03 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -393,31 +393,6 @@ "rules": { "import/no-default-export": "off" } - }, - // TODO: enable these - { - "files": [ - "packages/desktop-client/src/components/budget/envelope/budgetsummary/BudgetMonthMenu.tsx", - "packages/desktop-client/src/components/budget/tracking/budgetsummary/BudgetMonthMenu.tsx", - "packages/desktop-client/src/components/HelpMenu.tsx", - "packages/desktop-client/src/components/mobile/budget/CategoryGroupActionMenu.tsx", - "packages/desktop-client/src/components/modals/SelectLinkedAccountsModal.tsx", - "packages/desktop-client/src/components/reports/Overview.tsx", - "packages/desktop-client/src/components/reports/reports/CustomReport.tsx", - "packages/desktop-client/src/components/reports/reports/CustomReportListCards.tsx", - "packages/desktop-client/src/components/reports/reports/MissingReportCard.tsx", - "packages/desktop-client/src/components/reports/util.ts", - "packages/desktop-client/src/components/sidebar/Account.tsx", - "packages/desktop-client/src/hooks/useSplitsExpanded.tsx", - "packages/loot-core/src/server/budget/category-template-context.ts", - "packages/loot-core/src/server/budget/schedule-template.ts", - "packages/loot-core/src/server/importers/ynab5.ts", - "packages/loot-core/src/server/rules/action.ts", - "packages/loot-core/src/shared/schedules.ts" - ], - "rules": { - "eslint/default-case": "off" - } } ] } diff --git a/packages/desktop-client/src/components/HelpMenu.tsx b/packages/desktop-client/src/components/HelpMenu.tsx index 7f14ff1e30..b14d00a2df 100644 --- a/packages/desktop-client/src/components/HelpMenu.tsx +++ b/packages/desktop-client/src/components/HelpMenu.tsx @@ -94,6 +94,8 @@ export const HelpMenu = () => { case 'goal-templates': dispatch(pushModal({ modal: { name: 'goal-templates' } })); break; + default: + throw new Error(`Unrecognized menu option: ${item}`); } }; diff --git a/packages/desktop-client/src/components/budget/envelope/budgetsummary/BudgetMonthMenu.tsx b/packages/desktop-client/src/components/budget/envelope/budgetsummary/BudgetMonthMenu.tsx index fc9d586b32..99b7c13482 100644 --- a/packages/desktop-client/src/components/budget/envelope/budgetsummary/BudgetMonthMenu.tsx +++ b/packages/desktop-client/src/components/budget/envelope/budgetsummary/BudgetMonthMenu.tsx @@ -62,6 +62,8 @@ export function BudgetMonthMenu({ case 'cleanup-goal-template': onEndOfMonthCleanup(); break; + default: + throw new Error(`Unrecognized menu option: ${name}`); } }} items={[ diff --git a/packages/desktop-client/src/components/budget/tracking/budgetsummary/BudgetMonthMenu.tsx b/packages/desktop-client/src/components/budget/tracking/budgetsummary/BudgetMonthMenu.tsx index e780c31241..9318a4b4eb 100644 --- a/packages/desktop-client/src/components/budget/tracking/budgetsummary/BudgetMonthMenu.tsx +++ b/packages/desktop-client/src/components/budget/tracking/budgetsummary/BudgetMonthMenu.tsx @@ -57,6 +57,8 @@ export function BudgetMonthMenu({ case 'overwrite-goal-template': onOverwriteWithBudgetTemplates(); break; + default: + throw new Error(`Unrecognized menu option: ${name}`); } }} items={[ diff --git a/packages/desktop-client/src/components/mobile/budget/CategoryGroupActionMenu.tsx b/packages/desktop-client/src/components/mobile/budget/CategoryGroupActionMenu.tsx index 4f88ed2e6d..ceeb57573e 100644 --- a/packages/desktop-client/src/components/mobile/budget/CategoryGroupActionMenu.tsx +++ b/packages/desktop-client/src/components/mobile/budget/CategoryGroupActionMenu.tsx @@ -26,6 +26,8 @@ export function CategoryGroupActionMenu({ case 'apply-budget-templates-in-group': onApplyBudgetTemplatesInGroup(); break; + default: + throw new Error(`Unrecognized menu option: ${name}`); } }} items={[ diff --git a/packages/desktop-client/src/components/modals/SelectLinkedAccountsModal.tsx b/packages/desktop-client/src/components/modals/SelectLinkedAccountsModal.tsx index 1eae5e1a00..b02b2184d2 100644 --- a/packages/desktop-client/src/components/modals/SelectLinkedAccountsModal.tsx +++ b/packages/desktop-client/src/components/modals/SelectLinkedAccountsModal.tsx @@ -106,6 +106,8 @@ export function SelectLinkedAccountsModal({ requisitionId: requisitionId!, externalAccounts: toSort as SyncServerGoCardlessAccount[], }; + default: + throw new Error(`Unrecognized sync source: ${syncSource}`); } }, [externalAccounts, syncSource, requisitionId]); diff --git a/packages/desktop-client/src/components/reports/Overview.tsx b/packages/desktop-client/src/components/reports/Overview.tsx index c64de9d49a..ccf0f700fd 100644 --- a/packages/desktop-client/src/components/reports/Overview.tsx +++ b/packages/desktop-client/src/components/reports/Overview.tsx @@ -510,6 +510,10 @@ export function Overview() { case 'import': onImport(); break; + default: + throw new Error( + `Unrecognized menu option: ${item}`, + ); } }} items={[ diff --git a/packages/desktop-client/src/components/reports/reports/CustomReport.tsx b/packages/desktop-client/src/components/reports/reports/CustomReport.tsx index 0a10694516..4bb9133795 100644 --- a/packages/desktop-client/src/components/reports/reports/CustomReport.tsx +++ b/packages/desktop-client/src/components/reports/reports/CustomReport.tsx @@ -107,6 +107,9 @@ function useSelectedCategories( return categories.filter( ({ id }) => !existingCategoryCondition.value.includes(id), ); + + default: + break; } return categories; diff --git a/packages/desktop-client/src/components/reports/reports/CustomReportListCards.tsx b/packages/desktop-client/src/components/reports/reports/CustomReportListCards.tsx index 786fa43864..bbcd81cb75 100644 --- a/packages/desktop-client/src/components/reports/reports/CustomReportListCards.tsx +++ b/packages/desktop-client/src/components/reports/reports/CustomReportListCards.tsx @@ -147,6 +147,8 @@ function CustomReportListCardsInner({ case 'rename': setNameMenuOpen(true); break; + default: + throw new Error(`Unrecognized menu option: ${item}`); } }} > diff --git a/packages/desktop-client/src/components/reports/reports/MissingReportCard.tsx b/packages/desktop-client/src/components/reports/reports/MissingReportCard.tsx index aca5e39969..99818e3019 100644 --- a/packages/desktop-client/src/components/reports/reports/MissingReportCard.tsx +++ b/packages/desktop-client/src/components/reports/reports/MissingReportCard.tsx @@ -29,6 +29,8 @@ export function MissingReportCard({ case 'remove': onRemove(); break; + default: + throw new Error(`Unrecognized menu option: ${item}`); } }} > diff --git a/packages/desktop-client/src/components/reports/util.ts b/packages/desktop-client/src/components/reports/util.ts index c64693a01c..04bab6c755 100644 --- a/packages/desktop-client/src/components/reports/util.ts +++ b/packages/desktop-client/src/components/reports/util.ts @@ -114,6 +114,8 @@ export function calculateHasWarning( return true; } break; + default: + break; } } return false; diff --git a/packages/desktop-client/src/components/sidebar/Account.tsx b/packages/desktop-client/src/components/sidebar/Account.tsx index 0fc42a0dc4..f500d0e3df 100644 --- a/packages/desktop-client/src/components/sidebar/Account.tsx +++ b/packages/desktop-client/src/components/sidebar/Account.tsx @@ -265,6 +265,9 @@ export function Account>({ setIsEditing(true); break; } + default: { + throw new Error(`Unrecognized menu option: ${type}`); + } } setMenuOpen(false); }} diff --git a/packages/desktop-client/src/hooks/useSplitsExpanded.tsx b/packages/desktop-client/src/hooks/useSplitsExpanded.tsx index 8f3051bf27..7fa5b1c154 100644 --- a/packages/desktop-client/src/hooks/useSplitsExpanded.tsx +++ b/packages/desktop-client/src/hooks/useSplitsExpanded.tsx @@ -156,6 +156,8 @@ export function SplitsExpandedProvider({ }; case 'finish-switch-mode': return { ...state, transitionId: null }; + default: + throw new Error('Unrecognized action'); } }, previousState.current || { diff --git a/packages/loot-core/src/server/budget/category-template-context.ts b/packages/loot-core/src/server/budget/category-template-context.ts index a3b490c667..3bef60b5be 100644 --- a/packages/loot-core/src/server/budget/category-template-context.ts +++ b/packages/loot-core/src/server/budget/category-template-context.ts @@ -212,6 +212,9 @@ export class CategoryTemplateContext { newBudget = await CategoryTemplateContext.runAverage(template, this); break; } + default: { + break; + } } available = available - newBudget; @@ -591,6 +594,8 @@ export class CategoryTemplateContext { dateShiftFunction = (date, numPeriods) => monthUtils.addMonths(date, numPeriods * 12); break; + default: + throw new Error(`Unrecognized periodic period: ${period}`); } //shift the starting date until its in our month or in the future diff --git a/packages/loot-core/src/server/budget/schedule-template.ts b/packages/loot-core/src/server/budget/schedule-template.ts index c4540bd8b2..3d714d6aa9 100644 --- a/packages/loot-core/src/server/budget/schedule-template.ts +++ b/packages/loot-core/src/server/budget/schedule-template.ts @@ -237,6 +237,8 @@ function getSinkingBaseContributionTotal(t: ScheduleTemplateTarget[]) { if (intervalMonths === 0) intervalMonths = 1; monthlyAmount = schedule.target / intervalMonths; break; + default: + break; } total += monthlyAmount; } diff --git a/packages/loot-core/src/server/importers/ynab5.ts b/packages/loot-core/src/server/importers/ynab5.ts index c121d44ca6..48e213e7b6 100644 --- a/packages/loot-core/src/server/importers/ynab5.ts +++ b/packages/loot-core/src/server/importers/ynab5.ts @@ -346,6 +346,8 @@ async function importTransactions( // So we advance to the next subtransaction subtransactionIdx++; break; + default: + throw new Error(`Unrecognized orphan transfer comparator result`); } } while ( transactionIdx < transactions.length && diff --git a/packages/loot-core/src/server/rules/action.ts b/packages/loot-core/src/server/rules/action.ts index 8425fb443a..7a955a9bb1 100644 --- a/packages/loot-core/src/server/rules/action.ts +++ b/packages/loot-core/src/server/rules/action.ts @@ -127,6 +127,9 @@ export class Action { object[this.field] = String(result); break; } + default: { + break; + } } } catch (err) { const error = `Error executing formula for “${this.field}”: ${err instanceof Error ? err.message : String(err)}`; @@ -165,6 +168,8 @@ export class Action { case 'boolean': object[this.field] = object[this.field] === 'true'; break; + default: + break; } } else { object[this.field] = this.value; @@ -180,6 +185,7 @@ export class Action { object.amount = this.value; break; default: + break; } break; case 'link-schedule': @@ -199,6 +205,7 @@ export class Action { object['tombstone'] = 1; break; default: + break; } } diff --git a/packages/loot-core/src/shared/schedules.ts b/packages/loot-core/src/shared/schedules.ts index 005939d5a9..8f05cb982b 100644 --- a/packages/loot-core/src/shared/schedules.ts +++ b/packages/loot-core/src/shared/schedules.ts @@ -55,6 +55,8 @@ export function getStatusLabel(status: string) { return t('missed'); case 'scheduled': return t('scheduled'); + default: + return t('unknown'); } } @@ -124,6 +126,7 @@ export function getRecurringDescription( }); break; default: + break; } const weekendSolveModeString = config.weekendSolveMode @@ -276,6 +279,7 @@ export function recurConfigToRSchedule(config) { base.end = monthUtils.parseDate(config.endDate); break; default: + break; } const abbrevDay = name => name.slice(0, 2).toUpperCase(); diff --git a/upcoming-release-notes/6456.md b/upcoming-release-notes/6456.md new file mode 100644 index 0000000000..c62dde3378 --- /dev/null +++ b/upcoming-release-notes/6456.md @@ -0,0 +1,6 @@ +--- +category: Maintenance +authors: [MatissJanis] +--- + +lint: fix eslint/default-case rule violations