Skip to content

Instantly share code, notes, and snippets.

@luks91
Created August 20, 2018 00:06
Show Gist options
  • Save luks91/688b16d030695267d4fb537e21254891 to your computer and use it in GitHub Desktop.
Save luks91/688b16d030695267d4fb537e21254891 to your computer and use it in GitHub Desktop.
private fun calculateTeamMembership(): Observable<Timed<Map<User, Density>>> {
return Observable.combineLatest(
connectionProvider.connections(),
repositoriesStorage.selectedRepositories(),
BiFunction<BitbucketConnection, List<Repository>, Observable<Timed<Map<User, Density>>>> {
(userName, _, api, token), repositories ->
return@BiFunction Observable.fromIterable(repositories)
.flatMap { (slug, _, project) ->
BitbucketApi.queryPaged { start ->
api.getPullRequests(token, project.key, slug, start,
status = STATUS_ALL, limit = PAGE_LIMIT)
}
.subscribeOn(Schedulers.io())
.take(PAGES_PER_REPOSITORY)
.onErrorResumeNext(connectionProvider
.handleNetworkError(ReviewersPresenter::class.java.simpleName))
}.reduce { t1, t2 -> t1 + t2 }.toObservable()
.compose(intoTeamMembershipOf(userName))
.switchIfEmpty(Observable.just(mapOf()))
.timestamp()
}
).switchMap { stream -> stream }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment