Compass icon indicating copy to clipboard operation
Compass copied to clipboard

Compass 6.0 Roadmap

Open onmyway133 opened this issue 8 years ago • 5 comments

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 scheme and Router into it. An app usually does not need many Navigator, and use can just set it as the current one. This also promotes the use of Router
let navigator = Navigator(scheme: "compass", routers: routers)
Navigator.current = navigator
  • Right now Navigator and Router seem to confuse users. Like we declare Router, but also configure Navigator.routes. The above Navigator instance will make the composition clear Navigator -> Router -> Routable
  • Refactor Router to be more flexible. Not all routers depend on currentController, some like preLogin prefers to switch rootViewController
  • Remove ErrorRoutable, as we can handle via try catch with navigate function

What do you think @hyperoslo/ios ?

onmyway133 avatar Aug 16 '17 11:08 onmyway133

All the proposed features make sense for me 👍

vadymmarkov avatar Aug 16 '17 11:08 vadymmarkov

I support this!

zenangst avatar Aug 16 '17 12:08 zenangst

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?

deanWombourne avatar Feb 03 '18 17:02 deanWombourne

How's the progress on this going? Really excited to see version 6.

Andrewangeta avatar Mar 11 '18 22:03 Andrewangeta

As Swift 4.1 release, some codes are deprecated. Can't wait for the version 6 of this great library :) How is the progress?

emreond avatar Apr 10 '18 06:04 emreond