diff --git a/platform/buildView/backend/src/BuildViewApiProvider.kt b/platform/buildView/backend/src/BuildViewApiProvider.kt index 05114f0af15e..e5c62da2d77e 100644 --- a/platform/buildView/backend/src/BuildViewApiProvider.kt +++ b/platform/buildView/backend/src/BuildViewApiProvider.kt @@ -1,47 +1,15 @@ // Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.platform.buildView.backend -import com.intellij.build.* -import com.intellij.openapi.application.EDT -import com.intellij.openapi.util.Disposer import com.intellij.platform.buildView.BuildViewApi -import com.intellij.platform.project.ProjectId -import com.intellij.platform.project.findProject +import com.intellij.platform.buildView.BuildViewApiImpl import com.intellij.platform.rpc.backend.RemoteApiProvider import fleet.rpc.remoteApiDescriptor -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.withContext internal class BuildViewApiProvider : RemoteApiProvider { override fun RemoteApiProvider.Sink.remoteApis() { remoteApi(remoteApiDescriptor()) { - BuildViewApiImpl() - } - } -} - -private class BuildViewApiImpl : BuildViewApi { - override suspend fun getBuildViewEventsFlow(projectId: ProjectId): Flow { - return BuildViewViewModel.getInstance(projectId.findProject()).getFlowWithHistory() - } - - override suspend fun setBuildContentPinned(buildContentId: BuildContentId, pinned: Boolean) { - val content = BackendMultipleBuildsView.getById(buildContentId) ?: return - content.pinned = pinned - } - - override suspend fun disposeBuildContent(buildContentId: BuildContentId) { - val content = BackendMultipleBuildsView.getById(buildContentId) ?: return - withContext(Dispatchers.EDT) { - Disposer.dispose(content) - } - } - - override suspend fun notifyTooWindowActivated(buildId: BuildId) { - val callback = BackendMultipleBuildsView.getToolWindowActivationCallback(buildId) ?: return - withContext(Dispatchers.EDT) { - callback.run() + BuildViewApiImpl } } } \ No newline at end of file diff --git a/platform/buildView/src/BuildViewApi.kt b/platform/buildView/src/BuildViewApi.kt index 295d7076551e..a304b6d41328 100644 --- a/platform/buildView/src/BuildViewApi.kt +++ b/platform/buildView/src/BuildViewApi.kt @@ -1,9 +1,11 @@ // Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.platform.buildView -import com.intellij.build.BuildViewEvent import com.intellij.build.BuildContentId import com.intellij.build.BuildId +import com.intellij.build.BuildViewEvent +import com.intellij.frontend.FrontendApplicationInfo +import com.intellij.frontend.FrontendType import com.intellij.platform.project.ProjectId import com.intellij.platform.rpc.RemoteApiProviderService import fleet.rpc.RemoteApi @@ -45,7 +47,8 @@ interface BuildViewApi : RemoteApi { companion object { suspend fun getInstance(): BuildViewApi { - return RemoteApiProviderService.resolve(remoteApiDescriptor()) + val isCWM = (FrontendApplicationInfo.getFrontendType() as? FrontendType.Remote)?.isGuest() == true + return if (isCWM) BuildViewApiImpl else RemoteApiProviderService.resolve(remoteApiDescriptor()) } } } \ No newline at end of file diff --git a/platform/buildView/src/BuildViewApiImpl.kt b/platform/buildView/src/BuildViewApiImpl.kt new file mode 100644 index 000000000000..ea18605c4623 --- /dev/null +++ b/platform/buildView/src/BuildViewApiImpl.kt @@ -0,0 +1,38 @@ +// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package com.intellij.platform.buildView + +import com.intellij.build.* +import com.intellij.openapi.application.EDT +import com.intellij.openapi.util.Disposer +import com.intellij.platform.project.ProjectId +import com.intellij.platform.project.findProject +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.withContext +import org.jetbrains.annotations.ApiStatus + +@ApiStatus.Internal +object BuildViewApiImpl : BuildViewApi { + override suspend fun getBuildViewEventsFlow(projectId: ProjectId): Flow { + return BuildViewViewModel.getInstance(projectId.findProject()).getFlowWithHistory() + } + + override suspend fun setBuildContentPinned(buildContentId: BuildContentId, pinned: Boolean) { + val content = BackendMultipleBuildsView.getById(buildContentId) ?: return + content.pinned = pinned + } + + override suspend fun disposeBuildContent(buildContentId: BuildContentId) { + val content = BackendMultipleBuildsView.getById(buildContentId) ?: return + withContext(Dispatchers.EDT) { + Disposer.dispose(content) + } + } + + override suspend fun notifyTooWindowActivated(buildId: BuildId) { + val callback = BackendMultipleBuildsView.getToolWindowActivationCallback(buildId) ?: return + withContext(Dispatchers.EDT) { + callback.run() + } + } +} \ No newline at end of file