From 7a45d467b750edf9c3cefb3cf57e5a4893dde1f0 Mon Sep 17 00:00:00 2001
From: Matiss Janis Aboltins <matiss@mja.lv>
Date: Tue, 5 Dec 2023 18:58:22 +0000
Subject: [PATCH] :recycle: (eslint) enable 'react/no-children-prop' rule and
 fix issues (#2029)

---
 .eslintrc.js                                              | 1 -
 packages/desktop-client/src/components/NotesButton.tsx    | 8 +++-----
 packages/desktop-client/src/components/ScrollProvider.tsx | 7 +++----
 packages/desktop-client/src/components/Titlebar.tsx       | 7 +++----
 .../src/components/budget/report/ReportContext.tsx        | 5 +++--
 .../src/components/budget/rollover/RolloverContext.tsx    | 5 +++--
 packages/desktop-client/src/hooks/useSelected.tsx         | 8 +++-----
 packages/loot-core/src/client/data-hooks/accounts.tsx     | 4 +++-
 packages/loot-core/src/client/data-hooks/payees.tsx       | 4 +++-
 packages/loot-core/src/client/data-hooks/schedules.tsx    | 6 +++++-
 packages/loot-core/src/client/query-hooks.tsx             | 2 +-
 upcoming-release-notes/2029.md                            | 6 ++++++
 12 files changed, 36 insertions(+), 27 deletions(-)
 create mode 100644 upcoming-release-notes/2029.md

diff --git a/.eslintrc.js b/.eslintrc.js
index b2d03eb5b..d0eadff98 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -82,7 +82,6 @@ module.exports = {
 
     // TODO: re-enable these rules
     'react-hooks/exhaustive-deps': 'off',
-    'react/no-children-prop': 'off',
     'react/display-name': 'off',
     'react/react-in-jsx-scope': 'off',
     // 'react-hooks/exhaustive-deps': [
diff --git a/packages/desktop-client/src/components/NotesButton.tsx b/packages/desktop-client/src/components/NotesButton.tsx
index 59ab11122..3c65b4a1f 100644
--- a/packages/desktop-client/src/components/NotesButton.tsx
+++ b/packages/desktop-client/src/components/NotesButton.tsx
@@ -124,11 +124,9 @@ function NotesTooltip({
         />
       ) : (
         <Text {...markdownStyles}>
-          <ReactMarkdown
-            remarkPlugins={remarkPlugins}
-            linkTarget="_blank"
-            children={notes}
-          />
+          <ReactMarkdown remarkPlugins={remarkPlugins} linkTarget="_blank">
+            {notes}
+          </ReactMarkdown>
         </Text>
       )}
     </Tooltip>
diff --git a/packages/desktop-client/src/components/ScrollProvider.tsx b/packages/desktop-client/src/components/ScrollProvider.tsx
index 45c39e0ac..b959fbc40 100644
--- a/packages/desktop-client/src/components/ScrollProvider.tsx
+++ b/packages/desktop-client/src/components/ScrollProvider.tsx
@@ -42,10 +42,9 @@ export default function ScrollProvider({ children }: ScrollProviderProps) {
   }, []);
 
   return (
-    <ScrollContext.Provider
-      value={{ scrollY, isBottomReached }}
-      children={children}
-    />
+    <ScrollContext.Provider value={{ scrollY, isBottomReached }}>
+      {children}
+    </ScrollContext.Provider>
   );
 }
 
diff --git a/packages/desktop-client/src/components/Titlebar.tsx b/packages/desktop-client/src/components/Titlebar.tsx
index aa55d0800..5c50871ec 100644
--- a/packages/desktop-client/src/components/Titlebar.tsx
+++ b/packages/desktop-client/src/components/Titlebar.tsx
@@ -78,10 +78,9 @@ export function TitlebarProvider({ children }: TitlebarProviderProps) {
   }
 
   return (
-    <TitlebarContext.Provider
-      value={{ sendEvent, subscribe }}
-      children={children}
-    />
+    <TitlebarContext.Provider value={{ sendEvent, subscribe }}>
+      {children}
+    </TitlebarContext.Provider>
   );
 }
 
diff --git a/packages/desktop-client/src/components/budget/report/ReportContext.tsx b/packages/desktop-client/src/components/budget/report/ReportContext.tsx
index fc9927882..3f746cfd5 100644
--- a/packages/desktop-client/src/components/budget/report/ReportContext.tsx
+++ b/packages/desktop-client/src/components/budget/report/ReportContext.tsx
@@ -26,8 +26,9 @@ export function ReportProvider({
         onBudgetAction,
         onToggleSummaryCollapse,
       }}
-      children={children}
-    />
+    >
+      {children}
+    </Context.Provider>
   );
 }
 
diff --git a/packages/desktop-client/src/components/budget/rollover/RolloverContext.tsx b/packages/desktop-client/src/components/budget/rollover/RolloverContext.tsx
index 706999c7c..7006ae78e 100644
--- a/packages/desktop-client/src/components/budget/rollover/RolloverContext.tsx
+++ b/packages/desktop-client/src/components/budget/rollover/RolloverContext.tsx
@@ -29,8 +29,9 @@ export function RolloverContext({
         onBudgetAction,
         onToggleSummaryCollapse,
       }}
-      children={children}
-    />
+    >
+      {children}
+    </Context.Provider>
   );
 }
 
diff --git a/packages/desktop-client/src/hooks/useSelected.tsx b/packages/desktop-client/src/hooks/useSelected.tsx
index 21455ab4e..934318e36 100644
--- a/packages/desktop-client/src/hooks/useSelected.tsx
+++ b/packages/desktop-client/src/hooks/useSelected.tsx
@@ -340,10 +340,8 @@ export function SelectedProviderWithItems<T extends Item>({
   }, [registerDispatch]);
 
   return (
-    <SelectedProvider<T>
-      instance={selected}
-      fetchAllIds={fetchAllIds}
-      children={children}
-    />
+    <SelectedProvider<T> instance={selected} fetchAllIds={fetchAllIds}>
+      {children}
+    </SelectedProvider>
   );
 }
diff --git a/packages/loot-core/src/client/data-hooks/accounts.tsx b/packages/loot-core/src/client/data-hooks/accounts.tsx
index 084060f3b..7bcde4b7b 100644
--- a/packages/loot-core/src/client/data-hooks/accounts.tsx
+++ b/packages/loot-core/src/client/data-hooks/accounts.tsx
@@ -13,7 +13,9 @@ const AccountsContext = createContext<AccountEntity[]>(null);
 
 export function AccountsProvider({ children }) {
   const data = useAccounts();
-  return <AccountsContext.Provider value={data} children={children} />;
+  return (
+    <AccountsContext.Provider value={data}>{children}</AccountsContext.Provider>
+  );
 }
 
 export function CachedAccounts({ children, idKey }) {
diff --git a/packages/loot-core/src/client/data-hooks/payees.tsx b/packages/loot-core/src/client/data-hooks/payees.tsx
index f5b1956ac..8197d50e7 100644
--- a/packages/loot-core/src/client/data-hooks/payees.tsx
+++ b/packages/loot-core/src/client/data-hooks/payees.tsx
@@ -13,7 +13,9 @@ const PayeesContext = createContext<PayeeEntity[]>(null);
 
 export function PayeesProvider({ children }) {
   const data = usePayees();
-  return <PayeesContext.Provider value={data} children={children} />;
+  return (
+    <PayeesContext.Provider value={data}>{children}</PayeesContext.Provider>
+  );
 }
 
 export function CachedPayees({ children, idKey }) {
diff --git a/packages/loot-core/src/client/data-hooks/schedules.tsx b/packages/loot-core/src/client/data-hooks/schedules.tsx
index a139658c9..0a46c38e9 100644
--- a/packages/loot-core/src/client/data-hooks/schedules.tsx
+++ b/packages/loot-core/src/client/data-hooks/schedules.tsx
@@ -69,7 +69,11 @@ const SchedulesContext = createContext(null);
 
 export function SchedulesProvider({ transform, children }) {
   const data = useSchedules({ transform });
-  return <SchedulesContext.Provider value={data} children={children} />;
+  return (
+    <SchedulesContext.Provider value={data}>
+      {children}
+    </SchedulesContext.Provider>
+  );
 }
 
 export function useCachedSchedules() {
diff --git a/packages/loot-core/src/client/query-hooks.tsx b/packages/loot-core/src/client/query-hooks.tsx
index 329f466b7..52314faa3 100644
--- a/packages/loot-core/src/client/query-hooks.tsx
+++ b/packages/loot-core/src/client/query-hooks.tsx
@@ -46,7 +46,7 @@ function makeContext(queryState, opts, QueryClass) {
       };
     }, []);
 
-    return <Context.Provider value={value} children={children} />;
+    return <Context.Provider value={value}>{children}</Context.Provider>;
   }
 
   function useQuery() {
diff --git a/upcoming-release-notes/2029.md b/upcoming-release-notes/2029.md
new file mode 100644
index 000000000..68c09ee2a
--- /dev/null
+++ b/upcoming-release-notes/2029.md
@@ -0,0 +1,6 @@
+---
+category: Maintenance
+authors: [MatissJanis]
+---
+
+Enable `react/no-children-prop` rule and fix the issues
-- 
GitLab