Skip to content

Commit a594219

Browse files
authored
[Bug fix] CodeCatalyst: User connection status is not updated in developer tools if connection is expired. (#4189)
* Reauthentication Check and Partial expiration case for login * Fix: In expired connection case CodeCatalyst will show the Re-authenticate to connect in Developer Tools * Add Change log for Update connection status of CodeCatalyst in Developer Tools * Addressing Comments * Update status of connection between expired and connection This reverts commit b7c97e6.
1 parent d52531c commit a594219

File tree

4 files changed

+38
-19
lines changed

4 files changed

+38
-19
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type" : "bugfix",
3+
"description" : "CodeCatalyst: Update status of connection in developer tools if the user connection is expired."
4+
}

plugins/toolkit/jetbrains-core/resources/META-INF/services/caws.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,10 @@
2020
<action class="software.aws.toolkits.jetbrains.core.explorer.devToolsTab.nodes.actions.SonoLogin" id="aws.caws.devtools.actions.login"/>
2121
<action class="software.aws.toolkits.jetbrains.core.explorer.devToolsTab.nodes.actions.CawsLearnMore" id="aws.caws.devtools.actions.learnMore"/>
2222
</group>
23+
24+
<group id="aws.caws.devtools.actions.expired">
25+
<action class="software.aws.toolkits.jetbrains.core.explorer.devToolsTab.nodes.actions.SonoLogin" id="aws.caws.devtools.actions.reauthenticate"/>
26+
<action class="software.aws.toolkits.jetbrains.core.explorer.devToolsTab.nodes.actions.CawsLearnMore" id="aws.caws.devtools.actions.learnMoreReAuth"/>
27+
</group>
2328
</actions>
2429
</idea-plugin>

plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/explorer/devToolsTab/nodes/CawsRootNode.kt

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,24 +10,24 @@ import com.intellij.openapi.actionSystem.ActionManager
1010
import com.intellij.openapi.project.Project
1111
import com.intellij.ui.SimpleTextAttributes
1212
import software.aws.toolkits.jetbrains.ToolkitPlaces
13-
import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnectionManager
1413
import software.aws.toolkits.jetbrains.core.credentials.pinning.CodeCatalystConnection
15-
import software.aws.toolkits.jetbrains.core.credentials.sono.isSono
1614
import software.aws.toolkits.jetbrains.core.explorer.actions.AnActionTreeNode
1715
import software.aws.toolkits.jetbrains.core.explorer.devToolsTab.nodes.actions.OpenWorkspaceInGateway
16+
import software.aws.toolkits.jetbrains.core.gettingstarted.editor.ActiveConnection
17+
import software.aws.toolkits.jetbrains.core.gettingstarted.editor.ActiveConnectionType
18+
import software.aws.toolkits.jetbrains.core.gettingstarted.editor.BearerTokenFeatureSet
19+
import software.aws.toolkits.jetbrains.core.gettingstarted.editor.checkBearerConnectionValidity
1820
import software.aws.toolkits.jetbrains.utils.isRunningOnRemoteBackend
1921
import software.aws.toolkits.resources.message
2022

2123
class CawsRootNode(private val nodeProject: Project) : AbstractTreeNode<String>(nodeProject, CawsServiceNode.NODE_NAME), PinnedConnectionNode {
2224
override fun getChildren(): Collection<AbstractTreeNode<*>> {
23-
val connectionManager = ToolkitConnectionManager.getInstance(project)
24-
val conn = connectionManager.activeConnectionForFeature(CodeCatalystConnection.getInstance())
25-
val groupId = if (conn != null) {
26-
"aws.caws.devtools.actions.loggedin"
27-
} else {
28-
"aws.caws.devtools.actions.loggedout"
25+
val connection = checkBearerConnectionValidity(project, BearerTokenFeatureSet.CODECATALYST)
26+
val groupId = when (connection) {
27+
is ActiveConnection.NotConnected -> CAWS_SIGNED_OUT_ACTION_GROUP
28+
is ActiveConnection.ValidBearer -> CAWS_SIGNED_IN_ACTION_GROUP
29+
else -> CAWS_EXPIRED_TOKEN_ACTION_GROUP
2930
}
30-
3131
val actions = ActionManager.getInstance().getAction(groupId) as ActionGroup
3232
return actions.getChildren(null).mapNotNull {
3333
if (it is OpenWorkspaceInGateway && isRunningOnRemoteBackend()) {
@@ -40,19 +40,26 @@ class CawsRootNode(private val nodeProject: Project) : AbstractTreeNode<String>(
4040

4141
override fun update(presentation: PresentationData) {
4242
presentation.addText(value, SimpleTextAttributes.REGULAR_ATTRIBUTES)
43-
44-
val connection = ToolkitConnectionManager.getInstance(project).activeConnectionForFeature(CodeCatalystConnection.getInstance())
45-
if (connection != null) {
46-
val msgId = if (connection.isSono()) {
47-
"caws.connected.builder_id"
48-
} else {
49-
"caws.connected.identity_center"
43+
val connection = checkBearerConnectionValidity(project, BearerTokenFeatureSet.CODECATALYST)
44+
val connectionText = when (connection) {
45+
is ActiveConnection.ValidBearer -> {
46+
when (connection.connectionType) {
47+
ActiveConnectionType.BUILDER_ID -> message("caws.connected.builder_id")
48+
else -> message("caws.connected.identity_center")
49+
}
5050
}
51-
presentation.addText(message(msgId), SimpleTextAttributes.GRAY_ATTRIBUTES)
51+
is ActiveConnection.NotConnected -> null
52+
else -> message("caws.expired.connection")
5253
}
54+
presentation.addText(connectionText, SimpleTextAttributes.GRAY_ATTRIBUTES)
5355
}
5456

5557
override fun feature() = CodeCatalystConnection.getInstance()
58+
companion object {
59+
const val CAWS_SIGNED_IN_ACTION_GROUP = "aws.caws.devtools.actions.loggedin"
60+
const val CAWS_SIGNED_OUT_ACTION_GROUP = "aws.caws.devtools.actions.loggedout"
61+
const val CAWS_EXPIRED_TOKEN_ACTION_GROUP = "aws.caws.devtools.actions.expired"
62+
}
5663
}
5764

5865
class CawsServiceNode : DevToolsServiceNode {

plugins/toolkit/resources/resources/software/aws/toolkits/resources/MessagesBundle.properties

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@ action.apprunner.service.openServiceUri.text=Open Service URL
55
action.aws.caws.devtools.actions.clone.text=Clone Repository
66
action.aws.caws.devtools.actions.copyCloneUrl.text=Copy Clone URL for Command Line
77
action.aws.caws.devtools.actions.learnMore.text=Learn More about CodeCatalyst
8+
action.aws.caws.devtools.actions.learnMoreReAuth.text=Learn More about CodeCatalyst
89
action.aws.caws.devtools.actions.login.text=Start
910
action.aws.caws.devtools.actions.openGateway.text=Open Dev Environments in JetBrains Gateway
11+
action.aws.caws.devtools.actions.reauthenticate.text=Re-authenticate to connect
1012
action.aws.caws.rebuildAction.text=Rebuild Dev Environment
1113
action.aws.caws.updateDevfile.text=Update Devfile...
1214
action.aws.toolkit.caws.logout.text=Sign out
@@ -273,8 +275,8 @@ caws.configure_workspace_not_running=Reconfigure Dev Environment is only availab
273275
caws.configure_workspace_tab_save_button=Save and restart
274276
caws.configure_workspace_tab_title=Configure Dev Environment
275277
caws.configure_workspace_title=Configure Dev Environment: {0} in {1}
276-
caws.connected.builder_id=\ AWS Builder ID Connected
277-
caws.connected.identity_center=\ IAM Identity Center Connected
278+
caws.connected.builder_id=\ AWS Builder ID Connected
279+
caws.connected.identity_center=\ IAM Identity Center Connected
278280
caws.connecting.checking=Checking state of Dev Environment
279281
caws.connecting.in_progress=Connecting to Dev Environment
280282
caws.connecting.waiting_for_environment=Launching Dev Environment (This may take a few minutes)
@@ -309,6 +311,7 @@ caws.devtoolPanel.title=CodeCatalyst
309311
caws.download.thin_client=Downloading IDE thin client
310312
caws.environment.status=Dev Environment is currently: {0}
311313
caws.environment.view_pricing=Learn more about Dev Environment pricing
314+
caws.expired.connection=\ Expired Connection
312315
caws.free.tier.subscription.storage=Other storage options are not currently available for your space. These require upgrading the billing tier.
313316
caws.getstarted.panel.description=Spend more time coding and less <br>time managing development <br>environments.
314317
caws.getstarted.panel.link_text=Learn more about CodeCatalyst Spaces

0 commit comments

Comments
 (0)