Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit c935a50

Browse files
authoredJun 21, 2022
Merge pull request #20 from coder/qodana-and-plugin-verifier-inspections
Address Qodana and plugin verifier inspections - remove usage of Gateway internal API - delete unused V1 models - used proper naming convention in serialized enum values - remove unused methods - remove unused property declarations - remove redundant calls on non-nullable types - suppress warnings about string capitalization & unstable API usage
2 parents 4c159ba + ca4bc3b commit c935a50

32 files changed

+109
-271
lines changed
 
-6.42 MB
Binary file not shown.

‎lib/webrtc-java-0.6.0.jar

-93.1 KB
Binary file not shown.

‎src/main/kotlin/com/coder/gateway/CoderGatewayConnectionProvider.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
@file:Suppress("DialogTitleCapitalization")
2+
13
package com.coder.gateway
24

35
import com.coder.gateway.models.RecentWorkspaceConnection
@@ -63,7 +65,7 @@ class CoderGatewayConnectionProvider : GatewayConnectionProvider {
6365
buildNumber = ideBuildNumber
6466
)
6567

66-
clientLifetime.launchUnderBackgroundProgress("Coder Gateway Deploy", true, true, null) {
68+
clientLifetime.launchUnderBackgroundProgress("Coder Gateway Deploy", canBeCancelled = true, isIndeterminate = true, project = null) {
6769
val context = SshMultistagePanelContext().apply {
6870
deploy = true
6971
sshConfig = sshConfiguration
@@ -74,6 +76,7 @@ class CoderGatewayConnectionProvider : GatewayConnectionProvider {
7476
ide = ideConfig
7577
}
7678
launch {
79+
@Suppress("UnstableApiUsage")
7780
SshDeployFlowUtil.fullDeployCycle(
7881
clientLifetime,
7982
context,

‎src/main/kotlin/com/coder/gateway/CoderGatewayMainView.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,15 @@ class CoderGatewayMainView : GatewayConnector {
2525
return CoderGatewayBundle.message("gateway.connector.action.text")
2626
}
2727

28-
override fun getDescription(): String? {
28+
override fun getDescription(): String {
2929
return CoderGatewayBundle.message("gateway.connector.description")
3030
}
3131

32-
override fun getDocumentationLink(): ActionLink? {
32+
override fun getDocumentationLink(): ActionLink {
3333
return BrowserLink(null, "Learn more about Coder Workspaces", null, "https://coder.com/docs/coder/latest/workspaces")
3434
}
3535

36-
override fun getRecentConnections(setContentCallback: (Component) -> Unit): GatewayRecentConnections? {
36+
override fun getRecentConnections(setContentCallback: (Component) -> Unit): GatewayRecentConnections {
3737
return CoderGatewayRecentWorkspaceConnectionsView()
3838
}
3939

‎src/main/kotlin/com/coder/gateway/sdk/CoderCLIDownloader.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import java.nio.file.StandardCopyOption
1111
class CoderCLIDownloader(private val buildVersion: String) {
1212

1313
fun downloadCLI(url: URL, outputName: String, ext: String): Path {
14-
val filename = if (ext.isNullOrBlank()) "${outputName}-$buildVersion" else "${outputName}-${buildVersion}.${ext}"
14+
val filename = if (ext.isBlank()) "${outputName}-$buildVersion" else "${outputName}-${buildVersion}.${ext}"
1515
val cliPath = Paths.get(System.getProperty("java.io.tmpdir"), filename)
1616
if (Files.exists(cliPath)) {
1717
logger.info("${cliPath.toAbsolutePath()} already exists, skipping download")

‎src/main/kotlin/com/coder/gateway/sdk/CoderCLIManager.kt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import com.intellij.openapi.diagnostic.Logger
44
import java.net.URL
55
import java.nio.file.Path
66

7-
class CoderCLIManager(private val url: URL, private val buildVersion: String) {
7+
class CoderCLIManager(private val url: URL, buildVersion: String) {
88
private val coderCLIDownloader = CoderCLIDownloader(buildVersion)
99

1010
fun download(): Path? {
@@ -21,19 +21,19 @@ class CoderCLIManager(private val url: URL, private val buildVersion: String) {
2121
}
2222
return when (os) {
2323
OS.WINDOWS -> when (arch) {
24-
Arch.amd64 -> "coder-windows-amd64"
25-
Arch.arm64 -> "coder-windows-arm64"
24+
Arch.AMD64 -> "coder-windows-amd64"
25+
Arch.ARM64 -> "coder-windows-arm64"
2626
else -> "coder-windows-amd64"
2727
}
2828
OS.LINUX -> when (arch) {
29-
Arch.amd64 -> "coder-linux-amd64"
30-
Arch.arm64 -> "coder-linux-arm64"
31-
Arch.armv7 -> "coder-linux-armv7"
29+
Arch.AMD64 -> "coder-linux-amd64"
30+
Arch.ARM64 -> "coder-linux-arm64"
31+
Arch.ARMV7 -> "coder-linux-armv7"
3232
else -> "coder-linux-amd64"
3333
}
3434
OS.MAC -> when (arch) {
35-
Arch.amd64 -> "coder-darwin-amd64"
36-
Arch.arm64 -> "coder-darwin-arm64"
35+
Arch.AMD64 -> "coder-darwin-amd64"
36+
Arch.ARM64 -> "coder-darwin-arm64"
3737
else -> "coder-darwin-amd64"
3838
}
3939
}

‎src/main/kotlin/com/coder/gateway/sdk/CoderRestClientService.kt

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package com.coder.gateway.sdk
33
import com.coder.gateway.sdk.convertors.InstantConverter
44
import com.coder.gateway.sdk.ex.AuthenticationException
55
import com.coder.gateway.sdk.v2.CoderV2RestFacade
6-
import com.coder.gateway.sdk.v2.models.AgentGitSSHKeys
76
import com.coder.gateway.sdk.v2.models.BuildInfo
87
import com.coder.gateway.sdk.v2.models.User
98
import com.coder.gateway.sdk.v2.models.Workspace
@@ -24,16 +23,16 @@ import java.time.Instant
2423
@Service(Service.Level.APP)
2524
class CoderRestClientService {
2625
private lateinit var retroRestClient: CoderV2RestFacade
26+
private lateinit var sessionToken: String
2727
lateinit var coderURL: URL
28-
lateinit var sessionToken: String
2928
lateinit var me: User
3029
lateinit var buildVersion: String
3130

3231
/**
3332
* This must be called before anything else. It will authenticate with coder and retrieve a session token
3433
* @throws [AuthenticationException] if authentication failed
3534
*/
36-
fun initClientSession(url: URL, token: String): User? {
35+
fun initClientSession(url: URL, token: String): User {
3736
val cookieUrl = url.toHttpUrlOrNull()!!
3837
val cookieJar = JavaNetCookieJar(CookieManager()).apply {
3938
saveFromResponse(
@@ -82,16 +81,7 @@ class CoderRestClientService {
8281
return workspacesResponse.body()!!
8382
}
8483

85-
fun userSSHKeys(): AgentGitSSHKeys {
86-
val sshKeysResponse = retroRestClient.sshKeys().execute()
87-
if (!sshKeysResponse.isSuccessful) {
88-
throw IllegalStateException("Could not retrieve Coder Workspaces:${sshKeysResponse.code()}, reason: ${sshKeysResponse.message()}")
89-
}
90-
91-
return sshKeysResponse.body()!!
92-
}
93-
94-
fun buildInfo(): BuildInfo {
84+
private fun buildInfo(): BuildInfo {
9585
val buildInfoResponse = retroRestClient.buildInfo().execute()
9686
if (!buildInfoResponse.isSuccessful) {
9787
throw java.lang.IllegalStateException("Could not retrieve build information for Coder instance $coderURL, reason:${buildInfoResponse.message()}")

‎src/main/kotlin/com/coder/gateway/sdk/convertors/InstantConverter.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class InstantConverter : JsonSerializer<Instant?>, JsonDeserializer<Instant?> {
3232
* @param typeOfSrc the actual type (fully genericized version) of the source object.
3333
* @return a JsonElement corresponding to the specified object.
3434
*/
35-
override fun serialize(src: Instant?, typeOfSrc: Type?, context: JsonSerializationContext?): JsonElement? {
35+
override fun serialize(src: Instant?, typeOfSrc: Type?, context: JsonSerializationContext?): JsonElement {
3636
return JsonPrimitive(FORMATTER.format(src))
3737
}
3838

‎src/main/kotlin/com/coder/gateway/sdk/ex/AuthenticationException.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ package com.coder.gateway.sdk.ex
22

33
import java.io.IOException
44

5-
class AuthenticationException(val reason: String) : IOException(reason)
5+
class AuthenticationException(reason: String) : IOException(reason)

‎src/main/kotlin/com/coder/gateway/sdk/os.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ fun getOS(): OS? {
1919
fun getArch(): Arch? {
2020
val arch = System.getProperty("os.arch").toLowerCase()
2121
return when {
22-
arch.contains("amd64", true) || arch.contains("x86_64", true) -> Arch.amd64
23-
arch.contains("arm64", true) || arch.contains("aarch64", true) -> Arch.arm64
24-
arch.contains("armv7", true) -> Arch.armv7
22+
arch.contains("amd64", true) || arch.contains("x86_64", true) -> Arch.AMD64
23+
arch.contains("arm64", true) || arch.contains("aarch64", true) -> Arch.ARM64
24+
arch.contains("armv7", true) -> Arch.ARMV7
2525
else -> null
2626
}
2727
}
@@ -31,5 +31,5 @@ enum class OS {
3131
}
3232

3333
enum class Arch {
34-
amd64, arm64, armv7
34+
AMD64, ARM64, ARMV7
3535
}

‎src/main/kotlin/com/coder/gateway/sdk/v1/CoderV1RestFacade.kt

Lines changed: 0 additions & 25 deletions
This file was deleted.

‎src/main/kotlin/com/coder/gateway/sdk/v1/CoderWebSocket.kt

Lines changed: 0 additions & 54 deletions
This file was deleted.

‎src/main/kotlin/com/coder/gateway/sdk/v1/LoginRequest.kt

Lines changed: 0 additions & 8 deletions
This file was deleted.

‎src/main/kotlin/com/coder/gateway/sdk/v1/LoginResponse.kt

Lines changed: 0 additions & 6 deletions
This file was deleted.

‎src/main/kotlin/com/coder/gateway/sdk/v1/RebuildMessage.kt

Lines changed: 0 additions & 10 deletions
This file was deleted.

‎src/main/kotlin/com/coder/gateway/sdk/v1/SSHKeys.kt

Lines changed: 0 additions & 5 deletions
This file was deleted.

‎src/main/kotlin/com/coder/gateway/sdk/v1/User.kt

Lines changed: 0 additions & 18 deletions
This file was deleted.

‎src/main/kotlin/com/coder/gateway/sdk/v1/Workspace.kt

Lines changed: 0 additions & 28 deletions
This file was deleted.

‎src/main/kotlin/com/coder/gateway/sdk/v1/WorkspaceStat.kt

Lines changed: 0 additions & 16 deletions
This file was deleted.
Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,13 @@
11
package com.coder.gateway.sdk.v2
22

3-
import com.coder.gateway.sdk.v2.models.AgentGitSSHKeys
43
import com.coder.gateway.sdk.v2.models.BuildInfo
5-
import com.coder.gateway.sdk.v2.models.LoginWithPasswordRequest
6-
import com.coder.gateway.sdk.v2.models.LoginWithPasswordResponse
74
import com.coder.gateway.sdk.v2.models.User
85
import com.coder.gateway.sdk.v2.models.Workspace
96
import retrofit2.Call
10-
import retrofit2.http.Body
117
import retrofit2.http.GET
12-
import retrofit2.http.POST
138

149
interface CoderV2RestFacade {
1510

16-
/**
17-
* Retrieves a session token authenticating with an email and password.
18-
*/
19-
@POST("api/v2/users/login")
20-
fun authenticate(@Body loginRequest: LoginWithPasswordRequest): Call<LoginWithPasswordResponse>
21-
2211
/**
2312
* Retrieves details about the authenticated user.
2413
*/
@@ -31,9 +20,6 @@ interface CoderV2RestFacade {
3120
@GET("api/v2/workspaces")
3221
fun workspaces(): Call<List<Workspace>>
3322

34-
@GET("api/v2/workspaceagents/me/gitsshkey")
35-
fun sshKeys(): Call<AgentGitSSHKeys>
36-
3723
@GET("api/v2/buildinfo")
3824
fun buildInfo(): Call<BuildInfo>
3925
}

‎src/main/kotlin/com/coder/gateway/sdk/v2/models/AgentGitSSHKeys.kt

Lines changed: 0 additions & 5 deletions
This file was deleted.

‎src/main/kotlin/com/coder/gateway/sdk/v2/models/LoginWithPasswordRequest.kt

Lines changed: 0 additions & 13 deletions
This file was deleted.

‎src/main/kotlin/com/coder/gateway/sdk/v2/models/LoginWithPasswordResponse.kt

Lines changed: 0 additions & 8 deletions
This file was deleted.

‎src/main/kotlin/com/coder/gateway/sdk/v2/models/ProvisionerJob.kt

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,21 @@ data class ProvisionerJob(
1515
)
1616

1717
enum class ProvisionerJobStatus {
18-
canceled, canceling, failed, pending, running, succeeded
18+
@SerializedName("canceled")
19+
CANCELED,
20+
21+
@SerializedName("canceling")
22+
CANCELING,
23+
24+
@SerializedName("failed")
25+
FAILED,
26+
27+
@SerializedName("pending")
28+
PENDING,
29+
30+
@SerializedName("running")
31+
RUNNING,
32+
33+
@SerializedName("succeeded")
34+
SUCCEEDED
1935
}

‎src/main/kotlin/com/coder/gateway/sdk/v2/models/WorkspaceBuild.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,12 @@ data class WorkspaceBuild(
2424
)
2525

2626
enum class WorkspaceBuildTransition {
27-
start, stop, delete
27+
@SerializedName("start")
28+
START,
29+
30+
@SerializedName("stop")
31+
STOP,
32+
33+
@SerializedName("delete")
34+
DELETE
2835
}

‎src/main/kotlin/com/coder/gateway/services/CoderRecentWorkspaceConnectionsService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import com.intellij.openapi.diagnostic.Logger
1313
@Service(Service.Level.APP)
1414
@State(name = "CoderRecentWorkspaceConnections", storages = [Storage("coder-recent-workspace-connections.xml", roamingType = RoamingType.DISABLED, exportable = true)])
1515
class CoderRecentWorkspaceConnectionsService : PersistentStateComponent<RecentWorkspaceConnectionState> {
16-
var myState = RecentWorkspaceConnectionState()
16+
private var myState = RecentWorkspaceConnectionState()
1717

1818
fun addRecentConnection(connection: RecentWorkspaceConnection) = myState.add(connection)
1919

‎src/main/kotlin/com/coder/gateway/views/CoderGatewayConnectionComponent.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import com.intellij.util.ui.components.BorderLayoutPanel
77
import com.jetbrains.rd.util.lifetime.Lifetime
88
import com.jetbrains.rd.util.lifetime.onTermination
99

10-
class CoderGatewayConnectionComponent(val lifetime: Lifetime, val url: String) : BorderLayoutPanel() {
10+
class CoderGatewayConnectionComponent(lifetime: Lifetime, val url: String) : BorderLayoutPanel() {
1111
private val disposable = Disposer.newDisposable()
1212
private val mainPanel = BorderLayoutPanel().apply {
1313
add(JBLabel(CoderIcons.LOGO_52), "Center")

‎src/main/kotlin/com/coder/gateway/views/CoderGatewayRecentWorkspaceConnectionsView.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
@file:Suppress("DialogTitleCapitalization")
2+
13
package com.coder.gateway.views
24

35
import com.coder.gateway.CoderGatewayBundle
@@ -92,7 +94,7 @@ class CoderGatewayRecentWorkspaceConnectionsView : GatewayRecentConnections {
9294
}.horizontalAlign(HorizontalAlign.LEFT).gap(RightGap.SMALL)
9395
actionButton(object : DumbAwareAction(CoderGatewayBundle.message("gateway.connector.recentconnections.terminal.button.tooltip"), "", CoderIcons.OPEN_TERMINAL) {
9496
override fun actionPerformed(e: AnActionEvent) {
95-
BrowserUtil.browse(recentConnections[0]?.webTerminalLink ?: "")
97+
BrowserUtil.browse(recentConnections[0].webTerminalLink ?: "")
9698
}
9799
})
98100
}
@@ -109,7 +111,7 @@ class CoderGatewayRecentWorkspaceConnectionsView : GatewayRecentConnections {
109111
"type" to "coder",
110112
"coder_workspace_hostname" to "${connectionDetails.coderWorkspaceHostname}",
111113
"project_path" to connectionDetails.projectPath!!,
112-
"ide_product_code" to "${product.productCode}",
114+
"ide_product_code" to product.productCode,
113115
"ide_build_number" to "${connectionDetails.ideBuildNumber}",
114116
"ide_download_link" to "${connectionDetails.downloadSource}"
115117
)

‎src/main/kotlin/com/coder/gateway/views/LazyBrowserLink.kt

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,19 @@ package com.coder.gateway.views
33
import com.intellij.icons.AllIcons
44
import com.intellij.ide.BrowserUtil
55
import com.intellij.ide.IdeBundle
6+
import com.intellij.openapi.actionSystem.ActionManager
67
import com.intellij.openapi.actionSystem.AnActionEvent
78
import com.intellij.openapi.actionSystem.DefaultActionGroup
89
import com.intellij.openapi.actionSystem.ex.ActionManagerEx
10+
import com.intellij.openapi.application.ApplicationManager
11+
import com.intellij.openapi.application.ModalityState
912
import com.intellij.openapi.ide.CopyPasteManager
1013
import com.intellij.openapi.project.DumbAwareAction
1114
import com.intellij.ui.components.ActionLink
1215
import org.jetbrains.annotations.Nls
1316
import java.awt.datatransfer.StringSelection
17+
import java.util.concurrent.ForkJoinPool
18+
import java.util.function.Consumer
1419
import javax.swing.Icon
1520

1621
class LazyBrowserLink(icon: Icon, @Nls text: String) : ActionLink() {
@@ -24,12 +29,25 @@ class LazyBrowserLink(icon: Icon, @Nls text: String) : ActionLink() {
2429
field = value
2530
if (value != null) {
2631
addActionListener { BrowserUtil.browse(value) }
27-
ActionManagerEx.doWithLazyActionManager { instance ->
32+
33+
doWithLazyActionManager { instance ->
2834
val group = DefaultActionGroup(OpenLinkInBrowser(value), CopyLinkAction(value))
2935
componentPopupMenu = instance.createActionPopupMenu("popup@browser.link.context.menu", group).component
3036
}
3137
}
3238
}
39+
40+
private fun doWithLazyActionManager(whatToDo: Consumer<in ActionManager>) {
41+
val created = ApplicationManager.getApplication().getServiceIfCreated(ActionManager::class.java)
42+
if (created == null) {
43+
ForkJoinPool.commonPool().execute {
44+
val actionManager: ActionManager = ActionManagerEx.getInstanceEx()
45+
ApplicationManager.getApplication().invokeLater({ whatToDo.accept(actionManager) }, ModalityState.any())
46+
}
47+
} else {
48+
whatToDo.accept(created)
49+
}
50+
}
3351
}
3452

3553
private class CopyLinkAction(val url: String) : DumbAwareAction(IdeBundle.messagePointer("action.text.copy.link.address"), AllIcons.Actions.Copy) {

‎src/main/kotlin/com/coder/gateway/views/steps/CoderAuthStepView.kt

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
1+
@file:Suppress("DialogTitleCapitalization")
2+
13
package com.coder.gateway.views.steps
24

35
import com.coder.gateway.CoderGatewayBundle
46
import com.coder.gateway.icons.CoderIcons
57
import com.coder.gateway.models.CoderWorkspacesWizardModel
6-
import com.coder.gateway.sdk.*
8+
import com.coder.gateway.sdk.CoderCLIManager
9+
import com.coder.gateway.sdk.CoderRestClientService
10+
import com.coder.gateway.sdk.OS
11+
import com.coder.gateway.sdk.getOS
12+
import com.coder.gateway.sdk.toURL
13+
import com.coder.gateway.sdk.withPath
714
import com.intellij.ide.BrowserUtil
815
import com.intellij.ide.IdeBundle
916
import com.intellij.openapi.Disposable
@@ -19,7 +26,11 @@ import com.intellij.openapi.wm.impl.welcomeScreen.WelcomeScreenUIManager
1926
import com.intellij.ui.AppIcon
2027
import com.intellij.ui.components.JBTextField
2128
import com.intellij.ui.components.dialog
22-
import com.intellij.ui.dsl.builder.*
29+
import com.intellij.ui.dsl.builder.BottomGap
30+
import com.intellij.ui.dsl.builder.RightGap
31+
import com.intellij.ui.dsl.builder.TopGap
32+
import com.intellij.ui.dsl.builder.bindText
33+
import com.intellij.ui.dsl.builder.panel
2334
import com.intellij.ui.dsl.gridLayout.HorizontalAlign
2435
import com.intellij.util.ui.JBFont
2536
import kotlinx.coroutines.CoroutineScope
@@ -71,9 +82,10 @@ class CoderAuthStepView : CoderWorkspacesWizardStep, Disposable {
7182
BrowserUtil.browse(model.coderURL.toURL().withPath("/login?redirect=%2Fcli-auth"))
7283
val pastedToken = askToken()
7384

74-
if (pastedToken?.isNullOrBlank() == true || coderClient.initClientSession(model.coderURL.toURL(), pastedToken) == null) {
85+
if (pastedToken.isNullOrBlank()) {
7586
return false
7687
}
88+
coderClient.initClientSession(model.coderURL.toURL(), pastedToken)
7789
model.token = pastedToken
7890
model.buildVersion = coderClient.buildVersion
7991

‎src/main/kotlin/com/coder/gateway/views/steps/CoderLocateRemoteProjectStepView.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ class CoderLocateRemoteProjectStepView : CoderWorkspacesWizardStep, Disposable {
124124
.flatMap { CachingProductsJsonWrapper.getAvailableIdes(it, workspaceOS) }
125125
.map { ide -> IdeWithStatus(ide.product, ide.buildNumber, IdeStatus.DOWNLOAD, ide.downloadLink, ide.presentableVersion) }
126126

127-
if (idesWithStatus.isNullOrEmpty()) {
127+
if (idesWithStatus.isEmpty()) {
128128
logger.warn("Could not resolve any IDE for workspace ${selectedWorkspace.name}, probably $workspaceOS is not supported by Gateway")
129129
} else {
130130
cbIDE.remove(spinner)
@@ -144,9 +144,9 @@ class CoderLocateRemoteProjectStepView : CoderWorkspacesWizardStep, Disposable {
144144
"type" to "coder",
145145
"coder_workspace_hostname" to "coder.${wizardModel.selectedWorkspace?.name}",
146146
"project_path" to tfProject.text,
147-
"ide_product_code" to "${selectedIDE.product.productCode}",
148-
"ide_build_number" to "${selectedIDE.buildNumber}",
149-
"ide_download_link" to "${selectedIDE.source}",
147+
"ide_product_code" to selectedIDE.product.productCode,
148+
"ide_build_number" to selectedIDE.buildNumber,
149+
"ide_download_link" to selectedIDE.source,
150150
"web_terminal_link" to "${terminalLink.url}"
151151
)
152152
)

‎src/main/kotlin/com/coder/gateway/views/steps/WorkspaceCellRenderer.kt

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -51,27 +51,27 @@ class WorkspaceCellRenderer : ListCellRenderer<Workspace> {
5151
}
5252

5353
private fun iconForStatus(workspace: Workspace) = when (workspace.latestBuild.job.status) {
54-
ProvisionerJobStatus.succeeded -> if (workspace.latestBuild.workspaceTransition == WorkspaceBuildTransition.start) GREEN_CIRCLE else RED_CIRCLE
55-
ProvisionerJobStatus.running -> when (workspace.latestBuild.workspaceTransition) {
56-
WorkspaceBuildTransition.start, WorkspaceBuildTransition.stop, WorkspaceBuildTransition.delete -> GRAY_CIRCLE
54+
ProvisionerJobStatus.SUCCEEDED -> if (workspace.latestBuild.workspaceTransition == WorkspaceBuildTransition.START) GREEN_CIRCLE else RED_CIRCLE
55+
ProvisionerJobStatus.RUNNING -> when (workspace.latestBuild.workspaceTransition) {
56+
WorkspaceBuildTransition.START, WorkspaceBuildTransition.STOP, WorkspaceBuildTransition.DELETE -> GRAY_CIRCLE
5757
}
5858
else -> RED_CIRCLE
5959
}
6060

6161
private fun labelForStatus(workspace: Workspace) = when (workspace.latestBuild.job.status) {
62-
ProvisionerJobStatus.pending -> "◍ Queued"
63-
ProvisionerJobStatus.running -> when (workspace.latestBuild.workspaceTransition) {
64-
WorkspaceBuildTransition.start -> "⦿ Starting"
65-
WorkspaceBuildTransition.stop -> "◍ Stopping"
66-
WorkspaceBuildTransition.delete -> "⦸ Deleting"
62+
ProvisionerJobStatus.PENDING -> "◍ Queued"
63+
ProvisionerJobStatus.RUNNING -> when (workspace.latestBuild.workspaceTransition) {
64+
WorkspaceBuildTransition.START -> "⦿ Starting"
65+
WorkspaceBuildTransition.STOP -> "◍ Stopping"
66+
WorkspaceBuildTransition.DELETE -> "⦸ Deleting"
6767
}
68-
ProvisionerJobStatus.succeeded -> when (workspace.latestBuild.workspaceTransition) {
69-
WorkspaceBuildTransition.start -> "⦿ Running"
70-
WorkspaceBuildTransition.stop -> "◍ Stopped"
71-
WorkspaceBuildTransition.delete -> "⦸ Deleted"
68+
ProvisionerJobStatus.SUCCEEDED -> when (workspace.latestBuild.workspaceTransition) {
69+
WorkspaceBuildTransition.START -> "⦿ Running"
70+
WorkspaceBuildTransition.STOP -> "◍ Stopped"
71+
WorkspaceBuildTransition.DELETE -> "⦸ Deleted"
7272
}
73-
ProvisionerJobStatus.canceling -> "◍ Canceling action"
74-
ProvisionerJobStatus.canceled -> "◍ Canceled action"
75-
ProvisionerJobStatus.failed -> "ⓧ Failed"
73+
ProvisionerJobStatus.CANCELING -> "◍ Canceling action"
74+
ProvisionerJobStatus.CANCELED -> "◍ Canceled action"
75+
ProvisionerJobStatus.FAILED -> "ⓧ Failed"
7676
}
7777
}

0 commit comments

Comments
 (0)
Please sign in to comment.