@@ -101,18 +101,20 @@ class RootViewController: OpaqueNavigationController {
101
101
}
102
102
}
103
103
104
- protocol ModelBasedViewController {
104
+ protocol ModelBased {
105
105
associatedtype ViewModel
106
106
associatedtype Action
107
107
108
108
init ( viewModel: ViewModel , dispatchAction: @escaping ( Action ) -> Void )
109
109
func update( with viewModel: ViewModel )
110
110
}
111
111
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 { }
116
118
117
119
extension RootViewController {
118
120
private func reify< ViewController: ModelBasedViewController > ( _ existingViewController: UIViewController ? , viewModel: ViewController . ViewModel , dispatchAction: @escaping ( ViewController . Action ) -> Void ) -> ViewController {
@@ -168,7 +170,7 @@ extension RootViewController {
168
170
currentViewModel = viewModel
169
171
}
170
172
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 ) ) {
172
174
let viewController : ViewController = reify (
173
175
modalNavController? . topViewController,
174
176
viewModel: viewModel,
@@ -178,7 +180,7 @@ extension RootViewController {
178
180
}
179
181
180
182
// swiftlint:disable:next function_parameter_count
181
- private func presentViewModels< A: UIViewController & ModelBasedViewController , B: UIViewController & ModelBasedViewController > (
183
+ private func presentViewModels< A: ModelBasedViewController , B: ModelBasedViewController > (
182
184
_ viewModelA: A . ViewModel , using _: A . Type , actionTransform actionTransformA: @escaping ( ( A . Action ) -> Root . Action ) ,
183
185
and viewModelB: B . ViewModel , using _: B . Type , actionTransform actionTransformB: @escaping ( ( B . Action ) -> Root . Action ) ) {
184
186
let viewControllerA : A = reify (
0 commit comments