11package com.coder.gateway
22
3+ import com.coder.gateway.models.WorkspaceAndAgentStatus
34import com.coder.gateway.sdk.CoderRestClient
45import com.coder.gateway.sdk.v2.models.Workspace
56import com.coder.gateway.sdk.v2.models.WorkspaceAgent
6- import com.coder.gateway.sdk.v2.models.WorkspaceAgentStatus
7- import com.coder.gateway.sdk.v2.models.WorkspaceStatus
87import com.coder.gateway.views.EnvironmentView
98import com.jetbrains.toolbox.gateway.AbstractRemoteProviderEnvironment
109import com.jetbrains.toolbox.gateway.EnvironmentVisibilityState
1110import com.jetbrains.toolbox.gateway.environments.EnvironmentContentsView
1211import com.jetbrains.toolbox.gateway.states.EnvironmentStateConsumer
13- import com.jetbrains.toolbox.gateway.states.StandardRemoteEnvironmentState
1412import com.jetbrains.toolbox.gateway.ui.ObservablePropertiesFactory
1513import java.util.concurrent.CompletableFuture
1614
@@ -27,28 +25,11 @@ class CoderRemoteEnvironment(
2725) : AbstractRemoteProviderEnvironment(observablePropertiesFactory) {
2826 override fun getId (): String = " ${workspace.name} .${agent.name} "
2927 override fun getName (): String = " ${workspace.name} .${agent.name} "
28+ private val status = WorkspaceAndAgentStatus .from(workspace, agent)
3029
31- // Active (and unhealthy) here indicate that the workspace is in a state
32- // where a connection can be attempted, not that the workspace is up and
33- // running. Once a connection is actually initiated, the CLI will then
34- // start the workspace if it is off.
35- private var state = when (workspace.latestBuild.status) {
36- WorkspaceStatus .PENDING -> StandardRemoteEnvironmentState .Active
37- WorkspaceStatus .STARTING -> StandardRemoteEnvironmentState .Active
38- WorkspaceStatus .RUNNING -> when (agent.status) {
39- WorkspaceAgentStatus .CONNECTED -> StandardRemoteEnvironmentState .Active
40- WorkspaceAgentStatus .DISCONNECTED -> StandardRemoteEnvironmentState .Unreachable
41- WorkspaceAgentStatus .TIMEOUT -> StandardRemoteEnvironmentState .Unhealthy
42- WorkspaceAgentStatus .CONNECTING -> StandardRemoteEnvironmentState .Active
43- }
44- WorkspaceStatus .STOPPING -> StandardRemoteEnvironmentState .Initializing
45- WorkspaceStatus .STOPPED -> StandardRemoteEnvironmentState .Active
46- WorkspaceStatus .FAILED -> StandardRemoteEnvironmentState .Unhealthy
47- WorkspaceStatus .CANCELING -> StandardRemoteEnvironmentState .Initializing
48- WorkspaceStatus .CANCELED -> StandardRemoteEnvironmentState .Active
49- WorkspaceStatus .DELETING -> StandardRemoteEnvironmentState .Deleting
50- WorkspaceStatus .DELETED -> StandardRemoteEnvironmentState .Deleted
51- }
30+
31+ // Map each state to whether a connection can be attempted.
32+ private var state = status.toRemoteEnvironmentState()
5233
5334 /* *
5435 * The contents are provided by the SSH view provided by Toolbox, all we
0 commit comments