mv-experiment #1

Merged
fmodf merged 88 commits from mv-experiment into develop 2024-09-03 15:13:59 +00:00
Showing only changes of commit c69e7e50cf - Show all commits

View file

@ -102,8 +102,9 @@ extension Client {
return return
} }
let msg = chat.createMessage(text: message.body ?? "??", id: message.id) var msg = chat.createMessage(text: message.body ?? "??", id: message.id)
msg.oob = message.oobUrl msg.oob = message.oobUrl
msg = try await encryptMessage(msg)
try await chat.send(message: msg) try await chat.send(message: msg)
} }
@ -151,6 +152,33 @@ extension Client {
} }
} }
private extension Client {
func encryptMessage(_ message: Martin.Message) async throws -> Martin.Message {
try await withCheckedThrowingContinuation { continuation in
connection.module(.omemo).encode(message: message, completionHandler: { result in
switch result {
case .successMessage(let encodedMessage, _):
// guard connection.isConnected else {
// continuation.resume(returning: message)
// return
// }
continuation.resume(returning: encodedMessage)
case .failure(let error):
var errorMessage = NSLocalizedString("It was not possible to send encrypted message due to encryption error", comment: "message encryption failure")
switch error {
case .noSession:
errorMessage = NSLocalizedString("There is no trusted device to send message to", comment: "message encryption failure")
default:
break
}
continuation.resume(throwing: XMPPError.unexpected_request(errorMessage))
}
})
}
}
}
extension Client { extension Client {
static func tryLogin(with credentials: Credentials) async throws -> Client { static func tryLogin(with credentials: Credentials) async throws -> Client {
let client = Client(credentials: credentials) let client = Client(credentials: credentials)