hyperoslo / hyperoslo/Compass

Compass 6.0 Roadmap

Open
#54 5 comments 4 reactions 0 assignees View on GitHub
Dominant language
Swift
Stars
821
Forks
47
PR merge metrics
No merged PRs in 30d

Description

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`

```swift
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 ?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.