Compass 6.0 Roadmap
We will convert Compass to be in Swift 4 soon. This is not really big changes, but we can take this advantage to do some refactoring. Some are breaking changes. My proposals are
- Refactor Navigator to be used as instance. And inject
schemeandRouterinto it. An app usually does not need manyNavigator, and use can just set it as the current one. This also promotes the use ofRouter
let navigator = Navigator(scheme: "compass", routers: routers)
Navigator.current = navigator
- Right now
NavigatorandRouterseem to confuse users. Like we declareRouter, but also configureNavigator.routes. The aboveNavigator instancewill make the composition clearNavigator -> Router -> Routable - Refactor Router to be more flexible. Not all routers depend on
currentController, some likepreLoginprefers to switch rootViewController - Remove
ErrorRoutable, as we can handle viatry catchwithnavigatefunction
What do you think @hyperoslo/ios ?
All the proposed features make sense for me 👍
I support this!
I was about to raise an issue to make Navigator a class, but then read this :) +1 definitely to making it an instance.
Can we go one further and make it a protocol as well i.e. struct Navigator: Navigatable - that way we can inject a mock one when we unit test our routing :) I'm happy to make a PR for this if you want?
How's the progress on this going? Really excited to see version 6.
As Swift 4.1 release, some codes are deprecated. Can't wait for the version 6 of this great library :) How is the progress?