mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-18 15:38:28 +02:00
Add AuthenticationHomeserverViewData to easily map AuthenticationState.Homeserver to a type in the SwiftUI target.
This commit is contained in:
@@ -188,8 +188,7 @@ class AuthenticationService: NSObject {
|
||||
|
||||
let state = AuthenticationState(flow: .login, homeserver: .init(address: loginFlow.homeserverAddress,
|
||||
addressFromUser: homeserverAddress,
|
||||
preferredLoginMode: loginFlow.loginMode,
|
||||
loginModeSupportedTypes: loginFlow.supportedLoginTypes))
|
||||
preferredLoginMode: loginFlow.loginMode))
|
||||
return (client, state)
|
||||
}
|
||||
|
||||
@@ -205,8 +204,7 @@ class AuthenticationService: NSObject {
|
||||
let loginFlow = try await getLoginFlowResult(client: session.matrixRestClient)
|
||||
|
||||
let state = AuthenticationState(flow: .login, homeserver: .init(address: loginFlow.homeserverAddress,
|
||||
preferredLoginMode: loginFlow.loginMode,
|
||||
loginModeSupportedTypes: loginFlow.supportedLoginTypes))
|
||||
preferredLoginMode: loginFlow.loginMode))
|
||||
return (client, state)
|
||||
}
|
||||
|
||||
|
||||
@@ -40,11 +40,14 @@ struct AuthenticationState {
|
||||
var address: String
|
||||
/// The homeserver address as input by the user (it can differ to the well-known request).
|
||||
var addressFromUser: String?
|
||||
/// The homeserver's address formatted to be displayed to the user in labels, text fields etc.
|
||||
var displayableAddress: String {
|
||||
let address = addressFromUser ?? address
|
||||
return address.replacingOccurrences(of: "https://", with: "") // Only remove https. Leave http to indicate the server doesn't use SSL.
|
||||
}
|
||||
|
||||
/// The preferred login mode for the server
|
||||
var preferredLoginMode: LoginMode = .unknown
|
||||
/// Supported types for the login.
|
||||
var loginModeSupportedTypes = [MXLoginFlow]()
|
||||
|
||||
/// The response returned when querying the homeserver for registration flows.
|
||||
var registrationFlow: RegistrationResult?
|
||||
@@ -54,5 +57,13 @@ struct AuthenticationState {
|
||||
guard let url = URL(string: address) else { return false }
|
||||
return url.host == "matrix.org" || url.host == "matrix-client.matrix.org"
|
||||
}
|
||||
|
||||
var viewData: AuthenticationHomeserverViewData {
|
||||
AuthenticationHomeserverViewData(address: displayableAddress,
|
||||
isMatrixDotOrg: isMatrixDotOrg,
|
||||
showLoginForm: preferredLoginMode.supportsPasswordFlow,
|
||||
showRegistrationForm: registrationFlow != nil,
|
||||
ssoIdentityProviders: preferredLoginMode.ssoIdentityProviders ?? [])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user