@@ -18,10 +18,12 @@ import com.coder.toolbox.views.SignInPage
18
18
import com.coder.toolbox.views.TokenPage
19
19
import com.jetbrains.toolbox.api.core.PluginSecretStore
20
20
import com.jetbrains.toolbox.api.core.PluginSettingsStore
21
+ import com.jetbrains.toolbox.api.core.ServiceLocator
21
22
import com.jetbrains.toolbox.api.core.ui.icons.SvgIcon
22
23
import com.jetbrains.toolbox.api.remoteDev.ProviderVisibilityState
23
24
import com.jetbrains.toolbox.api.remoteDev.RemoteEnvironmentConsumer
24
25
import com.jetbrains.toolbox.api.remoteDev.RemoteProvider
26
+ import com.jetbrains.toolbox.api.remoteDev.ui.EnvironmentUiPageManager
25
27
import com.jetbrains.toolbox.api.ui.ToolboxUi
26
28
import com.jetbrains.toolbox.api.ui.actions.RunnableActionDescription
27
29
import com.jetbrains.toolbox.api.ui.components.AccountDropdownField
@@ -39,15 +41,17 @@ import kotlin.coroutines.cancellation.CancellationException
39
41
import kotlin.time.Duration.Companion.seconds
40
42
41
43
class CoderRemoteProvider (
44
+ private val serviceLocator : ServiceLocator ,
42
45
private val httpClient : OkHttpClient ,
43
- private val consumer : RemoteEnvironmentConsumer ,
44
- private val coroutineScope : CoroutineScope ,
45
- private val ui : ToolboxUi ,
46
- settingsStore : PluginSettingsStore ,
47
- secretsStore : PluginSecretStore ,
48
46
) : RemoteProvider {
49
47
private val logger = LoggerFactory .getLogger(javaClass)
50
48
49
+ private val ui: ToolboxUi = serviceLocator.getService(ToolboxUi ::class .java)
50
+ private val consumer: RemoteEnvironmentConsumer = serviceLocator.getService(RemoteEnvironmentConsumer ::class .java)
51
+ private val coroutineScope: CoroutineScope = serviceLocator.getService(CoroutineScope ::class .java)
52
+ private val settingsStore: PluginSettingsStore = serviceLocator.getService(PluginSettingsStore ::class .java)
53
+ private val secretsStore: PluginSecretStore = serviceLocator.getService(PluginSecretStore ::class .java)
54
+
51
55
// Current polling job.
52
56
private var pollJob: Job ? = null
53
57
private var lastEnvironments: Set <CoderRemoteEnvironment >? = null
@@ -60,7 +64,7 @@ class CoderRemoteProvider(
60
64
private val dialogUi = DialogUi (settings, ui)
61
65
private val linkHandler = LinkHandler (settings, httpClient, dialogUi)
62
66
63
- // The REST client, if we are signed in.
67
+ // The REST client, if we are signed in
64
68
private var client: CoderRestClient ? = null
65
69
66
70
// If we have an error in the polling we store it here before going back to
@@ -96,7 +100,7 @@ class CoderRemoteProvider(
96
100
it.name
97
101
}?.map { agent ->
98
102
// If we have an environment already, update that.
99
- val env = CoderRemoteEnvironment (client, ws, agent, ui )
103
+ val env = CoderRemoteEnvironment (serviceLocator, client, ws, agent, coroutineScope )
100
104
lastEnvironments?.firstOrNull { it == env }?.let {
101
105
it.update(ws, agent)
102
106
it
@@ -146,7 +150,6 @@ class CoderRemoteProvider(
146
150
// rememberMe to false so we do not try to automatically log in.
147
151
secrets.rememberMe = " false"
148
152
close()
149
- reset()
150
153
}
151
154
152
155
/* *
@@ -182,7 +185,7 @@ class CoderRemoteProvider(
182
185
consumer.consumeEnvironments(emptyList(), true )
183
186
}
184
187
185
- override fun getName (): String = " Coder Gateway "
188
+ override fun getName (): String = " Coder"
186
189
override fun getSvgIcon (): SvgIcon =
187
190
SvgIcon (this ::class .java.getResourceAsStream(" /icon.svg" )?.readAllBytes() ? : byteArrayOf())
188
191
@@ -208,7 +211,7 @@ class CoderRemoteProvider(
208
211
* Just displays the deployment URL at the moment, but we could use this as
209
212
* a form for creating new environments.
210
213
*/
211
- override fun getNewEnvironmentUiPage (): UiPage = NewEnvironmentPage (client?.url?.toString() )
214
+ override fun getNewEnvironmentUiPage (): UiPage = NewEnvironmentPage (getDeploymentURL()?.first )
212
215
213
216
/* *
214
217
* We always show a list of environments.
@@ -251,9 +254,8 @@ class CoderRemoteProvider(
251
254
* ui.hideUiPage() which stacks and has built-in back navigation, rather
252
255
* than using multiple root pages.
253
256
*/
254
- private fun reset () {
255
- // TODO - check this later
256
- // ui.showPluginEnvironmentsPage()
257
+ private fun goToEnvironmentsPage () {
258
+ serviceLocator.getService(EnvironmentUiPageManager ::class .java).showPluginEnvironmentsPage()
257
259
}
258
260
259
261
/* *
@@ -309,7 +311,7 @@ class CoderRemoteProvider(
309
311
settings,
310
312
httpClient,
311
313
coroutineScope,
312
- { reset() } ,
314
+ ::goToEnvironmentsPage ,
313
315
) { client, cli ->
314
316
// Store the URL and token for use next time.
315
317
secrets.lastDeploymentURL = client.url.toString()
@@ -320,7 +322,7 @@ class CoderRemoteProvider(
320
322
pollError = null
321
323
pollJob?.cancel()
322
324
pollJob = poll(client, cli)
323
- reset ()
325
+ goToEnvironmentsPage ()
324
326
}
325
327
326
328
/* *
0 commit comments