Skip to content

Instantly share code, notes, and snippets.

@gorozco58
Created January 13, 2017 17:13
Show Gist options
  • Save gorozco58/6a397063a849f991f23c8d9162e2499d to your computer and use it in GitHub Desktop.
Save gorozco58/6a397063a849f991f23c8d9162e2499d to your computer and use it in GitHub Desktop.
protocol RepositoryViewModelType: Transitionable //Make our view model Transitionable {
var repositorySubject: PublishSubject<Repository> { get }
func fetchRepositories(for observableText: Observable<String>) -> Driver<Result<[Repository]>>
}
class RepositoryViewModel : RepositoryViewModelType {
fileprivate let disposeBag = DisposeBag()
var repositorySubject = PublishSubject<Repository>()//add repositorySubject to recive the repositories selected
weak var navigationCoordinator: CoordinatorType? //add navigationCoordinator property this is a protocol and weak to avoid retain cycles.
init() {
//subscribe to repositories change
repositorySubject
.asObservable()
.subscribe(onNext: { [unowned self] in
self.navigationCoordinator?.performTransition(transition: .showRepository($0)) //perform the transition
})
.addDisposableTo(disposeBag)
}
func fetchRepositories(for observableText: Observable<String>) -> Driver<Result<[Repository]>> {
return RepositoryNetworking
.fetchRepositories(for: observableText)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment