Skip to content

Commit be8ffb3

Browse files
committed
feedback
1 parent e182567 commit be8ffb3

File tree

1 file changed

+24
-2
lines changed

1 file changed

+24
-2
lines changed

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/auth/DefaultAuthCredentialsService.kt

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnection
1414
import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnectionManager
1515
import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnectionManagerListener
1616
import software.aws.toolkits.jetbrains.core.credentials.pinning.QConnection
17+
import software.aws.toolkits.jetbrains.core.credentials.sso.bearer.BearerTokenAuthState
1718
import software.aws.toolkits.jetbrains.core.credentials.sso.bearer.BearerTokenProvider
1819
import software.aws.toolkits.jetbrains.core.credentials.sso.bearer.BearerTokenProviderListener
1920
import software.aws.toolkits.jetbrains.services.amazonq.lsp.AmazonQLspService
@@ -69,8 +70,29 @@ class DefaultAuthCredentialsService(
6970
tokenSyncTask = scheduler.scheduleWithFixedDelay(
7071
{
7172
try {
72-
if (isQConnected(project) && !isQExpired(project)) {
73-
updateTokenFromActiveConnection()
73+
if (isQConnected(project)) {
74+
if (isQExpired(project)) {
75+
val manager = ToolkitConnectionManager.getInstance(project)
76+
val connection = manager.activeConnectionForFeature(QConnection.getInstance()) ?: return@scheduleWithFixedDelay
77+
78+
// Try to refresh the token if it's in NEEDS_REFRESH state
79+
val tokenProvider = (connection.getConnectionSettings() as? TokenConnectionSettings)
80+
?.tokenProvider
81+
?.delegate
82+
?.let { it as? BearerTokenProvider } ?: return@scheduleWithFixedDelay
83+
84+
if (tokenProvider.state() == BearerTokenAuthState.NEEDS_REFRESH) {
85+
try {
86+
tokenProvider.resolveToken()
87+
// Now that the token is refreshed, update it in Flare
88+
updateTokenFromActiveConnection()
89+
} catch (e: Exception) {
90+
LOG.warn(e) { "Failed to refresh bearer token" }
91+
}
92+
}
93+
} else {
94+
updateTokenFromActiveConnection()
95+
}
7496
}
7597
} catch (e: Exception) {
7698
LOG.warn(e) { "Failed to sync bearer token to Flare" }

0 commit comments

Comments
 (0)