From 8f638df7a9cb386e8f5125593d3b136b0351dd90 Mon Sep 17 00:00:00 2001 From: JRoberts <8711996+jr-simplex@users.noreply.github.com> Date: Fri, 28 Oct 2022 20:05:04 +0400 Subject: [PATCH] mobile: merge contacts (#1271) --- .../src/main/java/chat/simplex/app/model/SimpleXAPI.kt | 8 ++++++++ apps/ios/Shared/Model/SimpleXAPI.swift | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt b/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt index e0f00fb73..04dad3155 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt @@ -950,6 +950,14 @@ open class ChatController(var ctrl: ChatCtrl?, val ntfManager: NtfManager, val a chatModel.updateChatInfo(cInfo) } } + is CR.ContactsMerged -> { + if (chatModel.hasChat(r.mergedContact.id)) { + if (chatModel.chatId.value == r.mergedContact.id) { + chatModel.chatId.value = r.intoContact.id + } + chatModel.removeChat(r.mergedContact.id) + } + } is CR.ContactsSubscribed -> updateContactsStatus(r.contactRefs, Chat.NetworkStatus.Connected()) is CR.ContactsDisconnected -> updateContactsStatus(r.contactRefs, Chat.NetworkStatus.Disconnected()) is CR.ContactSubError -> processContactSubError(r.contact, r.chatError) diff --git a/apps/ios/Shared/Model/SimpleXAPI.swift b/apps/ios/Shared/Model/SimpleXAPI.swift index 78749e0eb..53b94434e 100644 --- a/apps/ios/Shared/Model/SimpleXAPI.swift +++ b/apps/ios/Shared/Model/SimpleXAPI.swift @@ -911,6 +911,13 @@ func processReceivedMsg(_ res: ChatResponse) async { if m.hasChat(toContact.id) { m.updateChatInfo(cInfo) } + case let .contactsMerged(intoContact, mergedContact): + if m.hasChat(mergedContact.id) { + if m.chatId == mergedContact.id { + m.chatId = intoContact.id + } + m.removeChat(mergedContact.id) + } case let .contactsSubscribed(_, contactRefs): updateContactsStatus(contactRefs, status: .connected) case let .contactsDisconnected(_, contactRefs):