From bcfe6b1888f820821872f3ce33804fd4f7811c66 Mon Sep 17 00:00:00 2001 From: Ivan Semenov Date: Fri, 8 May 2020 13:17:24 +0300 Subject: [PATCH] [github] Load PR merge base after fetch Fixes IDEA-240197 GitOrigin-RevId: b024dcb21b15266bfc5483df4ae448c6d48e2a4e --- .../provider/GHPRChangesDataProviderImpl.kt | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/plugins/github/src/org/jetbrains/plugins/github/pullrequest/data/provider/GHPRChangesDataProviderImpl.kt b/plugins/github/src/org/jetbrains/plugins/github/pullrequest/data/provider/GHPRChangesDataProviderImpl.kt index 12068d1eb5dc..cd026785d9d1 100644 --- a/plugins/github/src/org/jetbrains/plugins/github/pullrequest/data/provider/GHPRChangesDataProviderImpl.kt +++ b/plugins/github/src/org/jetbrains/plugins/github/pullrequest/data/provider/GHPRChangesDataProviderImpl.kt @@ -2,9 +2,11 @@ package org.jetbrains.plugins.github.pullrequest.data.provider import com.intellij.openapi.Disposable +import org.jetbrains.plugins.github.api.data.pullrequest.GHPullRequest import org.jetbrains.plugins.github.pullrequest.data.GHPRIdentifier import org.jetbrains.plugins.github.pullrequest.data.service.GHPRChangesService import org.jetbrains.plugins.github.util.LazyCancellableBackgroundProcessValue +import java.util.concurrent.CompletableFuture import java.util.function.BiFunction class GHPRChangesDataProviderImpl(private val changesService: GHPRChangesService, @@ -44,20 +46,17 @@ class GHPRChangesDataProviderImpl(private val changesService: GHPRChangesService private val changesProviderValue = LazyCancellableBackgroundProcessValue.create { indicator -> val commitsRequest = apiCommitsRequestValue.value - val baseFetch = baseBranchFetchRequestValue.value - val headFetch = headBranchFetchRequestValue.value + val fetchFuture = CompletableFuture.allOf(baseBranchFetchRequestValue.value, headBranchFetchRequestValue.value) - detailsData.loadDetails().thenCompose { - changesService.loadMergeBaseOid(indicator, it.baseRefOid, it.headRefOid) - }.thenCombine(baseFetch, BiFunction { mergeBase, _ -> - mergeBase - }).thenCombine(headFetch, BiFunction { mergeBase, _ -> - mergeBase - }).thenCompose { mergeBase -> - commitsRequest.thenCompose { - changesService.createChangesProvider(indicator, mergeBase, it) + detailsData.loadDetails() + .thenCombine(fetchFuture, BiFunction { details, _ -> details }) + .thenCompose { + changesService.loadMergeBaseOid(indicator, it.baseRefOid, it.headRefOid) + }.thenCompose { mergeBase -> + commitsRequest.thenCompose { + changesService.createChangesProvider(indicator, mergeBase, it) + } } - } } override fun loadChanges() = changesProviderValue.value