mirror of https://github.com/oxen-io/session-ios
Added LokiP2PMessageHandler.
Moved wrapping and unwrapping of proto envelopes to LokiMessageWrapper.pull/18/head
parent
748b7eff12
commit
865bb1932f
@ -1 +1 @@
|
||||
Subproject commit 077f345d2993bf2a7dab8df935986e6495e764c7
|
||||
Subproject commit 32ca94b0b45a1f55059ee500c5e217a0f55a0313
|
@ -0,0 +1,37 @@
|
||||
|
||||
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")
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue