Added error toasts on the login screen.

This commit is contained in:
Stefan Ceriu
2022-02-22 13:53:34 +02:00
parent c35438cbb8
commit d634995a20
4 changed files with 26 additions and 7 deletions
+16 -1
View File
@@ -20,6 +20,7 @@ class AppCoordinator: AuthenticationCoordinatorDelegate, Coordinator {
private let authenticationCoordinator: AuthenticationCoordinator! private let authenticationCoordinator: AuthenticationCoordinator!
private var loadingActivity: Activity? private var loadingActivity: Activity?
private var errorActivity: Activity?
var childCoordinators: [Coordinator] = [] var childCoordinators: [Coordinator] = []
@@ -55,6 +56,7 @@ class AppCoordinator: AuthenticationCoordinatorDelegate, Coordinator {
func authenticationCoordinator(_ authenticationCoordinator: AuthenticationCoordinator, didFailWithError error: AuthenticationCoordinatorError) { func authenticationCoordinator(_ authenticationCoordinator: AuthenticationCoordinator, didFailWithError error: AuthenticationCoordinatorError) {
hideLoadingIndicator() hideLoadingIndicator()
showLoginErrorToast()
} }
func authenticationCoordinatorDidSetupUserSession(_ authenticationCoordinator: AuthenticationCoordinator) { func authenticationCoordinatorDidSetupUserSession(_ authenticationCoordinator: AuthenticationCoordinator) {
@@ -91,7 +93,8 @@ class AppCoordinator: AuthenticationCoordinatorDelegate, Coordinator {
} }
private func showLoadingIndicator() { private func showLoadingIndicator() {
let presenter = FullscreenLoadingActivityPresenter(label: "Loading", on: self.mainNavigationController) let presenter = FullscreenLoadingActivityPresenter(label: "Loading",
on: mainNavigationController)
let request = ActivityRequest( let request = ActivityRequest(
presenter: presenter, presenter: presenter,
@@ -104,4 +107,16 @@ class AppCoordinator: AuthenticationCoordinatorDelegate, Coordinator {
private func hideLoadingIndicator() { private func hideLoadingIndicator() {
loadingActivity = nil loadingActivity = nil
} }
private func showLoginErrorToast() {
let presenter = ToastActivityPresenter(viewState: .init(style: .success, label: "Failed logging in"),
navigationController: mainNavigationController)
let request = ActivityRequest(
presenter: presenter,
dismissal: .timeout(3.0)
)
errorActivity = ActivityCenter.shared.add(request)
}
} }
@@ -97,12 +97,11 @@ class AuthenticationCoordinator: Coordinator {
switch result { switch result {
case .success: case .success:
completion(.success(())) completion(.success(()))
self.remove(childCoordinator: coordinator)
self.navigationRouter.dismissModule()
case .failure(let error): case .failure(let error):
completion(.failure(error)) completion(.failure(error))
} }
self.remove(childCoordinator: coordinator)
self.navigationRouter.dismissModule()
} }
} }
} }
@@ -30,7 +30,8 @@ class ToastActivityPresenter: ActivityPresentable {
} }
func present() { func present() {
guard let navigationController = navigationController else { guard let navigationController = navigationController,
let window = navigationController.view.window else {
return return
} }
@@ -38,7 +39,7 @@ class ToastActivityPresenter: ActivityPresentable {
self.view = view self.view = view
view.translatesAutoresizingMaskIntoConstraints = false view.translatesAutoresizingMaskIntoConstraints = false
navigationController.view.addSubview(view) window.addSubview(view)
NSLayoutConstraint.activate([ NSLayoutConstraint.activate([
view.centerXAnchor.constraint(equalTo: navigationController.navigationBar.centerXAnchor), view.centerXAnchor.constraint(equalTo: navigationController.navigationBar.centerXAnchor),
view.topAnchor.constraint(equalTo: navigationController.navigationBar.bottomAnchor) view.topAnchor.constraint(equalTo: navigationController.navigationBar.bottomAnchor)
@@ -48,6 +48,7 @@ class RoundedToastView: UIView {
private let stackView: UIStackView = { private let stackView: UIStackView = {
let stack = UIStackView() let stack = UIStackView()
stack.axis = .horizontal stack.axis = .horizontal
stack.alignment = .center
stack.spacing = 5 stack.spacing = 5
return stack return stack
}() }()
@@ -66,6 +67,9 @@ class RoundedToastView: UIView {
} }
private func setup(viewState: ViewState) { private func setup(viewState: ViewState) {
backgroundColor = .gray.withAlphaComponent(0.75)
setupLayer() setupLayer()
setupStackView() setupStackView()
stackView.addArrangedSubview(toastView(for: viewState.style)) stackView.addArrangedSubview(toastView(for: viewState.style))