Skip to content
Snippets Groups Projects
Commit 24808135 authored by Dariusz Rybicki's avatar Dariusz Rybicki
Browse files

Add GroupMessageHandler to messenger example

parent c01336a3
No related branches found
No related tags found
2 merge requests!153Release 1.1.0,!148[Messenger Example] Setup group chat
import XXModels
import XXClient
import Foundation
import XXMessengerClient
import XCTestDynamicOverlay
public struct GroupMessageHandler {
public typealias OnError = (Error) -> Void
public var run: (@escaping OnError) -> Cancellable
public func callAsFunction(onError: @escaping OnError) -> Cancellable {
run(onError)
}
}
extension GroupMessageHandler {
public static func live(
messenger: Messenger,
db: DBManagerGetDB
) -> GroupMessageHandler {
GroupMessageHandler { onError in
messenger.registerGroupChatProcessor(.init { result in
switch result {
case .success(let callback):
do {
let payload = try MessagePayload.decode(callback.decryptedMessage.payload)
try db().saveMessage(.init(
networkId: callback.decryptedMessage.messageId,
senderId: callback.decryptedMessage.senderId,
recipientId: nil,
groupId: callback.decryptedMessage.groupId,
date: Date(timeIntervalSince1970: TimeInterval(callback.decryptedMessage.timestamp) / 1_000_000_000),
status: .received,
isUnread: true,
text: payload.text,
replyMessageId: payload.replyingTo,
roundURL: callback.roundUrl
))
} catch {
onError(error)
}
case .failure(let error):
onError(error)
}
})
}
}
}
extension GroupMessageHandler {
public static let unimplemented = GroupMessageHandler(
run: XCTestDynamicOverlay.unimplemented("\(Self.self)", placeholder: Cancellable {})
)
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment