mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-26 03:20:50 +02:00
Privacy: IS Settings: Manage invalid IS
This commit is contained in:
@@ -244,6 +244,13 @@ final class SettingsIdentityServerViewController: UIViewController {
|
||||
cancelButtonTitle: VectorL10n.cancel,
|
||||
onContinue: onContinue)
|
||||
|
||||
case .addActionAlert(.invalidIdentityServer(let newHost)):
|
||||
self.showAlert(title: nil,
|
||||
message: VectorL10n.identityServerSettingsAlertErrorInvalidIdentityServer(newHost),
|
||||
continueButtonTitle: nil,
|
||||
cancelButtonTitle: VectorL10n.cancel,
|
||||
onContinue: onContinue)
|
||||
|
||||
case .disconnectActionAlert(.stillSharing3Pids(let oldHost)):
|
||||
self.showAlert(title: VectorL10n.identityServerSettingsAlertDisconnectTitle,
|
||||
message: VectorL10n.identityServerSettingsAlertDisconnectStillSharing3pid(oldHost.hostname()),
|
||||
@@ -313,9 +320,9 @@ final class SettingsIdentityServerViewController: UIViewController {
|
||||
|
||||
switch displayMode {
|
||||
case .noIdentityServer:
|
||||
viewAction = .add(identityServer: identityServer)
|
||||
viewAction = .add(identityServer: identityServer.makeURLValid())
|
||||
case .identityServer:
|
||||
viewAction = .change(identityServer: identityServer)
|
||||
viewAction = .change(identityServer: identityServer.makeURLValid())
|
||||
}
|
||||
|
||||
if let viewAction = viewAction {
|
||||
@@ -339,12 +346,8 @@ extension SettingsIdentityServerViewController: SettingsIdentityServerViewModelV
|
||||
}
|
||||
}
|
||||
|
||||
fileprivate extension String {
|
||||
func hostname() -> String {
|
||||
return URL(string: self)?.host ?? self
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - ServiceTermsModalCoordinatorBridgePresenterDelegate
|
||||
extension SettingsIdentityServerViewController: ServiceTermsModalCoordinatorBridgePresenterDelegate {
|
||||
func serviceTermsModalCoordinatorBridgePresenterDelegateDidAccept(_ coordinatorBridgePresenter: ServiceTermsModalCoordinatorBridgePresenter) {
|
||||
self.hideTerms(accepted: true)
|
||||
@@ -354,3 +357,19 @@ extension SettingsIdentityServerViewController: ServiceTermsModalCoordinatorBrid
|
||||
self.hideTerms(accepted: false)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// MARK: - Private extension
|
||||
fileprivate extension String {
|
||||
func hostname() -> String {
|
||||
return URL(string: self)?.host ?? self
|
||||
}
|
||||
|
||||
func makeURLValid() -> String {
|
||||
if self.hasPrefix("http://") || self.hasPrefix("https://") {
|
||||
return self
|
||||
} else {
|
||||
return "https://" + self
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,8 +87,7 @@ final class SettingsIdentityServerViewModel: SettingsIdentityServerViewModelType
|
||||
switch identityServerValidity {
|
||||
case .invalid:
|
||||
// Present invalid IS alert
|
||||
// TODO but how to detect it?
|
||||
break
|
||||
self.update(viewState: .alert(alert: SettingsIdentityServerAlert.addActionAlert(.invalidIdentityServer(newHost: newIdentityServer)), onContinue: {}))
|
||||
case .valid(status: let termsStatus):
|
||||
switch termsStatus {
|
||||
case .noTerms:
|
||||
@@ -280,7 +279,17 @@ final class SettingsIdentityServerViewModel: SettingsIdentityServerViewModelType
|
||||
self.serviceTerms = serviceTerms
|
||||
|
||||
case .failure(let error):
|
||||
completion(.failure(error))
|
||||
guard let nsError = error as NSError? else {
|
||||
completion(.failure(error))
|
||||
return
|
||||
}
|
||||
|
||||
if nsError.domain == MXIdentityServerRestClientErrorDomain
|
||||
|| (nsError.domain == NSURLErrorDomain && nsError.code == NSURLErrorCannotFindHost) {
|
||||
completion(.success(.invalid))
|
||||
} else {
|
||||
completion(.failure(error))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -40,6 +40,7 @@ enum SettingsIdentityServerAlert {
|
||||
enum AddActionAlert {
|
||||
case noTerms(newHost: String)
|
||||
case termsNotAccepted(newHost: String)
|
||||
case invalidIdentityServer(newHost: String)
|
||||
}
|
||||
|
||||
// enum ChangeActionAlert {
|
||||
|
||||
Reference in New Issue
Block a user