Skip to content

Commit d20b192

Browse files
authored
fix(amazonq): add documenation link in profile selection webview page (#5554)
1 parent 489338a commit d20b192

File tree

5 files changed

+43
-2
lines changed

5 files changed

+43
-2
lines changed

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/QLoginWebview.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
package software.aws.toolkits.jetbrains.services.amazonq
55

6+
import com.intellij.ide.BrowserUtil
67
import com.intellij.openapi.Disposable
78
import com.intellij.openapi.actionSystem.AnActionEvent
89
import com.intellij.openapi.actionSystem.DataContext
@@ -48,6 +49,7 @@ import software.aws.toolkits.telemetry.Telemetry
4849
import software.aws.toolkits.telemetry.UiTelemetry
4950
import software.aws.toolkits.telemetry.WebviewTelemetry
5051
import java.awt.event.ActionListener
52+
import java.net.URI
5153
import javax.swing.JButton
5254
import javax.swing.JComponent
5355

@@ -227,6 +229,10 @@ class QWebviewBrowser(val project: Project, private val parentDisposable: Dispos
227229
is BrowserMessage.PublishWebviewTelemetry -> {
228230
publishTelemetry(message)
229231
}
232+
233+
is BrowserMessage.OpenUrl -> {
234+
BrowserUtil.browse(URI(message.externalLink))
235+
}
230236
}
231237
}
232238

plugins/core/jetbrains-community/src/software/aws/toolkits/jetbrains/core/webview/BrowserMessage.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import com.fasterxml.jackson.annotation.JsonTypeInfo
2828
JsonSubTypes.Type(value = BrowserMessage.SendUiClickTelemetry::class, name = "sendUiClickTelemetry"),
2929
JsonSubTypes.Type(value = BrowserMessage.SwitchProfile::class, name = "switchProfile"),
3030
JsonSubTypes.Type(value = BrowserMessage.PublishWebviewTelemetry::class, name = "webviewTelemetry"),
31+
JsonSubTypes.Type(value = BrowserMessage.OpenUrl::class, name = "openUrl"),
3132
JsonSubTypes.Type(value = BrowserMessage.ListProfiles::class, name = "listProfiles")
3233
)
3334
sealed interface BrowserMessage {
@@ -60,6 +61,8 @@ sealed interface BrowserMessage {
6061

6162
object Reauth : BrowserMessage
6263

64+
data class OpenUrl(val externalLink: String) : BrowserMessage
65+
6366
data class SwitchProfile(
6467
val profileName: String,
6568
val accountId: String,

plugins/core/jetbrains-community/tst/software/aws/toolkits/jetbrains/core/BrowserMessageTest.kt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,17 @@ class BrowserMessageTest {
174174
event = "{ \"metricName\": \"foo\" }"
175175
)
176176
)
177+
178+
assertDeserializedInstanceOf<BrowserMessage.OpenUrl>(
179+
"""
180+
{
181+
"command": "openUrl",
182+
"externalLink": "foo"
183+
}
184+
"""
185+
).isEqualTo(
186+
BrowserMessage.OpenUrl("foo")
187+
)
177188
}
178189

179190
@Test
@@ -298,6 +309,14 @@ class BrowserMessageTest {
298309
}
299310
"""
300311
)
312+
313+
assertDeserializedWillThrow<MismatchedInputException>(
314+
"""
315+
{
316+
"command": "openUrl"
317+
}
318+
"""
319+
)
301320
}
302321

303322
@Test

plugins/core/webview/src/q-ui/components/profileSelection.vue

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,11 @@
1111
<!-- Title & Subtitle -->
1212
<div id="profile-page" class="profile-header">
1313
<h2 class="title bottom-small-gap">Choose a Q Developer profile</h2>
14-
<p class="profile-subtitle">
14+
<div class="profile-subtitle">
1515
Your administrator has given you access to Q from multiple profiles.
1616
Choose the profile that meets your current working needs. You can change your profile at any time.
17-
</p>
17+
<a @click.prevent="openUrl">More info.</a>
18+
</div>
1819
</div>
1920
<!-- Profile List -->
2021
<div class="profile-list">
@@ -128,6 +129,12 @@ export default defineComponent({
128129
},
129130
handleSignoutClick() {
130131
window.ideApi.postMessage({command: 'signout'})
132+
},
133+
openUrl() {
134+
window.ideApi.postMessage({
135+
command: 'openUrl',
136+
externalLink: 'https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/subscribe-understanding-profile.html'
137+
})
131138
}
132139
}
133140
})

plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/core/explorer/webview/ToolkitLoginWebview.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
package software.aws.toolkits.jetbrains.core.explorer.webview
55

6+
import com.intellij.ide.BrowserUtil
67
import com.intellij.ide.ui.LafManagerListener
78
import com.intellij.openapi.Disposable
89
import com.intellij.openapi.actionSystem.AnActionEvent
@@ -60,6 +61,7 @@ import software.aws.toolkits.jetbrains.utils.isTookitConnected
6061
import software.aws.toolkits.telemetry.FeatureId
6162
import software.aws.toolkits.telemetry.UiTelemetry
6263
import java.awt.event.ActionListener
64+
import java.net.URI
6365
import javax.swing.JButton
6466
import javax.swing.JComponent
6567

@@ -251,6 +253,10 @@ class ToolkitWebviewBrowser(val project: Project, private val parentDisposable:
251253
is BrowserMessage.PublishWebviewTelemetry -> {
252254
publishTelemetry(message)
253255
}
256+
257+
is BrowserMessage.OpenUrl -> {
258+
BrowserUtil.browse(URI(message.externalLink))
259+
}
254260
}
255261
}
256262

0 commit comments

Comments
 (0)