mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-20 16:42:44 +02:00
MESSENGER-6018 layout changes simplified login and add error handling for timeouts
This commit is contained in:
+24
-2
@@ -240,13 +240,35 @@ class QRLoginService: NSObject, QRLoginServiceProtocol {
|
||||
}
|
||||
|
||||
MXLog.debug("[QRLoginService] Waiting for the login token")
|
||||
guard case let .success(data) = await rendezvousService.receive(),
|
||||
// bwi: #6018 add error handling for request timeout and provide more information about the error to the user
|
||||
let result = await rendezvousService.receive()
|
||||
guard case let .success(data) = result,
|
||||
let responsePayload = try? JSONDecoder().decode(QRLoginRendezvousPayload.self, from: data),
|
||||
let login_token = responsePayload.loginToken,
|
||||
let homeserver = responsePayload.homeserver,
|
||||
let homeserverURL = URL(string: homeserver) else {
|
||||
// Handle possible errors
|
||||
MXLog.error("[QRLoginService] Invalid login details")
|
||||
await teardownRendezvous(state: .failed(error: .rendezvousFailed))
|
||||
guard case let .failure(rendezvousError) = result else {
|
||||
// Unkown error, display general error information
|
||||
await teardownRendezvous(state: .failed(error: .rendezvousFailed))
|
||||
return
|
||||
}
|
||||
switch rendezvousError {
|
||||
case .transportError(let transportError):
|
||||
// Check for timeout
|
||||
if transportError == .rendezvousCancelled {
|
||||
await teardownRendezvous(state: .failed(error: .requestTimedOut))
|
||||
} else {
|
||||
// Display general error information for all other errors
|
||||
await teardownRendezvous(state: .failed(error: .rendezvousFailed))
|
||||
}
|
||||
break
|
||||
default:
|
||||
// Display general error information for all other errors
|
||||
await teardownRendezvous(state: .failed(error: .rendezvousFailed))
|
||||
break
|
||||
}
|
||||
return
|
||||
}
|
||||
MXLog.debug("[QRLoginService] Received login token \(responsePayload)")
|
||||
|
||||
Reference in New Issue
Block a user