Skip to content

Commit 64fc8a9

Browse files
committed
Convert ModelBasedViewController to a class & protocol typealias
1 parent a445a57 commit 64fc8a9

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

Authenticator/Source/RootViewController.swift

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -101,18 +101,20 @@ class RootViewController: OpaqueNavigationController {
101101
}
102102
}
103103

104-
protocol ModelBasedViewController {
104+
protocol ModelBased {
105105
associatedtype ViewModel
106106
associatedtype Action
107107

108108
init(viewModel: ViewModel, dispatchAction: @escaping (Action) -> Void)
109109
func update(with viewModel: ViewModel)
110110
}
111111

112-
extension TokenScannerViewController: ModelBasedViewController {}
113-
extension TokenFormViewController: ModelBasedViewController {}
114-
extension InfoListViewController: ModelBasedViewController {}
115-
extension InfoViewController: ModelBasedViewController {}
112+
typealias ModelBasedViewController = UIViewController & ModelBased
113+
114+
extension TokenScannerViewController: ModelBased {}
115+
extension TokenFormViewController: ModelBased {}
116+
extension InfoListViewController: ModelBased {}
117+
extension InfoViewController: ModelBased {}
116118

117119
extension RootViewController {
118120
private func reify<ViewController: ModelBasedViewController>(_ existingViewController: UIViewController?, viewModel: ViewController.ViewModel, dispatchAction: @escaping (ViewController.Action) -> Void) -> ViewController {
@@ -168,7 +170,7 @@ extension RootViewController {
168170
currentViewModel = viewModel
169171
}
170172

171-
private func presentViewModel<ViewController: UIViewController & ModelBasedViewController>(_ viewModel: ViewController.ViewModel, using _: ViewController.Type, actionTransform: @escaping ((ViewController.Action) -> Root.Action)) {
173+
private func presentViewModel<ViewController: ModelBasedViewController>(_ viewModel: ViewController.ViewModel, using _: ViewController.Type, actionTransform: @escaping ((ViewController.Action) -> Root.Action)) {
172174
let viewController: ViewController = reify(
173175
modalNavController?.topViewController,
174176
viewModel: viewModel,
@@ -178,7 +180,7 @@ extension RootViewController {
178180
}
179181

180182
// swiftlint:disable:next function_parameter_count
181-
private func presentViewModels<A: UIViewController & ModelBasedViewController, B: UIViewController & ModelBasedViewController>(
183+
private func presentViewModels<A: ModelBasedViewController, B: ModelBasedViewController>(
182184
_ viewModelA: A.ViewModel, using _: A.Type, actionTransform actionTransformA: @escaping ((A.Action) -> Root.Action),
183185
and viewModelB: B.ViewModel, using _: B.Type, actionTransform actionTransformB: @escaping ((B.Action) -> Root.Action)) {
184186
let viewControllerA: A = reify(

0 commit comments

Comments
 (0)