-
Notifications
You must be signed in to change notification settings - Fork 0
/
RootRouter.swift
50 lines (40 loc) · 1.43 KB
/
RootRouter.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
//
// RootRouter.swift
// TodoList
//
// Created by 김종권 on 2021/04/28.
//
import RIBs
protocol RootInteractable: Interactable, LoggedOutListener {
var router: RootRouting? { get set }
var listener: RootListener? { get set }
}
protocol RootViewControllable: ViewControllable {
func present(viewController: ViewControllable)
}
final class RootRouter: LaunchRouter<RootInteractable, RootViewControllable>, RootRouting {
// TODO: Constructor inject child builder protocols to allow building children.
init(interactor: RootInteractable,
viewController: RootViewControllable,
loggedOutBuilder: LoggedOutBuilder,
loggedInBuilder: LoggedInBuilder) {
self.loggedOutBuilder = loggedOutBuilder
self.loggedInBuilder = loggedInBuilder
super.init(interactor: interactor, viewController: viewController)
interactor.router = self
}
override func didLoad() {
super.didLoad()
routeToLoggedOut()
}
// MARK: - Private
private let loggedOutBuilder: LoggedOutBuildable
private let loggedInBuilder: LoggedInBuildable
private var loggedOut: ViewableRouting?
private func routeToLoggedOut() {
let loggedOut = loggedOutBuilder.build(withListener: interactor)
self.loggedOut = loggedOut
attachChild(loggedOut)
viewController.present(viewController: loggedOut.viewControllable)
}
}