From 7231959f81603c22f544744d7e2981b641a9225b Mon Sep 17 00:00:00 2001
From: Matiss Janis Aboltins <matiss@mja.lv>
Date: Mon, 9 Sep 2024 19:18:55 +0100
Subject: [PATCH] :recycle: (synced-prefs) refactor ImportedTransactions usage
 of prefs (#3408)

---
 .../components/modals/ImportTransactions.jsx  |  5 ++---
 .../src/hooks/useSyncedPrefs.ts               | 22 +++++++++++++++++++
 upcoming-release-notes/3408.md                |  6 +++++
 3 files changed, 30 insertions(+), 3 deletions(-)
 create mode 100644 packages/desktop-client/src/hooks/useSyncedPrefs.ts
 create mode 100644 upcoming-release-notes/3408.md

diff --git a/packages/desktop-client/src/components/modals/ImportTransactions.jsx b/packages/desktop-client/src/components/modals/ImportTransactions.jsx
index 4c9bf2e3c..d24ae24b6 100644
--- a/packages/desktop-client/src/components/modals/ImportTransactions.jsx
+++ b/packages/desktop-client/src/components/modals/ImportTransactions.jsx
@@ -11,7 +11,7 @@ import {
 
 import { useActions } from '../../hooks/useActions';
 import { useDateFormat } from '../../hooks/useDateFormat';
-import { useLocalPrefs } from '../../hooks/useLocalPrefs';
+import { useSyncedPrefs } from '../../hooks/useSyncedPrefs';
 import { SvgDownAndRightArrow } from '../../icons/v2';
 import { theme, styles } from '../../style';
 import { Button, ButtonWithLoading } from '../common/Button2';
@@ -840,13 +840,12 @@ function FieldMappings({
 
 export function ImportTransactions({ options }) {
   const dateFormat = useDateFormat() || 'MM/dd/yyyy';
-  const prefs = useLocalPrefs();
+  const [prefs, savePrefs] = useSyncedPrefs();
   const {
     parseTransactions,
     importTransactions,
     importPreviewTransactions,
     getPayees,
-    savePrefs,
   } = useActions();
 
   const [multiplierAmount, setMultiplierAmount] = useState('');
diff --git a/packages/desktop-client/src/hooks/useSyncedPrefs.ts b/packages/desktop-client/src/hooks/useSyncedPrefs.ts
new file mode 100644
index 000000000..7d4497da6
--- /dev/null
+++ b/packages/desktop-client/src/hooks/useSyncedPrefs.ts
@@ -0,0 +1,22 @@
+import { useCallback } from 'react';
+import { useDispatch } from 'react-redux';
+
+import { savePrefs } from 'loot-core/client/actions';
+import { type SyncedPrefs } from 'loot-core/src/types/prefs';
+
+import { useLocalPrefs } from './useLocalPrefs';
+
+type SetSyncedPrefsAction = (value: Partial<SyncedPrefs>) => void;
+
+export function useSyncedPrefs(): [SyncedPrefs, SetSyncedPrefsAction] {
+  // TODO: implement real logic (follow-up PR)
+  const dispatch = useDispatch();
+  const setPrefs = useCallback<SetSyncedPrefsAction>(
+    newPrefs => {
+      dispatch(savePrefs(newPrefs));
+    },
+    [dispatch],
+  );
+
+  return [useLocalPrefs(), setPrefs];
+}
diff --git a/upcoming-release-notes/3408.md b/upcoming-release-notes/3408.md
new file mode 100644
index 000000000..6334f66c2
--- /dev/null
+++ b/upcoming-release-notes/3408.md
@@ -0,0 +1,6 @@
+---
+category: Maintenance
+authors: [MatissJanis]
+---
+
+SyncedPrefs: refactor `ImportTransactions` usage of prefs to use a common hook.
-- 
GitLab