From 6aef38d95a7983528fddb5efe3e708457bfe858f Mon Sep 17 00:00:00 2001 From: Ivan Semenov Date: Wed, 17 May 2023 15:24:29 +0200 Subject: [PATCH] [gitlab] cache project members and labels GitOrigin-RevId: ee1a50337ce5af30c119a768cb1cbab1d3e1afe8 --- .../gitlab/mergerequest/data/GitLabProject.kt | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/plugins/gitlab/src/org/jetbrains/plugins/gitlab/mergerequest/data/GitLabProject.kt b/plugins/gitlab/src/org/jetbrains/plugins/gitlab/mergerequest/data/GitLabProject.kt index 486460007e70..7056a2be47b5 100644 --- a/plugins/gitlab/src/org/jetbrains/plugins/gitlab/mergerequest/data/GitLabProject.kt +++ b/plugins/gitlab/src/org/jetbrains/plugins/gitlab/mergerequest/data/GitLabProject.kt @@ -4,7 +4,9 @@ package org.jetbrains.plugins.gitlab.mergerequest.data import com.intellij.openapi.project.Project import com.intellij.util.childScope import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.withContext +import kotlinx.coroutines.CoroutineStart +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.async import org.jetbrains.plugins.gitlab.api.GitLabApi import org.jetbrains.plugins.gitlab.api.dto.GitLabLabelDTO import org.jetbrains.plugins.gitlab.api.dto.GitLabMemberDTO @@ -34,13 +36,15 @@ class GitLabLazyProject( CachingGitLabProjectMergeRequestsStore(project, cs, api, projectMapping) } - override suspend fun getLabels(): List = - withContext(cs.coroutineContext) { - api.loadAllProjectLabels(projectMapping.repository) - } + private val allLabels = cs.async(Dispatchers.IO, start = CoroutineStart.LAZY) { + api.loadAllProjectLabels(projectMapping.repository) + } - override suspend fun getMembers(): List = - withContext(cs.coroutineContext) { - api.getAllProjectMembers(projectMapping.repository) - } + private val allMembers = cs.async(Dispatchers.IO, start = CoroutineStart.LAZY) { + api.getAllProjectMembers(projectMapping.repository) + } + + override suspend fun getLabels(): List = allLabels.await() + + override suspend fun getMembers(): List = allMembers.await() } \ No newline at end of file