@@ -7,20 +7,31 @@ import { BasicAuthInfo, Product, ProductBitbucket, ProductJira, SiteInfo } from
77import { configuration } from '../config/configuration' ;
88import { BitbucketEnabledKey , Commands , JiraEnabledKey } from '../constants' ;
99import { Container } from '../container' ;
10+ import { createValidatedRovoDevAuthInfo } from '../rovo-dev/rovoDevAuthValidator' ;
11+ import { RovoDevProcessManager } from '../rovo-dev/rovoDevProcessManager' ;
1012import { EXTENSION_URL } from '../uriHandler/atlascodeUriHandler' ;
1113import OnboardingQuickInputManager from './onboardingQuickInputManager' ;
1214import OnboardingQuickPickManager from './onboardingQuickPickManager' ;
13- import { OnboardingInputBoxStep , OnboardingQuickPickItem , onboardingQuickPickItems , OnboardingStep } from './utils' ;
15+ import RovoDevOnboardingInputManager , { RovoDevOnboardingSubmitArgs } from './rovoDevOnboardingInputManager' ;
16+ import {
17+ mainMenuQuickPickItems ,
18+ OnboardingInputBoxStep ,
19+ OnboardingQuickPickItem ,
20+ onboardingQuickPickItems ,
21+ OnboardingStep ,
22+ } from './utils' ;
1423
1524class OnboardingProvider {
1625 private id = 'atlascodeOnboardingQuickPick' ;
1726
1827 private _analyticsClient : AnalyticsClient ;
1928
29+ private _mainMenuQuickPickManager : OnboardingQuickPickManager ;
2030 private _jiraQuickPickManager : OnboardingQuickPickManager ;
2131 private _bitbucketQuickPickManager : OnboardingQuickPickManager ;
2232
2333 private _quickInputManager : OnboardingQuickInputManager ;
34+ private _rovoDevInputManager : RovoDevOnboardingInputManager ;
2435
2536 constructor ( ) {
2637 this . _analyticsClient = Container . analyticsClient ;
@@ -32,10 +43,28 @@ class OnboardingProvider {
3243 this . _handleServerLogin . bind ( this ) ,
3344 ) ;
3445
46+ this . _rovoDevInputManager = new RovoDevOnboardingInputManager (
47+ ( ) => this . _handleBack ( OnboardingStep . RovoDev ) ,
48+ ( args ) => this . _onRovoTokenSubmit ( args ) ,
49+ ) ;
50+
51+ this . _mainMenuQuickPickManager = new OnboardingQuickPickManager (
52+ mainMenuQuickPickItems ( ) ,
53+ null ,
54+ this . _onMainMenuAccept . bind ( this ) ,
55+ undefined ,
56+ {
57+ title : 'Get started with Atlassian' ,
58+ showBackButton : false ,
59+ step : OnboardingStep . MainMenu ,
60+ } ,
61+ ) ;
62+
3563 this . _jiraQuickPickManager = new OnboardingQuickPickManager (
3664 onboardingQuickPickItems ( ProductJira ) ,
3765 ProductJira ,
3866 this . _quickPickOnDidAccept . bind ( this ) ,
67+ this . _handleBack . bind ( this ) ,
3968 ) ;
4069
4170 this . _bitbucketQuickPickManager = new OnboardingQuickPickManager (
@@ -46,10 +75,53 @@ class OnboardingProvider {
4675 ) ;
4776 }
4877
49- // --- Handle Quick Pick Accept ---
50- private async _quickPickOnDidAccept ( item : OnboardingQuickPickItem , product : Product ) {
78+ private async _onRovoTokenSubmit ( args : RovoDevOnboardingSubmitArgs ) : Promise < void > {
79+ try {
80+ const host = args . siteUrl . replace ( / ^ h t t p s ? : \/ \/ / , '' ) . replace ( / \/ $ / , '' ) ;
81+ const authInfo = await createValidatedRovoDevAuthInfo ( host , args . email , args . token ) ;
82+ await Container . credentialManager . saveRovoDevAuthInfo ( authInfo ) ;
83+ await configuration . updateEffective ( 'rovodev.enabled' , true , null , true ) ;
84+ await RovoDevProcessManager . initializeRovoDev ( Container . context , true ) ;
85+ this . hideQuickPick ( OnboardingStep . RovoDev ) ;
86+ await commands . executeCommand ( 'atlascode.views.rovoDev.webView.focus' ) ;
87+ } catch ( error ) {
88+ Logger . error ( error , 'Rovo Dev onboarding: failed to save credentials' ) ;
89+ throw error ;
90+ }
91+ }
92+
93+ // --- Handle Main Menu Accept ---
94+ private _onMainMenuAccept ( item : OnboardingQuickPickItem ) {
5195 const onboardingId = item . onboardingId ;
96+ if ( ! onboardingId ) {
97+ return ;
98+ }
99+ switch ( onboardingId ) {
100+ case 'onboarding:rovo' :
101+ this . show ( OnboardingStep . RovoDev ) ;
102+ break ;
103+ case 'onboarding:jira' :
104+ this . show ( OnboardingStep . Jira ) ;
105+ break ;
106+ case 'onboarding:bitbucket' :
107+ this . show ( OnboardingStep . Bitbucket ) ;
108+ break ;
109+ default :
110+ break ;
111+ }
112+ }
113+
114+ private _showRovoDevTokenSetup ( ) {
115+ this . _mainMenuQuickPickManager . hide ( ) ;
116+ this . _rovoDevInputManager . start ( ) ;
117+ }
52118
119+ // --- Handle Quick Pick Accept ---
120+ private async _quickPickOnDidAccept ( item : OnboardingQuickPickItem , product : Product | null ) {
121+ if ( ! product ) {
122+ return ;
123+ }
124+ const onboardingId = item . onboardingId ;
53125 if ( ! onboardingId ) {
54126 return ;
55127 }
@@ -75,52 +147,48 @@ class OnboardingProvider {
75147 // --- Handle Next Step ---
76148 private _handleNext ( step : OnboardingStep ) {
77149 if ( step === OnboardingStep . Jira ) {
78- // Refresh Jira explorers
79150 commands . executeCommand ( Commands . RefreshAssignedWorkItemsExplorer ) ;
80-
81151 commands . executeCommand ( Commands . RefreshCustomJqlExplorer ) ;
82152 } else if ( step === OnboardingStep . Bitbucket ) {
83- // Refresh Bitbucket explorers
84153 commands . executeCommand ( Commands . BitbucketRefreshPullRequests ) ;
85-
86154 commands . executeCommand ( Commands . RefreshPipelines ) ;
87- this . hideQuickPick ( step ) ;
88- return ;
89155 } else {
90156 return ;
91157 }
92158 Container . focus ( ) ;
93159 this . hideQuickPick ( step ) ;
94-
95- this . show ( step + 1 ) ;
160+ this . show ( OnboardingStep . MainMenu ) ;
96161 }
97162
98163 // --- Start Onboarding ---
99164 start ( ) {
100165 this . _fireViewScreenEvent ( ) ;
101166 Container . focus ( ) ;
102-
103- this . show ( OnboardingStep . Jira ) ;
167+ this . show ( OnboardingStep . MainMenu ) ;
104168 }
105169
106170 // --- Show QuickPick ---
107171 show ( step : OnboardingStep ) {
108- if ( step === OnboardingStep . Jira ) {
109- // Show Jira items
172+ if ( step === OnboardingStep . MainMenu ) {
173+ this . _mainMenuQuickPickManager . show ( ) ;
174+ } else if ( step === OnboardingStep . Jira ) {
110175 this . _jiraQuickPickManager . show ( ) ;
111176 } else if ( step === OnboardingStep . Bitbucket ) {
112- // Show Bitbucket items
113177 this . _bitbucketQuickPickManager . show ( ) ;
114- } else {
115- return ;
178+ } else if ( step === OnboardingStep . RovoDev ) {
179+ this . _showRovoDevTokenSetup ( ) ;
116180 }
117181 }
118182
119183 hideQuickPick ( step : OnboardingStep ) {
120- if ( step === OnboardingStep . Jira ) {
184+ if ( step === OnboardingStep . MainMenu ) {
185+ this . _mainMenuQuickPickManager . hide ( ) ;
186+ } else if ( step === OnboardingStep . Jira ) {
121187 this . _jiraQuickPickManager . hide ( ) ;
122188 } else if ( step === OnboardingStep . Bitbucket ) {
123189 this . _bitbucketQuickPickManager . hide ( ) ;
190+ } else if ( step === OnboardingStep . RovoDev ) {
191+ this . _rovoDevInputManager . hide ( ) ;
124192 }
125193 }
126194
@@ -167,7 +235,7 @@ class OnboardingProvider {
167235
168236 private _handleBack ( step : OnboardingStep ) {
169237 this . hideQuickPick ( step ) ;
170- this . show ( step - 1 ) ;
238+ this . show ( OnboardingStep . MainMenu ) ;
171239 }
172240
173241 private _handleCloud ( product : Product ) {
0 commit comments