Skip to content

Commit 220110b

Browse files
committed
Open helpDetail instead of About on infected screen
1 parent 8364218 commit 220110b

File tree

6 files changed

+48
-27
lines changed

6 files changed

+48
-27
lines changed

Sources/ENCore/App/Features/Help/Detail/HelpDetailViewController.swift

+10-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import ENFoundation
99
import UIKit
1010
import WebKit
1111

12-
final class HelpDetailViewController: ViewController, Logging {
12+
final class HelpDetailViewController: ViewController, Logging, UIAdaptivePresentationControllerDelegate {
1313

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

2222
super.init(theme: theme)
23+
navigationItem.rightBarButtonItem = closeBarButtonItem
2324
}
2425

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

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

47-
navigationItem.rightBarButtonItem = navigationController?.navigationItem.rightBarButtonItem
49+
func presentationControllerDidDismiss(_ presentationController: UIPresentationController) {
50+
listener?.helpDetailRequestsDismissal(shouldDismissViewController: false)
4851
}
4952

5053
@objc func acceptButtonPressed() {
5154
listener?.helpDetailDidTapEnableAppButton()
5255
}
5356

57+
@objc func didTapClose() {
58+
listener?.helpDetailRequestsDismissal(shouldDismissViewController: true)
59+
}
60+
5461
// MARK: - Private
5562

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

5967
private let shouldShowEnableAppButton: Bool

Sources/ENCore/App/Features/Help/HelpViewController.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ final class HelpViewController: NavigationController, HelpViewControllable, UIAd
6363
// MARK: - HelpDetailListener
6464

6565
func helpDetailRequestsDismissal(shouldDismissViewController: Bool) {
66-
router?.detachHelpDetail(shouldDismissViewController: true)
66+
router?.detachHelpDetail(shouldDismissViewController: shouldDismissViewController)
6767
}
6868

6969
func helpDetailDidTapEnableAppButton() {

Sources/ENCore/App/Features/Main/MoreInformation/Infected/InfectedBuilder.swift

+4-4
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ protocol InfectedDependency {
2929
var bluetoothStateStream: BluetoothStateStreaming { get }
3030
}
3131

32-
private final class InfectedDependencyProvider: DependencyProvider<InfectedDependency>, ThankYouDependency, CardDependency, AboutDependency {
32+
private final class InfectedDependencyProvider: DependencyProvider<InfectedDependency>, ThankYouDependency, CardDependency, HelpDetailDependency {
3333

3434
var theme: Theme {
3535
dependency.theme
@@ -47,8 +47,8 @@ private final class InfectedDependencyProvider: DependencyProvider<InfectedDepen
4747
return CardBuilder(dependency: self)
4848
}
4949

50-
var aboutBuilder: AboutBuildable {
51-
return AboutBuilder(dependency: self)
50+
var helpDetailBuilder: HelpDetailBuildable {
51+
return HelpDetailBuilder(dependency: self)
5252
}
5353

5454
var bluetoothStateStream: BluetoothStateStreaming {
@@ -67,6 +67,6 @@ final class InfectedBuilder: Builder<InfectedDependency>, InfectedBuildable {
6767
viewController: viewController,
6868
thankYouBuilder: dependencyProvider.thankYouBuilder,
6969
cardBuilder: dependencyProvider.cardBuilder,
70-
aboutBuilder: dependencyProvider.aboutBuilder)
70+
helpDetailBuilder: dependencyProvider.helpDetailBuilder)
7171
}
7272
}

Sources/ENCore/App/Features/Main/MoreInformation/Infected/InfectedRouter.swift

+14-13
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@
88
import UIKit
99

1010
/// @mockable
11-
protocol InfectedViewControllable: ViewControllable, ThankYouListener, AboutListener {
11+
protocol InfectedViewControllable: ViewControllable, ThankYouListener, HelpDetailListener {
1212
var router: InfectedRouting? { get set }
1313

1414
func push(viewController: ViewControllable)
1515
func set(cardViewController: ViewControllable?)
1616

17-
func present(viewController: ViewControllable)
17+
func presentInNavigationController(viewController: ViewControllable)
1818
func dismiss(viewController: ViewControllable)
1919
}
2020

@@ -26,11 +26,11 @@ final class InfectedRouter: Router<InfectedViewControllable>, InfectedRouting {
2626
viewController: InfectedViewControllable,
2727
thankYouBuilder: ThankYouBuildable,
2828
cardBuilder: CardBuildable,
29-
aboutBuilder: AboutBuildable) {
29+
helpDetailBuilder: HelpDetailBuildable) {
3030
self.listener = listener
3131
self.thankYouBuilder = thankYouBuilder
3232
self.cardBuilder = cardBuilder
33-
self.aboutBuilder = aboutBuilder
33+
self.helpDetailBuilder = helpDetailBuilder
3434

3535
super.init(viewController: viewController)
3636

@@ -72,25 +72,26 @@ final class InfectedRouter: Router<InfectedViewControllable>, InfectedRouting {
7272
}
7373

7474
func showFAQ() {
75-
guard aboutRouter == nil else {
75+
guard helpDetailViewController == nil else {
7676
return
7777
}
7878

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

82-
aboutRouter = router
83+
helpDetailViewController = controller
8384
}
8485

8586
func hideFAQ(shouldDismissViewController: Bool) {
86-
guard let router = aboutRouter else {
87+
guard let controller = helpDetailViewController else {
8788
return
8889
}
8990

90-
aboutRouter = nil
91+
helpDetailViewController = nil
9192

9293
if shouldDismissViewController {
93-
viewController.dismiss(viewController: router.viewControllable)
94+
viewController.dismiss(viewController: controller)
9495
}
9596
}
9697

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

107-
private let aboutBuilder: AboutBuildable
108-
private var aboutRouter: Routing?
108+
private let helpDetailBuilder: HelpDetailBuildable
109+
private var helpDetailViewController: ViewControllable?
109110
}

Sources/ENCore/App/Features/Main/MoreInformation/Infected/InfectedViewController.swift

+18-6
Original file line numberDiff line numberDiff line change
@@ -96,12 +96,22 @@ final class InfectedViewController: ViewController, InfectedViewControllable, UI
9696
navigationController?.pushViewController(viewController.uiviewController, animated: true)
9797
}
9898

99-
func present(viewController: ViewControllable) {
100-
present(viewController.uiviewController, animated: true, completion: nil)
99+
func presentInNavigationController(viewController: ViewControllable) {
100+
let navigationController = NavigationController(rootViewController: viewController.uiviewController, theme: theme)
101+
102+
if let presentationDelegate = viewController.uiviewController as? UIAdaptivePresentationControllerDelegate {
103+
navigationController.presentationController?.delegate = presentationDelegate
104+
}
105+
106+
present(navigationController, animated: true, completion: nil)
101107
}
102108

103109
func dismiss(viewController: ViewControllable) {
104-
viewController.uiviewController.dismiss(animated: true, completion: nil)
110+
if let navigationController = viewController.uiviewController.navigationController {
111+
navigationController.dismiss(animated: true, completion: nil)
112+
} else {
113+
viewController.uiviewController.dismiss(animated: true, completion: nil)
114+
}
105115
}
106116

107117
func thankYouWantsDismissal() {
@@ -128,12 +138,14 @@ final class InfectedViewController: ViewController, InfectedViewControllable, UI
128138
}
129139
}
130140

131-
// MARK: - AboutListener
141+
// MARK: - HelpDetailListener
132142

133-
func aboutRequestsDismissal(shouldHideViewController: Bool) {
134-
router?.hideFAQ(shouldDismissViewController: shouldHideViewController)
143+
func helpDetailRequestsDismissal(shouldDismissViewController: Bool) {
144+
router?.hideFAQ(shouldDismissViewController: shouldDismissViewController)
135145
}
136146

147+
func helpDetailDidTapEnableAppButton() {}
148+
137149
// MARK: - Private
138150

139151
private func update(exposureState: ExposureState) {

Sources/ENCoreTests/App/Features/Main/MoreInformation/Infected/InfectedRouterTests.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ final class InfectedRouterTests: XCTestCase {
2222
viewController: viewController,
2323
thankYouBuilder: ThankYouBuildableMock(),
2424
cardBuilder: CardBuildableMock(),
25-
aboutBuilder: AboutBuildableMock())
25+
helpDetailBuilder: HelpDetailBuildableMock())
2626
}
2727

2828
func test_init_setsRouterOnViewController() {

0 commit comments

Comments
 (0)