From 1117451b69183b7f0533e29a7ad5714dca8e303f Mon Sep 17 00:00:00 2001 From: Matiss Janis Aboltins Date: Mon, 8 Dec 2025 16:39:27 +0000 Subject: [PATCH] Fix lint violations (vol.2) (#6300) * Fix lint violations * Refactor code for clarity and consistency - Updated various components to improve readability and maintainability, including: - Changed `while (1)` to `while (true)` for better clarity. - Simplified conditional checks by removing unnecessary boolean casts. - Added missing `key` props in mapped elements to ensure proper rendering in lists. - Adjusted the handling of hidden states in budget components for clearer logic. - Cleaned up linting rules in `.oxlintrc.json` to streamline configuration. * Fix unused variable warning in electronApp fixture * Fix linting comment in fixtures.ts --- .oxlintrc.json | 5 ----- packages/crdt/src/crdt/merkle.ts | 2 +- .../src/components/CommandBar.tsx | 2 +- .../components/autocomplete/Autocomplete.tsx | 2 +- .../components/autocomplete/FilterList.tsx | 2 +- .../components/autocomplete/ReportList.tsx | 2 +- .../components/mobile/budget/BudgetPage.tsx | 4 ++-- .../mobile/budget/IncomeCategoryListItem.tsx | 2 +- .../components/mobile/budget/IncomeGroup.tsx | 2 +- packages/desktop-electron/e2e/fixtures.ts | 1 + packages/docs/docs/api/APIList.js | 5 ++++- packages/docs/docs/api/types.js | 18 ++++++++++++----- packages/docs/src/components/Key.jsx | 20 +++++++++---------- packages/loot-core/src/server/main.test.ts | 11 +++++----- .../src/server/schedules/find-schedules.ts | 2 +- upcoming-release-notes/6300.md | 6 ++++++ 16 files changed, 49 insertions(+), 37 deletions(-) create mode 100644 upcoming-release-notes/6300.md diff --git a/.oxlintrc.json b/.oxlintrc.json index 101a879333..22caa3bc1f 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -10,12 +10,7 @@ "jsx-a11y/prefer-tag-over-role": "off", "jsx-a11y/role-has-required-aria-props": "off", "jsx-a11y/tabindex-no-positive": "off", - "no-async-promise-executor": "off", "no-autofocus": "off", - "no-constant-condition": "off", - "no-empty-pattern": "off", - "no-extra-boolean-cast": "off", - "react/jsx-key": "off", }, "overrides": [ { diff --git a/packages/crdt/src/crdt/merkle.ts b/packages/crdt/src/crdt/merkle.ts index f9b48c8871..e2e845c13a 100644 --- a/packages/crdt/src/crdt/merkle.ts +++ b/packages/crdt/src/crdt/merkle.ts @@ -88,7 +88,7 @@ export function diff(trie1: TrieNode, trie2: TrieNode): number | null { // where the hashes differ, or otherwise when there are no leaves // left (this shouldn't happen, if that's the case the hash check at // the top of this function should pass) - while (1) { + while (true) { const keyset = new Set([...getKeys(node1), ...getKeys(node2)]); const keys = [...keyset.values()]; keys.sort(); diff --git a/packages/desktop-client/src/components/CommandBar.tsx b/packages/desktop-client/src/components/CommandBar.tsx index 99fdb2492c..a7d063ef06 100644 --- a/packages/desktop-client/src/components/CommandBar.tsx +++ b/packages/desktop-client/src/components/CommandBar.tsx @@ -185,7 +185,7 @@ export function CommandBar() { items: navigationItems, onSelect: ({ id }) => { const item = navigationItems.find(item => item.id === id); - if (!!item) handleNavigate(item.path); + if (item) handleNavigate(item.path); }, }, { diff --git a/packages/desktop-client/src/components/autocomplete/Autocomplete.tsx b/packages/desktop-client/src/components/autocomplete/Autocomplete.tsx index d6f8de109d..73b1e827dd 100644 --- a/packages/desktop-client/src/components/autocomplete/Autocomplete.tsx +++ b/packages/desktop-client/src/components/autocomplete/Autocomplete.tsx @@ -157,6 +157,7 @@ function defaultRenderItems( const name = getItemName(item); return (
( // * https://github.com/WebKit/WebKit/blob/58956cf59ba01267644b5e8fe766efa7aa6f0c5c/Source/WebCore/page/ios/ContentChangeObserver.cpp // * https://github.com/WebKit/WebKit/blob/58956cf59ba01267644b5e8fe766efa7aa6f0c5c/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm#L783 role="button" - key={name} className={css({ padding: 5, cursor: 'default', diff --git a/packages/desktop-client/src/components/autocomplete/FilterList.tsx b/packages/desktop-client/src/components/autocomplete/FilterList.tsx index fd441515e5..642181b9ee 100644 --- a/packages/desktop-client/src/components/autocomplete/FilterList.tsx +++ b/packages/desktop-client/src/components/autocomplete/FilterList.tsx @@ -31,8 +31,8 @@ export function FilterList({ {items.map((item, idx) => { return [
({ {items.map((item, idx) => { return [
g.id === groupId); onSaveGroup({ ...group, - hidden: !!!group.hidden, + hidden: group.hidden ? false : true, }); dispatch(collapseModals({ rootModalName: 'category-group-menu' })); }, @@ -301,7 +301,7 @@ export function BudgetPage() { const category = categories.find(c => c.id === categoryId); onSaveCategory({ ...category, - hidden: !!!category.hidden, + hidden: category.hidden ? false : true, }); dispatch(collapseModals({ rootModalName: 'category-menu' })); }, diff --git a/packages/desktop-client/src/components/mobile/budget/IncomeCategoryListItem.tsx b/packages/desktop-client/src/components/mobile/budget/IncomeCategoryListItem.tsx index fa8486b7fa..6dd6a26143 100644 --- a/packages/desktop-client/src/components/mobile/budget/IncomeCategoryListItem.tsx +++ b/packages/desktop-client/src/components/mobile/budget/IncomeCategoryListItem.tsx @@ -258,7 +258,7 @@ export function IncomeCategoryListItem({ paddingLeft: 5, paddingRight: 5, borderBottomWidth: 1, - opacity: !!category.hidden ? 0.5 : undefined, + opacity: category.hidden ? 0.5 : undefined, backgroundColor: monthUtils.isCurrentMonth(month) ? theme.budgetCurrentMonth : theme.budgetOtherMonth, diff --git a/packages/desktop-client/src/components/mobile/budget/IncomeGroup.tsx b/packages/desktop-client/src/components/mobile/budget/IncomeGroup.tsx index d4183e09a2..cf1870792d 100644 --- a/packages/desktop-client/src/components/mobile/budget/IncomeGroup.tsx +++ b/packages/desktop-client/src/components/mobile/budget/IncomeGroup.tsx @@ -133,7 +133,7 @@ function IncomeGroupHeader({ justifyContent: 'space-between', paddingLeft: 5, paddingRight: 5, - opacity: !!group.hidden ? 0.5 : undefined, + opacity: group.hidden ? 0.5 : undefined, backgroundColor: monthUtils.isCurrentMonth(month) ? theme.budgetHeaderCurrentMonth : theme.budgetHeaderOtherMonth, diff --git a/packages/desktop-electron/e2e/fixtures.ts b/packages/desktop-electron/e2e/fixtures.ts index a4721e3496..ff4f8478ec 100644 --- a/packages/desktop-electron/e2e/fixtures.ts +++ b/packages/desktop-electron/e2e/fixtures.ts @@ -17,6 +17,7 @@ type ElectronFixtures = { // Create the extended test with fixtures export const test = base.extend({ + // oxlint-disable-next-line no-empty-pattern electronApp: async ({}, use, testInfo: TestInfo) => { const uniqueTestId = testInfo.testId.replace(/[^\w-]/g, '-'); const testDataDir = path.join('e2e/data/', uniqueTestId); diff --git a/packages/docs/docs/api/APIList.js b/packages/docs/docs/api/APIList.js index cdf6d4eebf..66faebefab 100644 --- a/packages/docs/docs/api/APIList.js +++ b/packages/docs/docs/api/APIList.js @@ -9,7 +9,10 @@ export default function APIList({ title, sections }) { {sections.map(name => { let id = name.replace(/[ -]/g, '-').toLowerCase(); return ( -
  • +
  • {name} diff --git a/packages/docs/docs/api/types.js b/packages/docs/docs/api/types.js index 26da9e75e5..c34eef09d5 100644 --- a/packages/docs/docs/api/types.js +++ b/packages/docs/docs/api/types.js @@ -522,7 +522,9 @@ function Table({ style, headers, className, children }) { {headers.map(header => ( - {header} + + {header} + ))} @@ -537,6 +539,7 @@ export function PrimitiveTypeList() { {Object.keys(types).map(name => { return ( {fields.map(field => { return ( - + {field.name} @@ -598,7 +601,9 @@ function Argument({ arg }) { {arg.name ? arg.name + ': ' : ''} {'{ '} - {arg.properties.map(prop => ).map(insertCommas)} + {arg.properties + .map(prop => ) + .map(insertCommas)} {' }'} ); @@ -628,8 +633,11 @@ export function Method({ name, args, returns = 'Promise', children }) {

    - {name}({args.map(arg => ).map(insertCommas)}){' '} - → {returns} + {name}( + {args + .map(arg => ) + .map(insertCommas)} + ) → {returns}
    {children && React.cloneElement(children, {})} diff --git a/packages/docs/src/components/Key.jsx b/packages/docs/src/components/Key.jsx index 7b6b63cf61..ee4f012a62 100644 --- a/packages/docs/src/components/Key.jsx +++ b/packages/docs/src/components/Key.jsx @@ -53,17 +53,15 @@ export default function Key({ mod, fixed, mods = [], k, arrow }) { return (
    - {keys.map( - (key, idx) => ( -
    - {key} -
    - ), - [], - )} + {keys.map((key, idx) => ( +
    + {key} +
    + ))}
    ); } diff --git a/packages/loot-core/src/server/main.test.ts b/packages/loot-core/src/server/main.test.ts index 830934ebd7..9f12e47558 100644 --- a/packages/loot-core/src/server/main.test.ts +++ b/packages/loot-core/src/server/main.test.ts @@ -203,15 +203,16 @@ describe('Budget', () => { test('budget updates when changing a category', async () => { const spreadsheet = await sheet.loadSpreadsheet(db); function captureChangedCells(func) { - return new Promise(async resolve => { + return new Promise(resolve => { let changed = []; const remove = spreadsheet.addEventListener('change', ({ names }) => { changed = changed.concat(names); }); - await func(); - remove(); - spreadsheet.onFinish(() => { - resolve(changed); + func().then(() => { + remove(); + spreadsheet.onFinish(() => { + resolve(changed); + }); }); }); } diff --git a/packages/loot-core/src/server/schedules/find-schedules.ts b/packages/loot-core/src/server/schedules/find-schedules.ts index 9b90f9cad4..b8150e0a58 100644 --- a/packages/loot-core/src/server/schedules/find-schedules.ts +++ b/packages/loot-core/src/server/schedules/find-schedules.ts @@ -245,7 +245,7 @@ async function findStartDate(schedule) { const dateCond = conditions.find(c => c.field === 'date'); let currentConfig = dateCond.value; - while (1) { + while (true) { const prevConfig = currentConfig; currentConfig = { ...prevConfig }; diff --git a/upcoming-release-notes/6300.md b/upcoming-release-notes/6300.md new file mode 100644 index 0000000000..c30b04510f --- /dev/null +++ b/upcoming-release-notes/6300.md @@ -0,0 +1,6 @@ +--- +category: Maintenance +authors: [MatissJanis] +--- + +Fix various lint issues