From 734191424b7f58d74c31429ef2746c6ec1d38a90 Mon Sep 17 00:00:00 2001
From: Matiss Janis Aboltins <matiss@mja.lv>
Date: Thu, 1 Feb 2024 16:40:12 +0000
Subject: [PATCH] :bug: (goCardless) patch incomplete migration (#2308)

---
 .../src/components/accounts/Header.jsx            | 15 +++++++++++----
 .../1704572023730_add_account_sync_source.sql     |  6 ------
 ...2023731_add_missing_goCardless_sync_source.sql |  9 +++++++++
 upcoming-release-notes/2308.md                    |  6 ++++++
 4 files changed, 26 insertions(+), 10 deletions(-)
 create mode 100644 packages/loot-core/migrations/1704572023731_add_missing_goCardless_sync_source.sql
 create mode 100644 upcoming-release-notes/2308.md

diff --git a/packages/desktop-client/src/components/accounts/Header.jsx b/packages/desktop-client/src/components/accounts/Header.jsx
index da5608da1..3c4f79a78 100644
--- a/packages/desktop-client/src/components/accounts/Header.jsx
+++ b/packages/desktop-client/src/components/accounts/Header.jsx
@@ -83,11 +83,14 @@ export function AccountHeader({
   const [menuOpen, setMenuOpen] = useState(false);
   const searchInput = useRef(null);
   const splitsExpanded = useSplitsExpanded();
+  const syncServerStatus = useSyncServerStatus();
+  const isUsingServer = syncServerStatus !== 'no-server';
+  const isServerOffline = syncServerStatus === 'offline';
 
-  let canSync = account && account.account_id;
+  let canSync = account && account.account_id && isUsingServer;
   if (!account) {
     // All accounts - check for any syncable account
-    canSync = !!accounts.find(account => !!account.account_id);
+    canSync = !!accounts.find(account => !!account.account_id) && isUsingServer;
   }
 
   function onToggleSplits() {
@@ -210,7 +213,11 @@ export function AccountHeader({
           style={{ marginTop: 12 }}
         >
           {((account && !account.closed) || canSync) && (
-            <Button type="bare" onClick={canSync ? onSync : onImport}>
+            <Button
+              type="bare"
+              onClick={canSync ? onSync : onImport}
+              disabled={canSync && isServerOffline}
+            >
               {canSync ? (
                 <>
                   <AnimatedRefresh
@@ -222,7 +229,7 @@ export function AccountHeader({
                     }
                     style={{ marginRight: 4 }}
                   />{' '}
-                  Sync
+                  {isServerOffline ? 'Sync offline' : 'Sync'}
                 </>
               ) : (
                 <>
diff --git a/packages/loot-core/migrations/1704572023730_add_account_sync_source.sql b/packages/loot-core/migrations/1704572023730_add_account_sync_source.sql
index 3aae8da90..7af240089 100644
--- a/packages/loot-core/migrations/1704572023730_add_account_sync_source.sql
+++ b/packages/loot-core/migrations/1704572023730_add_account_sync_source.sql
@@ -2,10 +2,4 @@ BEGIN TRANSACTION;
 
 ALTER TABLE accounts ADD COLUMN account_sync_source TEXT;
 
-UPDATE accounts SET
-  account_sync_source = CASE
-    WHEN account_id THEN 'goCardless'
-    ELSE NULL
-  END;
-
 COMMIT;
diff --git a/packages/loot-core/migrations/1704572023731_add_missing_goCardless_sync_source.sql b/packages/loot-core/migrations/1704572023731_add_missing_goCardless_sync_source.sql
new file mode 100644
index 000000000..49aa4cb85
--- /dev/null
+++ b/packages/loot-core/migrations/1704572023731_add_missing_goCardless_sync_source.sql
@@ -0,0 +1,9 @@
+BEGIN TRANSACTION;
+
+UPDATE accounts
+SET
+  account_sync_source = 'goCardless'
+WHERE account_id IS NOT NULL
+  AND account_sync_source IS NULL;
+
+COMMIT;
diff --git a/upcoming-release-notes/2308.md b/upcoming-release-notes/2308.md
new file mode 100644
index 000000000..bba8f3947
--- /dev/null
+++ b/upcoming-release-notes/2308.md
@@ -0,0 +1,6 @@
+---
+category: Bugfix
+authors: [MatissJanis]
+---
+
+Fix GoCardless bank sync breaking after a flaky SimpleFin db migration.
-- 
GitLab