Skip to content

Commit 370a245

Browse files
authored
Limit number of times user is given Q welcome page (#5152)
1 parent 606cadf commit 370a245

File tree

4 files changed

+34
-3
lines changed

4 files changed

+34
-3
lines changed

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import com.intellij.openapi.util.Disposer
88
import com.intellij.ui.jcef.JBCefJSQuery
99
import org.cef.CefApp
1010
import software.aws.toolkits.jetbrains.services.amazonq.util.createBrowser
11+
import software.aws.toolkits.jetbrains.settings.MeetQSettings
1112

1213
/*
1314
Displays the web view for the Amazon Q tool window
@@ -85,6 +86,7 @@ class Browser(parent: Disposable) : Disposable {
8586
$postMessageToJavaJsCode
8687
}
8788
},
89+
${MeetQSettings.getInstance().reinvent2024OnboardingCount < MAX_ONBOARDING_PAGE_COUNT},
8890
$isFeatureDevAvailable, // whether /dev is available
8991
$isCodeTransformAvailable, // whether /transform is available
9092
$isDocAvailable, // whether /doc is available
@@ -110,5 +112,6 @@ class Browser(parent: Disposable) : Disposable {
110112

111113
companion object {
112114
private const val WEB_SCRIPT_URI = "http://mynah/js/mynah-ui.js"
115+
private const val MAX_ONBOARDING_PAGE_COUNT = 3
113116
}
114117
}

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

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
package software.aws.toolkits.jetbrains.services.amazonq.webview
55

66
import com.intellij.ide.BrowserUtil
7+
import com.intellij.ide.util.RunOnceUtil
78
import com.intellij.ui.jcef.JBCefJSQuery.Response
89
import kotlinx.coroutines.CompletableDeferred
910
import kotlinx.coroutines.channels.awaitClose
@@ -22,6 +23,7 @@ import software.aws.toolkits.jetbrains.services.amazonq.util.command
2223
import software.aws.toolkits.jetbrains.services.amazonq.util.tabType
2324
import software.aws.toolkits.jetbrains.services.amazonq.webview.theme.AmazonQTheme
2425
import software.aws.toolkits.jetbrains.services.amazonq.webview.theme.ThemeBrowserAdapter
26+
import software.aws.toolkits.jetbrains.settings.MeetQSettings
2527
import software.aws.toolkits.telemetry.Telemetry
2628
import java.util.function.Function
2729

@@ -40,7 +42,12 @@ class BrowserConnector(
4042
.onEach { json ->
4143
val node = serializer.toNode(json)
4244
when (node.command) {
43-
"ui-is-ready" -> uiReady.complete(true)
45+
"ui-is-ready" -> {
46+
uiReady.complete(true)
47+
RunOnceUtil.runOnceForApp("AmazonQ-UI-Ready") {
48+
MeetQSettings.getInstance().reinvent2024OnboardingCount += 1
49+
}
50+
}
4451

4552
// some weird issue preventing deserialization from working
4653
"open-user-guide" -> {

plugins/amazonq/mynah-ui/src/mynah-ui/ui/main.ts

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import {createClickTelemetry, createOpenAgentTelemetry} from "./telemetry/action
3333

3434
export const createMynahUI = (
3535
ideApi: any,
36+
showWelcomePage: boolean,
3637
featureDevInitEnabled: boolean,
3738
codeTransformInitEnabled: boolean,
3839
docInitEnabled: boolean,
@@ -61,7 +62,7 @@ export const createMynahUI = (
6162
tabsStorage.addTab({
6263
id: 'tab-1',
6364
status: 'free',
64-
type: 'cwc',
65+
type: showWelcomePage ? 'welcome' : 'cwc',
6566
isSelected: true,
6667
})
6768

@@ -598,6 +599,17 @@ export const createMynahUI = (
598599
}
599600
}
600601

602+
if (tabsStorage.getTab(tabID)?.type === 'welcome') {
603+
mynahUI.updateStore(tabID, {
604+
tabHeaderDetails: void 0,
605+
compactMode: false,
606+
tabBackground: false,
607+
promptInputText: '',
608+
promptInputLabel: void 0,
609+
chatItems: [],
610+
})
611+
}
612+
601613
if (prompt.command !== undefined && prompt.command.trim() !== '') {
602614
quickActionHandler.handleCommand(prompt, tabID, eventId)
603615

@@ -678,7 +690,9 @@ export const createMynahUI = (
678690
tabs: {
679691
'tab-1': {
680692
isSelected: true,
681-
store: welcomeScreenTabData(tabDataGenerator).store,
693+
store: showWelcomePage
694+
? welcomeScreenTabData(tabDataGenerator).store
695+
: tabDataGenerator.getTabData('cwc', true),
682696
},
683697
},
684698
onInBodyButtonClicked: (tabId, messageId, action, eventId) => {

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/settings/MeetQSettings.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,17 @@ class MeetQSettings : PersistentStateComponent<MeetQSettingsConfiguration> {
2626
state.shouldDisplayPage = value
2727
}
2828

29+
var reinvent2024OnboardingCount: Int
30+
get() = state.reinvent2024OnboardingCount
31+
set(value) {
32+
state.reinvent2024OnboardingCount = value
33+
}
34+
2935
companion object {
3036
fun getInstance(): MeetQSettings = service()
3137
}
3238
}
3339
data class MeetQSettingsConfiguration(
3440
var shouldDisplayPage: Boolean = true,
41+
var reinvent2024OnboardingCount: Int = 0,
3542
)

0 commit comments

Comments
 (0)