Skip to content

Commit 5973b0d

Browse files
committed
impl: go to main page after signing in
- if successfully signed in we go back to the main page which shows the environments/workspaces - similar approach if user hits Cancel during sign in - `EnvironmentUiPageManager` is an undocumented Toolbox component that has more flexibility to navigate between pages
1 parent 915d347 commit 5973b0d

File tree

3 files changed

+16
-22
lines changed

3 files changed

+16
-22
lines changed

src/main/kotlin/com/coder/toolbox/CoderRemoteProvider.kt

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,12 @@ import com.coder.toolbox.views.SignInPage
1818
import com.coder.toolbox.views.TokenPage
1919
import com.jetbrains.toolbox.api.core.PluginSecretStore
2020
import com.jetbrains.toolbox.api.core.PluginSettingsStore
21+
import com.jetbrains.toolbox.api.core.ServiceLocator
2122
import com.jetbrains.toolbox.api.core.ui.icons.SvgIcon
2223
import com.jetbrains.toolbox.api.remoteDev.ProviderVisibilityState
2324
import com.jetbrains.toolbox.api.remoteDev.RemoteEnvironmentConsumer
2425
import com.jetbrains.toolbox.api.remoteDev.RemoteProvider
26+
import com.jetbrains.toolbox.api.remoteDev.ui.EnvironmentUiPageManager
2527
import com.jetbrains.toolbox.api.ui.ToolboxUi
2628
import com.jetbrains.toolbox.api.ui.actions.RunnableActionDescription
2729
import com.jetbrains.toolbox.api.ui.components.AccountDropdownField
@@ -39,15 +41,17 @@ import kotlin.coroutines.cancellation.CancellationException
3941
import kotlin.time.Duration.Companion.seconds
4042

4143
class CoderRemoteProvider(
44+
private val serviceLocator: ServiceLocator,
4245
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,
4846
) : RemoteProvider {
4947
private val logger = LoggerFactory.getLogger(javaClass)
5048

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+
5155
// Current polling job.
5256
private var pollJob: Job? = null
5357
private var lastEnvironments: Set<CoderRemoteEnvironment>? = null
@@ -60,7 +64,7 @@ class CoderRemoteProvider(
6064
private val dialogUi = DialogUi(settings, ui)
6165
private val linkHandler = LinkHandler(settings, httpClient, dialogUi)
6266

63-
// The REST client, if we are signed in.
67+
// The REST client, if we are signed in
6468
private var client: CoderRestClient? = null
6569

6670
// If we have an error in the polling we store it here before going back to
@@ -146,7 +150,6 @@ class CoderRemoteProvider(
146150
// rememberMe to false so we do not try to automatically log in.
147151
secrets.rememberMe = "false"
148152
close()
149-
reset()
150153
}
151154

152155
/**
@@ -251,9 +254,8 @@ class CoderRemoteProvider(
251254
* ui.hideUiPage() which stacks and has built-in back navigation, rather
252255
* than using multiple root pages.
253256
*/
254-
private fun reset() {
255-
// TODO - check this later
256-
// ui.showPluginEnvironmentsPage()
257+
private fun goToEnvironmentsPage() {
258+
serviceLocator.getService(EnvironmentUiPageManager::class.java).showPluginEnvironmentsPage()
257259
}
258260

259261
/**
@@ -309,7 +311,7 @@ class CoderRemoteProvider(
309311
settings,
310312
httpClient,
311313
coroutineScope,
312-
{ reset() },
314+
::goToEnvironmentsPage,
313315
) { client, cli ->
314316
// Store the URL and token for use next time.
315317
secrets.lastDeploymentURL = client.url.toString()
@@ -320,7 +322,7 @@ class CoderRemoteProvider(
320322
pollError = null
321323
pollJob?.cancel()
322324
pollJob = poll(client, cli)
323-
reset()
325+
goToEnvironmentsPage()
324326
}
325327

326328
/**
Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,8 @@
11
package com.coder.toolbox
22

3-
import com.jetbrains.toolbox.api.core.PluginSecretStore
4-
import com.jetbrains.toolbox.api.core.PluginSettingsStore
53
import com.jetbrains.toolbox.api.core.ServiceLocator
64
import com.jetbrains.toolbox.api.remoteDev.RemoteDevExtension
7-
import com.jetbrains.toolbox.api.remoteDev.RemoteEnvironmentConsumer
85
import com.jetbrains.toolbox.api.remoteDev.RemoteProvider
9-
import com.jetbrains.toolbox.api.ui.ToolboxUi
10-
import kotlinx.coroutines.CoroutineScope
116
import okhttp3.OkHttpClient
127

138
/**
@@ -17,12 +12,8 @@ class CoderToolboxExtension : RemoteDevExtension {
1712
// All services must be passed in here and threaded as necessary.
1813
override fun createRemoteProviderPluginInstance(serviceLocator: ServiceLocator): RemoteProvider {
1914
return CoderRemoteProvider(
15+
serviceLocator,
2016
OkHttpClient(),
21-
serviceLocator.getService(RemoteEnvironmentConsumer::class.java),
22-
serviceLocator.getService(CoroutineScope::class.java),
23-
serviceLocator.getService(ToolboxUi::class.java),
24-
serviceLocator.getService(PluginSettingsStore::class.java),
25-
serviceLocator.getService(PluginSecretStore::class.java),
2617
)
2718
}
2819
}

src/main/kotlin/com/coder/toolbox/views/ConnectPage.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ class ConnectPage(
9696
cli.login(client.token)
9797
}
9898
onConnect(client, cli)
99+
99100
} catch (ex: Exception) {
100101
val msg = humanizeConnectionError(url, settings.requireTokenAuth, ex)
101102
notify("Failed to configure ${url.host}", ex)

0 commit comments

Comments
 (0)