Skip to content

Commit

Permalink
Merged PR 5566: Open helpDetail instead of About on infected screen
Browse files Browse the repository at this point in the history
Open helpDetail instead of About on infected screen

Related work items: #58116
  • Loading branch information
Diego Marcon committed Aug 18, 2020
2 parents 8364218 + 220110b commit 9991deb
Show file tree
Hide file tree
Showing 6 changed files with 48 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import ENFoundation
import UIKit
import WebKit

final class HelpDetailViewController: ViewController, Logging {
final class HelpDetailViewController: ViewController, Logging, UIAdaptivePresentationControllerDelegate {

init(listener: HelpDetailListener,
shouldShowEnableAppButton: Bool,
Expand All @@ -20,6 +20,7 @@ final class HelpDetailViewController: ViewController, Logging {
self.question = question

super.init(theme: theme)
navigationItem.rightBarButtonItem = closeBarButtonItem
}

// MARK: - ViewController Lifecycle
Expand All @@ -43,17 +44,24 @@ final class HelpDetailViewController: ViewController, Logging {
textAlignment: Localization.isRTL ? .right : .left)

internalView.acceptButton.addTarget(self, action: #selector(acceptButtonPressed), for: .touchUpInside)
}

navigationItem.rightBarButtonItem = navigationController?.navigationItem.rightBarButtonItem
func presentationControllerDidDismiss(_ presentationController: UIPresentationController) {
listener?.helpDetailRequestsDismissal(shouldDismissViewController: false)
}

@objc func acceptButtonPressed() {
listener?.helpDetailDidTapEnableAppButton()
}

@objc func didTapClose() {
listener?.helpDetailRequestsDismissal(shouldDismissViewController: true)
}

// MARK: - Private

private lazy var internalView: HelpView = HelpView(theme: theme, shouldDisplayButton: shouldShowEnableAppButton)
private lazy var closeBarButtonItem = UIBarButtonItem(barButtonSystemItem: .close, target: self, action: #selector(didTapClose))
private weak var listener: HelpDetailListener?

private let shouldShowEnableAppButton: Bool
Expand Down
2 changes: 1 addition & 1 deletion Sources/ENCore/App/Features/Help/HelpViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ final class HelpViewController: NavigationController, HelpViewControllable, UIAd
// MARK: - HelpDetailListener

func helpDetailRequestsDismissal(shouldDismissViewController: Bool) {
router?.detachHelpDetail(shouldDismissViewController: true)
router?.detachHelpDetail(shouldDismissViewController: shouldDismissViewController)
}

func helpDetailDidTapEnableAppButton() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ protocol InfectedDependency {
var bluetoothStateStream: BluetoothStateStreaming { get }
}

private final class InfectedDependencyProvider: DependencyProvider<InfectedDependency>, ThankYouDependency, CardDependency, AboutDependency {
private final class InfectedDependencyProvider: DependencyProvider<InfectedDependency>, ThankYouDependency, CardDependency, HelpDetailDependency {

var theme: Theme {
dependency.theme
Expand All @@ -47,8 +47,8 @@ private final class InfectedDependencyProvider: DependencyProvider<InfectedDepen
return CardBuilder(dependency: self)
}

var aboutBuilder: AboutBuildable {
return AboutBuilder(dependency: self)
var helpDetailBuilder: HelpDetailBuildable {
return HelpDetailBuilder(dependency: self)
}

var bluetoothStateStream: BluetoothStateStreaming {
Expand All @@ -67,6 +67,6 @@ final class InfectedBuilder: Builder<InfectedDependency>, InfectedBuildable {
viewController: viewController,
thankYouBuilder: dependencyProvider.thankYouBuilder,
cardBuilder: dependencyProvider.cardBuilder,
aboutBuilder: dependencyProvider.aboutBuilder)
helpDetailBuilder: dependencyProvider.helpDetailBuilder)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@
import UIKit

/// @mockable
protocol InfectedViewControllable: ViewControllable, ThankYouListener, AboutListener {
protocol InfectedViewControllable: ViewControllable, ThankYouListener, HelpDetailListener {
var router: InfectedRouting? { get set }

func push(viewController: ViewControllable)
func set(cardViewController: ViewControllable?)

func present(viewController: ViewControllable)
func presentInNavigationController(viewController: ViewControllable)
func dismiss(viewController: ViewControllable)
}

Expand All @@ -26,11 +26,11 @@ final class InfectedRouter: Router<InfectedViewControllable>, InfectedRouting {
viewController: InfectedViewControllable,
thankYouBuilder: ThankYouBuildable,
cardBuilder: CardBuildable,
aboutBuilder: AboutBuildable) {
helpDetailBuilder: HelpDetailBuildable) {
self.listener = listener
self.thankYouBuilder = thankYouBuilder
self.cardBuilder = cardBuilder
self.aboutBuilder = aboutBuilder
self.helpDetailBuilder = helpDetailBuilder

super.init(viewController: viewController)

Expand Down Expand Up @@ -72,25 +72,26 @@ final class InfectedRouter: Router<InfectedViewControllable>, InfectedRouting {
}

func showFAQ() {
guard aboutRouter == nil else {
guard helpDetailViewController == nil else {
return
}

let router = aboutBuilder.build(withListener: viewController)
viewController.present(viewController: router.viewControllable)
let question = HelpQuestion(question: .helpFaqUploadKeysTitle, answer: .helpFaqUploadKeysDescription)
let controller = helpDetailBuilder.build(withListener: viewController, shouldShowEnableAppButton: false, question: question)
viewController.presentInNavigationController(viewController: controller)

aboutRouter = router
helpDetailViewController = controller
}

func hideFAQ(shouldDismissViewController: Bool) {
guard let router = aboutRouter else {
guard let controller = helpDetailViewController else {
return
}

aboutRouter = nil
helpDetailViewController = nil

if shouldDismissViewController {
viewController.dismiss(viewController: router.viewControllable)
viewController.dismiss(viewController: controller)
}
}

Expand All @@ -104,6 +105,6 @@ final class InfectedRouter: Router<InfectedViewControllable>, InfectedRouting {
private let cardBuilder: CardBuildable
private var cardRouter: (Routing & CardTypeSettable)?

private let aboutBuilder: AboutBuildable
private var aboutRouter: Routing?
private let helpDetailBuilder: HelpDetailBuildable
private var helpDetailViewController: ViewControllable?
}
Original file line number Diff line number Diff line change
Expand Up @@ -96,12 +96,22 @@ final class InfectedViewController: ViewController, InfectedViewControllable, UI
navigationController?.pushViewController(viewController.uiviewController, animated: true)
}

func present(viewController: ViewControllable) {
present(viewController.uiviewController, animated: true, completion: nil)
func presentInNavigationController(viewController: ViewControllable) {
let navigationController = NavigationController(rootViewController: viewController.uiviewController, theme: theme)

if let presentationDelegate = viewController.uiviewController as? UIAdaptivePresentationControllerDelegate {
navigationController.presentationController?.delegate = presentationDelegate
}

present(navigationController, animated: true, completion: nil)
}

func dismiss(viewController: ViewControllable) {
viewController.uiviewController.dismiss(animated: true, completion: nil)
if let navigationController = viewController.uiviewController.navigationController {
navigationController.dismiss(animated: true, completion: nil)
} else {
viewController.uiviewController.dismiss(animated: true, completion: nil)
}
}

func thankYouWantsDismissal() {
Expand All @@ -128,12 +138,14 @@ final class InfectedViewController: ViewController, InfectedViewControllable, UI
}
}

// MARK: - AboutListener
// MARK: - HelpDetailListener

func aboutRequestsDismissal(shouldHideViewController: Bool) {
router?.hideFAQ(shouldDismissViewController: shouldHideViewController)
func helpDetailRequestsDismissal(shouldDismissViewController: Bool) {
router?.hideFAQ(shouldDismissViewController: shouldDismissViewController)
}

func helpDetailDidTapEnableAppButton() {}

// MARK: - Private

private func update(exposureState: ExposureState) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ final class InfectedRouterTests: XCTestCase {
viewController: viewController,
thankYouBuilder: ThankYouBuildableMock(),
cardBuilder: CardBuildableMock(),
aboutBuilder: AboutBuildableMock())
helpDetailBuilder: HelpDetailBuildableMock())
}

func test_init_setsRouterOnViewController() {
Expand Down

0 comments on commit 9991deb

Please sign in to comment.