[github] Fix pull request loader

Initial indicator was reusable, so loader could load more than needed
This commit is contained in:
Ivan Semenov
2018-08-29 14:56:45 +03:00
parent ec0927fdf6
commit 9ae0dd4d33
@@ -27,7 +27,7 @@ class GithubPullRequestsLoader(private val progressManager: ProgressManager,
private val LOG = logger<GithubPullRequestsLoader>()
private val executor = AppExecutorUtil.createBoundedApplicationPoolExecutor("GitHub PR loading breaker", 1)
private var progressIndicator = EmptyProgressIndicator()
private var progressIndicator = createNonReusableIndicator()
private var query: String = buildQuery(null)
private var nextPageRequest: GithubApiRequest<GithubResponsePage<GithubSearchedIssue>>? = createInitialRequest()
private var isDisposed = false
@@ -111,12 +111,7 @@ class GithubPullRequestsLoader(private val progressManager: ProgressManager,
fun reset() {
if (isDisposed) return
progressIndicator.cancel()
progressIndicator = object : EmptyProgressIndicator() {
override fun start() {
checkCanceled()
super.start()
}
}
progressIndicator = createNonReusableIndicator()
executor.execute {
nextPageRequest = createInitialRequest()
stateEventDispatcher.multicaster.loaderReset()
@@ -124,6 +119,13 @@ class GithubPullRequestsLoader(private val progressManager: ProgressManager,
}
}
private fun createNonReusableIndicator(): ProgressIndicator = object : EmptyProgressIndicator() {
override fun start() {
checkCanceled()
super.start()
}
}
fun addStateListener(listener: StateListener, disposable: Disposable) = stateEventDispatcher.addListener(listener, disposable)
override fun dispose() {