From 146aeb1f5ae965c3fe2f765714d25c9ae5bb71f1 Mon Sep 17 00:00:00 2001 From: Matiss Janis Aboltins Date: Sat, 20 Dec 2025 21:38:05 +0000 Subject: [PATCH] lint: fix most eslint/no-empty-function violations (#6457) * lint: fix most eslint/no-empty-function violations * Remove unnecessary closing brace in .oxlintrc.json --- .oxlintrc.json | 21 +++++++++++++- .../src/browser-preload.browser.js | 28 ++++++++++++++----- .../components/accounts/Reconcile.test.tsx | 4 +-- .../components/budget/envelope/IncomeMenu.tsx | 4 +-- .../src/components/payees/PayeeTableRow.tsx | 3 -- .../src/components/reports/Header.tsx | 16 +++++++---- .../components/reports/reports/Crossover.tsx | 4 --- .../components/reports/reports/Summary.tsx | 4 --- .../src/components/settings/AuthSettings.tsx | 8 ++---- .../transactions/TransactionsTable.test.tsx | 2 +- packages/desktop-client/src/index.tsx | 2 ++ .../desktop-client/src/modals/modalsSlice.ts | 4 +-- .../desktop-client/src/queries/liveQuery.ts | 6 ++-- .../src/queries/pagedQuery.test.ts | 4 +-- .../desktop-client/src/queries/pagedQuery.ts | 6 ++-- packages/desktop-electron/preload.ts | 5 +++- .../platform/client/fetch/index.browser.ts | 12 ++++++-- .../src/platform/client/fetch/index.ts | 8 ++++-- .../platform/exceptions/__mocks__/index.ts | 8 ++++-- .../src/platform/exceptions/index.ts | 4 ++- .../server/asyncStorage/__mocks__/index.ts | 4 ++- .../src/platform/server/asyncStorage/index.ts | 4 ++- .../server/connection/__mocks__/index.ts | 4 ++- .../platform/server/connection/index.api.ts | 4 ++- .../server/connection/index.electron.ts | 4 ++- .../src/platform/server/connection/index.ts | 4 ++- .../platform/server/sqlite/index.electron.ts | 4 ++- packages/loot-core/src/server/api.ts | 4 ++- .../loot-core/src/server/budgetfiles/app.ts | 4 ++- .../loot-core/src/server/cloud-storage.ts | 4 ++- .../loot-core/src/server/importers/actual.ts | 4 ++- .../src/server/spreadsheet/spreadsheet.ts | 5 ++-- .../src/server/sync/sync.property.test.ts | 2 +- .../transactions/import/parse-file.test.ts | 2 +- packages/loot-core/src/shared/async.test.ts | 4 ++- packages/loot-core/typings/window.ts | 7 ----- .../sync-server/src/app-cors-proxy.test.js | 6 ++-- upcoming-release-notes/6457.md | 6 ++++ 38 files changed, 148 insertions(+), 81 deletions(-) create mode 100644 upcoming-release-notes/6457.md diff --git a/.oxlintrc.json b/.oxlintrc.json index b01da26c03..489261e876 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -161,7 +161,7 @@ "eslint/no-dupe-keys": "warn", "eslint/no-duplicate-case": "warn", "eslint/no-empty-character-class": "warn", - // "eslint/no-empty-function": "warn", // TODO: enable this + "eslint/no-empty-function": "warn", "eslint/no-empty-pattern": "warn", "eslint/no-eval": "warn", "eslint/no-ex-assign": "warn", @@ -393,6 +393,25 @@ "rules": { "import/no-default-export": "off" } + }, + // TODO: enable these + { + "files": [ + "packages/desktop-client/src/components/admin/UserAccess/UserAccess.tsx", + "packages/desktop-client/src/components/admin/UserDirectory/UserDirectory.tsx", + "packages/desktop-client/src/components/budget/BudgetCategories.tsx", + "packages/desktop-client/src/components/budget/envelope/BalanceMovementMenu.tsx", + "packages/desktop-client/src/components/ManageRules.tsx", + "packages/desktop-client/src/components/mobile/budget/ExpenseGroupList.tsx", + "packages/desktop-client/src/components/modals/EditFieldModal.tsx", + "packages/desktop-client/src/components/reports/reports/Calendar.tsx", + "packages/desktop-client/src/components/schedules/ScheduleLink.tsx", + "packages/desktop-client/src/components/ServerContext.tsx", + "packages/desktop-client/src/components/table.tsx" + ], + "rules": { + "eslint/no-empty-function": "off" + } } ] } diff --git a/packages/desktop-client/src/browser-preload.browser.js b/packages/desktop-client/src/browser-preload.browser.js index 09219fe69f..81258756bf 100644 --- a/packages/desktop-client/src/browser-preload.browser.js +++ b/packages/desktop-client/src/browser-preload.browser.js @@ -86,9 +86,13 @@ global.Actual = { }); }, - startSyncServer: () => {}, + startSyncServer: () => { + // Only for electron app + }, - stopSyncServer: () => {}, + stopSyncServer: () => { + // Only for electron app + }, isSyncServerRunning: () => false, @@ -96,7 +100,9 @@ global.Actual = { return ''; }, - restartElectronServer: () => {}, + restartElectronServer: () => { + // Only for electron app + }, openFileDialog: async ({ filters = [] }) => { const FILE_ACCEPT_OVERRIDES = { @@ -192,17 +198,23 @@ global.Actual = { openInFileManager: () => { // File manager not available in browser }, - onEventFromMain: () => {}, + onEventFromMain: () => { + // Only for electron app + }, isUpdateReadyForDownload: () => isUpdateReadyForDownload, waitForUpdateReadyForDownload: () => isUpdateReadyForDownloadPromise, applyAppUpdate: async () => { updateSW(); // Wait for the app to reload - await new Promise(() => {}); + await new Promise(() => { + // Do nothing + }); }, - ipcConnect: () => {}, + ipcConnect: () => { + // Only for electron app + }, getServerSocket: async () => { return worker; }, @@ -211,5 +223,7 @@ global.Actual = { window.__actionsForMenu.saveGlobalPrefs({ prefs: { theme } }); }, - moveBudgetDirectory: () => {}, + moveBudgetDirectory: () => { + // Only for electron app + }, }; diff --git a/packages/desktop-client/src/components/accounts/Reconcile.test.tsx b/packages/desktop-client/src/components/accounts/Reconcile.test.tsx index e2ae95b5a0..49c67ca55c 100644 --- a/packages/desktop-client/src/components/accounts/Reconcile.test.tsx +++ b/packages/desktop-client/src/components/accounts/Reconcile.test.tsx @@ -71,7 +71,7 @@ describe('ReconcilingMessage math & UI', () => { {}} + onDone={vi.fn()} onCreateTransaction={onCreateTransaction} /> , @@ -99,7 +99,7 @@ describe('ReconcilingMessage math & UI', () => { {}} + onDone={vi.fn()} onCreateTransaction={onCreateTransaction} /> , diff --git a/packages/desktop-client/src/components/budget/envelope/IncomeMenu.tsx b/packages/desktop-client/src/components/budget/envelope/IncomeMenu.tsx index 1a553f8e0c..3c75388d70 100644 --- a/packages/desktop-client/src/components/budget/envelope/IncomeMenu.tsx +++ b/packages/desktop-client/src/components/budget/envelope/IncomeMenu.tsx @@ -13,7 +13,7 @@ type IncomeMenuProps = { month: string; onBudgetAction: (month: string, action: string, arg?: unknown) => void; onShowActivity: (id: CategoryEntity['id'], month: string) => void; - onClose?: () => void; + onClose: () => void; }; export function IncomeMenu({ @@ -21,7 +21,7 @@ export function IncomeMenu({ month, onBudgetAction, onShowActivity, - onClose = () => {}, + onClose, }: IncomeMenuProps) { const { t } = useTranslation(); const carryover = useEnvelopeSheetValue( diff --git a/packages/desktop-client/src/components/payees/PayeeTableRow.tsx b/packages/desktop-client/src/components/payees/PayeeTableRow.tsx index 177bd17053..838e0b41d8 100644 --- a/packages/desktop-client/src/components/payees/PayeeTableRow.tsx +++ b/packages/desktop-client/src/components/payees/PayeeTableRow.tsx @@ -234,9 +234,6 @@ export const PayeeTableRow = memo( {}} - onUpdate={() => {}} - onClick={() => {}} style={{ display: 'flex', justifyContent: 'center', diff --git a/packages/desktop-client/src/components/reports/Header.tsx b/packages/desktop-client/src/components/reports/Header.tsx index c8b4d8d98d..e6e1b353b6 100644 --- a/packages/desktop-client/src/components/reports/Header.tsx +++ b/packages/desktop-client/src/components/reports/Header.tsx @@ -41,22 +41,26 @@ type HeaderProps = { end: TimeFrame['end'], mode: TimeFrame['mode'], ) => void; - conditionsOp: 'and' | 'or'; - onUpdateFilter: ComponentProps['onUpdate']; - onDeleteFilter: ComponentProps['onDelete']; - onConditionsOpChange: ComponentProps< - typeof AppliedFilters - >['onConditionsOpChange']; children?: ReactNode; inlineContent?: ReactNode; } & ( | { filters: RuleConditionEntity[]; onApply: (conditions: RuleConditionEntity) => void; + onUpdateFilter: ComponentProps['onUpdate']; + onDeleteFilter: ComponentProps['onDelete']; + conditionsOp: 'and' | 'or'; + onConditionsOpChange: ComponentProps< + typeof AppliedFilters + >['onConditionsOpChange']; } | { filters?: never; onApply?: never; + onUpdateFilter?: never; + onDeleteFilter?: never; + conditionsOp?: never; + onConditionsOpChange?: never; } ); diff --git a/packages/desktop-client/src/components/reports/reports/Crossover.tsx b/packages/desktop-client/src/components/reports/reports/Crossover.tsx index a66b8ee547..34f761b8a3 100644 --- a/packages/desktop-client/src/components/reports/reports/Crossover.tsx +++ b/packages/desktop-client/src/components/reports/reports/Crossover.tsx @@ -433,10 +433,6 @@ function CrossoverInner({ widget }: CrossoverInnerProps) { earliestTransaction={earliestTransaction} latestTransaction={latestTransaction} onChangeDates={onChangeDates} - conditionsOp="and" - onUpdateFilter={() => {}} - onDeleteFilter={() => {}} - onConditionsOpChange={() => {}} > {widget && (