You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
session-ios/SignalServiceKit/src/Loki/API/LokiP2PMessageHandler.swift

38 lines
1.3 KiB
Swift

public class LokiP2PMessageHandler {
public static let shared = LokiP2PMessageHandler()
private var messageReceiver: OWSMessageReceiver {
return SSKEnvironment.shared.messageReceiver
}
private init() {}
public func handleReceivedMessage(base64EncodedData: String) {
guard let data = Data(base64Encoded: base64EncodedData) else {
Logger.warn("[LokiP2PMessageHandler] Failed to decode p2p message data")
return
}
guard let envelope = try? LokiMessageWrapper.unwrap(data: data) else {
Logger.warn("[LokiP2PMessageHandler] Failed to unwrap p2p data")
return
}
// We need to set the p2p field on the envelope
let builder = envelope.asBuilder()
builder.setIsPtpMessage(true)
// Send it to message receiver
do {
let newEnvelope = try builder.build()
let envelopeData = try newEnvelope.serializedData()
messageReceiver.handleReceivedEnvelopeData(envelopeData)
} catch let error {
Logger.warn("[LokiP2PMessageHandler] Something went wrong while converting proto: \(error)")
owsFailDebug("Failed to build envelope")
}
}
}