From e91b4070aa8fa64bb40d8f6a682e9e75ca223bdd Mon Sep 17 00:00:00 2001
From: Matt Fiddaman <github@m.fiddaman.uk>
Date: Thu, 11 Jul 2024 10:01:41 +0100
Subject: [PATCH] Add mergePayees method to the API (#3028)

---
 packages/api/methods.ts                        | 4 ++++
 packages/loot-core/src/server/api.ts           | 8 ++++++++
 packages/loot-core/src/types/api-handlers.d.ts | 5 +++++
 upcoming-release-notes/3028.md                 | 6 ++++++
 4 files changed, 23 insertions(+)
 create mode 100644 upcoming-release-notes/3028.md

diff --git a/packages/api/methods.ts b/packages/api/methods.ts
index 124d5d666..9770e9b75 100644
--- a/packages/api/methods.ts
+++ b/packages/api/methods.ts
@@ -181,6 +181,10 @@ export function deletePayee(id) {
   return send('api/payee-delete', { id });
 }
 
+export function mergePayees(targetId, mergeIds) {
+  return send('api/payees-merge', { targetId, mergeIds });
+}
+
 export function getRules() {
   return send('api/rules-get');
 }
diff --git a/packages/loot-core/src/server/api.ts b/packages/loot-core/src/server/api.ts
index f2bbe5f42..e99624982 100644
--- a/packages/loot-core/src/server/api.ts
+++ b/packages/loot-core/src/server/api.ts
@@ -653,6 +653,14 @@ handlers['api/payee-delete'] = withMutation(async function ({ id }) {
   return handlers['payees-batch-change']({ deleted: [{ id }] });
 });
 
+handlers['api/payees-merge'] = withMutation(async function ({
+  targetId,
+  mergeIds,
+}) {
+  checkFileOpen();
+  return handlers['payees-merge']({ targetId, mergeIds });
+});
+
 handlers['api/rules-get'] = async function () {
   checkFileOpen();
   return handlers['rules-get']();
diff --git a/packages/loot-core/src/types/api-handlers.d.ts b/packages/loot-core/src/types/api-handlers.d.ts
index d8f23ae5b..db221089c 100644
--- a/packages/loot-core/src/types/api-handlers.d.ts
+++ b/packages/loot-core/src/types/api-handlers.d.ts
@@ -154,6 +154,11 @@ export interface ApiHandlers {
 
   'api/payee-delete': (arg: { id }) => Promise<unknown>;
 
+  'api/payees-merge': (arg: {
+    targetId: string;
+    mergeIds: string[];
+  }) => Promise<void>;
+
   'api/rules-get': () => Promise<RuleEntity[]>;
 
   'api/payee-rules-get': (arg: { id: string }) => Promise<RuleEntity[]>;
diff --git a/upcoming-release-notes/3028.md b/upcoming-release-notes/3028.md
new file mode 100644
index 000000000..91073bd5e
--- /dev/null
+++ b/upcoming-release-notes/3028.md
@@ -0,0 +1,6 @@
+---
+category: Enhancements
+authors: [matt-fidd]
+---
+
+Add `mergePayees` method to the API
-- 
GitLab