Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[swift] Remove view registry #974

Merged
merged 2 commits into from
Feb 26, 2020
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
15 changes: 3 additions & 12 deletions swift/Samples/BackStackContainer/Sources/BackStackContainer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,20 +16,13 @@
import WorkflowUI


extension ViewRegistry {
public mutating func registerBackStackContainer() {
self.register(screenViewControllerType: BackStackContainer.self)
}
}


public final class BackStackContainer: ScreenViewController<BackStackScreen>, UINavigationControllerDelegate {
private let navController: UINavigationController

public required init(screen: BackStackScreen, viewRegistry: ViewRegistry) {
public required init(screen: BackStackScreen) {
self.navController = UINavigationController()

super.init(screen: screen, viewRegistry: viewRegistry)
super.init(screen: screen)

update(with: screen)
}
Expand Down Expand Up @@ -73,9 +66,7 @@ public final class BackStackContainer: ScreenViewController<BackStackScreen>, UI
existingViewController.update(item: item)
updatedViewControllers.append(existingViewController)
} else {
updatedViewControllers.append(ScreenWrapperViewController(
item: item,
registry: viewRegistry))
updatedViewControllers.append(ScreenWrapperViewController(item: item))
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ public struct BackStackScreen: Screen {
public init(items: [BackStackScreen.Item]) {
self.items = items
}

public var viewControllerDescription: ViewControllerDescription {
return BackStackContainer.description(for: self)
}
}

extension BackStackScreen {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,12 @@ final class ScreenWrapperViewController: UIViewController {
let key: AnyHashable
let screenType: Any.Type

let contentViewController: ScreenViewController<AnyScreen>
let contentViewController: DescribedViewController

init(item: BackStackScreen.Item, registry: ViewRegistry) {
init(item: BackStackScreen.Item) {
self.key = item.key
self.screenType = item.screenType
self.contentViewController = registry.provideView(for: item.screen)
self.contentViewController = DescribedViewController(screen: item.screen)

super.init(nibName: nil, bundle: nil)

Expand Down
8 changes: 1 addition & 7 deletions swift/Samples/SampleApp/Sources/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {

window = UIWindow(frame: UIScreen.main.bounds)

var viewRegistry = ViewRegistry()
viewRegistry.registerDemoScreen()
viewRegistry.registerWelcomeScreen()
viewRegistry.registerCrossFadeContainer()
window?.rootViewController = ContainerViewController(
workflow: RootWorkflow(),
viewRegistry: viewRegistry)
window?.rootViewController = ContainerViewController(workflow: RootWorkflow())

window?.makeKeyAndVisible()

Expand Down
19 changes: 7 additions & 12 deletions swift/Samples/SampleApp/Sources/CrossFadeContainer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -38,24 +38,19 @@ struct CrossFadeScreen: Screen {
fileprivate func isEquivalent(to otherScreen: CrossFadeScreen) -> Bool {
return self.key == otherScreen.key
}
}


extension ViewRegistry {

public mutating func registerCrossFadeContainer() {
self.register(screenViewControllerType: CrossFadeContainerViewController.self)
var viewControllerDescription: ViewControllerDescription {
return CrossFadeContainerViewController.description(for: self)
}

}


fileprivate final class CrossFadeContainerViewController: ScreenViewController<CrossFadeScreen> {
var childViewController: ScreenViewController<AnyScreen>
var childViewController: DescribedViewController

required init(screen: CrossFadeScreen, viewRegistry: ViewRegistry) {
childViewController = viewRegistry.provideView(for: screen.baseScreen)
super.init(screen: screen, viewRegistry: viewRegistry)
required init(screen: CrossFadeScreen) {
childViewController = DescribedViewController(screen: screen.baseScreen)
super.init(screen: screen)
}

override func viewDidLoad() {
Expand All @@ -78,7 +73,7 @@ fileprivate final class CrossFadeContainerViewController: ScreenViewController<C
} else {
// The new screen is different than the previous. Animate the transition.
let oldChild = childViewController
childViewController = viewRegistry.provideView(for: screen.baseScreen)
childViewController = DescribedViewController(screen: screen.baseScreen)
addChild(childViewController)
view.addSubview(childViewController.view)
UIView.transition(
Expand Down
13 changes: 4 additions & 9 deletions swift/Samples/SampleApp/Sources/DemoScreen.swift
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,10 @@ struct DemoScreen: Screen {
let refreshText: String
let isRefreshEnabled: Bool
let onRefreshTap: () -> Void
}


extension ViewRegistry {

public mutating func registerDemoScreen() {
self.register(screenViewControllerType: DemoViewController.self)
var viewControllerDescription: ViewControllerDescription {
return DemoViewController.description(for: self)
}

}


Expand All @@ -47,12 +42,12 @@ fileprivate final class DemoViewController: ScreenViewController<DemoScreen> {
private let statusLabel: UILabel
private let refreshButton: UIButton

required init(screen: DemoScreen, viewRegistry: ViewRegistry) {
required init(screen: DemoScreen) {
titleButton = UIButton(frame: .zero)
subscribeButton = UIButton(frame: .zero)
statusLabel = UILabel(frame: .zero)
refreshButton = UIButton(frame: .zero)
super.init(screen: screen, viewRegistry: viewRegistry)
super.init(screen: screen)

update(with: screen)
}
Expand Down
13 changes: 4 additions & 9 deletions swift/Samples/SampleApp/Sources/WelcomeScreen.swift
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,10 @@ struct WelcomeScreen: Screen {
var name: String
var onNameChanged: (String) -> Void
var onLoginTapped: () -> Void
}


extension ViewRegistry {

public mutating func registerWelcomeScreen() {
self.register(screenViewControllerType: WelcomeViewController.self)
var viewControllerDescription: ViewControllerDescription {
return WelcomeViewController.description(for: self)
}

}


Expand All @@ -38,11 +33,11 @@ fileprivate final class WelcomeViewController: ScreenViewController<WelcomeScree
let nameField: UITextField
let button: UIButton

required init(screen: WelcomeScreen, viewRegistry: ViewRegistry) {
required init(screen: WelcomeScreen) {
welcomeLabel = UILabel(frame: .zero)
nameField = UITextField(frame: .zero)
button = UIButton(frame: .zero)
super.init(screen: screen, viewRegistry: viewRegistry)
super.init(screen: screen)

update(with: screen)
}
Expand Down
16 changes: 1 addition & 15 deletions swift/Samples/SplitScreenContainer/DemoApp/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let window = UIWindow(frame: UIScreen.main.bounds)

var viewRegistry = ViewRegistry()
viewRegistry.registerSplitScreenContainer()
viewRegistry.registerFooScreen()
viewRegistry.registerBarScreen()

let container = ContainerViewController(
workflow: DemoWorkflow(),
viewRegistry: viewRegistry
workflow: DemoWorkflow()
)

window.rootViewController = container
Expand All @@ -44,11 +38,3 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
}

}

extension ViewRegistry {

public mutating func registerSplitScreenContainer() {
self.register(screenViewControllerType: SplitScreenContainerViewController<AnyScreen, FooScreen>.self)
}

}
13 changes: 4 additions & 9 deletions swift/Samples/SplitScreenContainer/DemoApp/BarScreen.swift
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,10 @@ struct BarScreen: Screen {
let title: String
let backgroundColors: [UIColor]
let viewTapped: () -> Void
}


extension ViewRegistry {

public mutating func registerBarScreen() {
self.register(screenViewControllerType: BarScreenViewController.self)
var viewControllerDescription: ViewControllerDescription {
return BarScreenViewController.description(for: self)
}

}


Expand All @@ -39,8 +34,8 @@ fileprivate final class BarScreenViewController: ScreenViewController<BarScreen>
private lazy var tapGestureRecognizer: UITapGestureRecognizer = .init()
private var gradientLayer: CAGradientLayer?

required init(screen: BarScreen, viewRegistry: ViewRegistry) {
super.init(screen: screen, viewRegistry: viewRegistry)
required init(screen: BarScreen) {
super.init(screen: screen)

update(with: screen)
}
Expand Down
13 changes: 4 additions & 9 deletions swift/Samples/SplitScreenContainer/DemoApp/FooScreen.swift
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,10 @@ struct FooScreen: Screen {
let title: String
let backgroundColor: UIColor
let viewTapped: () -> Void
}


extension ViewRegistry {

public mutating func registerFooScreen() {
self.register(screenViewControllerType: FooScreenViewController.self)
var viewControllerDescription: ViewControllerDescription {
return FooScreenViewController.description(for: self)
}

}


Expand All @@ -38,8 +33,8 @@ fileprivate final class FooScreenViewController: ScreenViewController<FooScreen>
private lazy var titleLabel: UILabel = .init()
private lazy var tapGestureRecognizer: UITapGestureRecognizer = .init()

required init(screen: FooScreen, viewRegistry: ViewRegistry) {
super.init(screen: screen, viewRegistry: viewRegistry)
required init(screen: FooScreen) {
super.init(screen: screen)

update(with: screen)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,6 @@ class SplitScreenContainerScreenSnapshotTests: FBSnapshotTestCase {
}

func test_splitRatio() {
var viewRegistry = ViewRegistry()
viewRegistry.register(screenViewControllerType: FooScreenViewController.self)

let ratios: [String : CGFloat] = [
"third" : .third,
"quarter" : .quarter,
Expand All @@ -32,8 +29,7 @@ class SplitScreenContainerScreenSnapshotTests: FBSnapshotTestCase {
)

let viewController = SplitScreenContainerViewController(
screen: splitScreenContainerScreen,
viewRegistry: viewRegistry
screen: splitScreenContainerScreen
)
viewController.view.layoutIfNeeded()

Expand All @@ -47,6 +43,10 @@ fileprivate struct FooScreen: Screen {
let title: String
let backgroundColor: UIColor
let viewTapped: () -> Void

var viewControllerDescription: ViewControllerDescription {
return FooScreenViewController.description(for: self)
}
}


Expand All @@ -55,8 +55,8 @@ fileprivate final class FooScreenViewController: ScreenViewController<FooScreen>
private lazy var titleLabel: UILabel = .init()
private lazy var tapGestureRecognizer: UITapGestureRecognizer = .init()

required init(screen: FooScreen, viewRegistry: ViewRegistry) {
super.init(screen: screen, viewRegistry: viewRegistry)
required init(screen: FooScreen) {
super.init(screen: screen)

update(with: screen)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,10 @@ public struct SplitScreenContainerScreen<LeadingScreenType: Screen, TrailingScre
self.separatorWidth = separatorWidth
}

public var viewControllerDescription: ViewControllerDescription {
return SplitScreenContainerViewController.description(for: self)
}

}

public extension CGFloat {
Expand Down