@@ -574,7 +574,7 @@ class ChatSetupRequests extends Disposable {
574
574
return this . resolveEntitlement ( session , CancellationToken . None ) ;
575
575
}
576
576
577
- async signUpLimited ( session : AuthenticationSession ) : Promise < boolean > {
577
+ async signUpLimited ( session : AuthenticationSession ) : Promise < true /* signed up */ | false /* already signed up */ | undefined /* error */ > {
578
578
const body = {
579
579
restricted_telemetry : this . telemetryService . telemetryLevel === TelemetryLevel . NONE ? 'disabled' : 'enabled' ,
580
580
public_code_suggestions : 'enabled'
@@ -583,7 +583,7 @@ class ChatSetupRequests extends Disposable {
583
583
const response = await this . request ( defaultChat . entitlementSignupLimitedUrl , 'POST' , body , session , CancellationToken . None ) ;
584
584
if ( ! response ) {
585
585
this . onUnknownSignUpError ( '[chat setup] sign-up: no response' ) ;
586
- return false ;
586
+ return undefined ;
587
587
}
588
588
589
589
if ( response . res . statusCode && response . res . statusCode !== 200 ) {
@@ -594,15 +594,15 @@ class ChatSetupRequests extends Disposable {
594
594
const responseError : { message : string } = JSON . parse ( responseText ) ;
595
595
if ( typeof responseError . message === 'string' && responseError . message ) {
596
596
this . onUnprocessableSignUpError ( `[chat setup] sign-up: unprocessable entity (${ responseError . message } )` , responseError . message ) ;
597
- return false ;
597
+ return undefined ;
598
598
}
599
599
}
600
600
} catch ( error ) {
601
601
// ignore - handled below
602
602
}
603
603
}
604
604
this . onUnknownSignUpError ( `[chat setup] sign-up: unexpected status code ${ response . res . statusCode } ` ) ;
605
- return false ;
605
+ return undefined ;
606
606
}
607
607
608
608
let responseText : string | null = null ;
@@ -614,7 +614,7 @@ class ChatSetupRequests extends Disposable {
614
614
615
615
if ( ! responseText ) {
616
616
this . onUnknownSignUpError ( '[chat setup] sign-up: response has no content' ) ;
617
- return false ;
617
+ return undefined ;
618
618
}
619
619
620
620
let parsedResult : { subscribed : boolean } | undefined = undefined ;
@@ -623,20 +623,14 @@ class ChatSetupRequests extends Disposable {
623
623
this . logService . trace ( `[chat setup] sign-up: response is ${ responseText } ` ) ;
624
624
} catch ( err ) {
625
625
this . onUnknownSignUpError ( `[chat setup] sign-up: error parsing response (${ err } )` ) ;
626
+ return undefined ;
626
627
}
627
628
628
- const subscribed = Boolean ( parsedResult ?. subscribed ) ;
629
- if ( subscribed ) {
630
- this . logService . trace ( '[chat setup] sign-up: successfully subscribed' ) ;
631
- } else {
632
- this . logService . error ( '[chat setup] sign-up: not subscribed' ) ;
633
- }
634
-
635
- if ( subscribed ) {
636
- this . update ( { entitlement : ChatEntitlement . Limited } ) ;
637
- }
629
+ // We have made it this far, so the user either did sign-up or was signed-up already.
630
+ // That is, because the endpoint throws in all other case according to Patrick.
631
+ this . update ( { entitlement : ChatEntitlement . Limited } ) ;
638
632
639
- return subscribed ;
633
+ return Boolean ( parsedResult ?. subscribed ) ;
640
634
}
641
635
642
636
private onUnknownSignUpError ( logMessage : string ) : void {
@@ -824,14 +818,14 @@ class ChatSetupController extends Disposable {
824
818
825
819
let installResult : 'installed' | 'cancelled' | 'failedInstall' | undefined = undefined ;
826
820
const wasInstalled = this . context . state . installed ;
827
- let didSignUp = false ;
821
+ let didSignUp : boolean | undefined = undefined ;
828
822
try {
829
823
showCopilotView ( this . viewsService , this . layoutService ) ;
830
824
831
825
if ( entitlement !== ChatEntitlement . Limited && entitlement !== ChatEntitlement . Pro && entitlement !== ChatEntitlement . Unavailable ) {
832
826
didSignUp = await this . requests . signUpLimited ( session ) ;
833
827
834
- if ( ! didSignUp ) {
828
+ if ( typeof didSignUp === 'undefined' /* error */ ) {
835
829
this . telemetryService . publicLog2 < InstallChatEvent , InstallChatClassification > ( 'commandCenter.chatInstall' , { installResult : 'failedSignUp' , signedIn } ) ;
836
830
}
837
831
}
0 commit comments