conversations-classic-ios/ConversationsClassic/AppData/Client/Client+MartinMessages.swift
2024-08-18 19:54:18 +02:00

38 lines
1,008 B
Swift

import Combine
import Foundation
import GRDB
import Martin
final class ClientMartinMessagesManager {
private var cancellables: Set<AnyCancellable> = []
init(_ xmppConnection: XMPPClient) {
xmppConnection.module(MessageModule.self).messagesPublisher
.sink { [weak self] message in
self?.handleMessage(message)
}
.store(in: &cancellables)
}
private func handleMessage(_ received: Martin.MessageModule.MessageReceived) {
let message = received.message
let chat = received.chat
#if DEBUG
print("---")
print("Message received: \(received)")
print("Chat: \(chat)")
print("---")
#endif
if let msg = Message.map(message) {
Task {
do {
try await msg.save()
} catch {
logIt(.error, "Error saving message: \(error)")
}
}
}
}
}