diff --git a/Adamant/Modules/Chat/ViewModel/ChatPreservationProtocol.swift b/Adamant/Modules/Chat/ViewModel/ChatPreservationProtocol.swift index 76de16f6b..5634b56bc 100644 --- a/Adamant/Modules/Chat/ViewModel/ChatPreservationProtocol.swift +++ b/Adamant/Modules/Chat/ViewModel/ChatPreservationProtocol.swift @@ -11,6 +11,7 @@ import CommonKit protocol ChatPreservationProtocol: AnyObject, Sendable { var updateNotifier: ObservableSender { get } var forceUpdateNotifier: ObservableSender { get } + func clearPreservedMessagesForSingleChat(address: String) func getPreservedMessageFor(address: String) -> String? func getReplyMessage(address: String) -> MessageModel? func preserveChatState(message: String?, replyMessage: MessageModel?, files: [FileResult]?, forAddress address: String, isForsedUpdate: Bool) diff --git a/Adamant/Modules/Chat/ViewModel/ChatViewModel.swift b/Adamant/Modules/Chat/ViewModel/ChatViewModel.swift index 25e2e0723..4d8e5dea2 100644 --- a/Adamant/Modules/Chat/ViewModel/ChatViewModel.swift +++ b/Adamant/Modules/Chat/ViewModel/ChatViewModel.swift @@ -320,6 +320,7 @@ final class ChatViewModel: NSObject { func sendMessage(text: String) { guard let partnerAddress = chatroom?.partner?.address else { return } + chatPreservation.clearPreservedMessagesForSingleChat(address: partnerAddress) guard chatroom?.partner?.isDummy != true else { dialog.send(.dummy(partnerAddress)) diff --git a/Adamant/ServiceProtocols/ChatPreservation.swift b/Adamant/ServiceProtocols/ChatPreservation.swift index b6c6139a2..e8217a391 100644 --- a/Adamant/ServiceProtocols/ChatPreservation.swift +++ b/Adamant/ServiceProtocols/ChatPreservation.swift @@ -23,20 +23,25 @@ final class ChatPreservation: ChatPreservationProtocol, @unchecked Sendable { NotificationCenter.default .notifications(named: .AdamantAccountService.userLoggedOut) .sink { [weak self] _ in - self?.clearPreservedMessages() + self?.clearAllPreservedMessages() } .store(in: ¬ificationsSet) } // MARK: Notification actions - private func clearPreservedMessages() { + private func clearAllPreservedMessages() { preservedMessages = [:] preservedReplayMessage = [:] preservedFiles = [:] - - updateNotifier.send() } + + func clearPreservedMessagesForSingleChat(address: String) { + preservedMessages.removeValue(forKey: address) + preservedReplayMessage.removeValue(forKey: address) + preservedFiles.removeValue(forKey: address) + } + func preserveChatState( message: String?,