@@ -11,6 +11,7 @@ import { UserContext } from "./user-context";
11
11
import { TeamsContext } from "./teams/teams-context" ;
12
12
import { getGitpodService } from "./service/service" ;
13
13
import { iconForAuthProvider , openAuthorizeWindow , simplifyProviderName , getSafeURLRedirect } from "./provider-utils" ;
14
+ import { Experiment } from './experiments' ;
14
15
import gitpod from './images/gitpod.svg' ;
15
16
import gitpodDark from './images/gitpod-dark.svg' ;
16
17
import gitpodIcon from './icons/gitpod.svg' ;
@@ -47,9 +48,12 @@ export function hasVisitedMarketingWebsiteBefore() {
47
48
export function Login ( ) {
48
49
const { setUser } = useContext ( UserContext ) ;
49
50
const { setTeams } = useContext ( TeamsContext ) ;
51
+ const experiment = "login-from-context-6826" ;
52
+
50
53
const urlHash = getURLHash ( ) ;
51
54
let hostFromContext : string | undefined ;
52
55
let repoPathname : string | undefined ;
56
+
53
57
try {
54
58
if ( urlHash . length > 0 ) {
55
59
const url = new URL ( urlHash ) ;
@@ -63,20 +67,26 @@ export function Login() {
63
67
const [ authProviders , setAuthProviders ] = useState < AuthProviderInfo [ ] > ( [ ] ) ;
64
68
const [ errorMessage , setErrorMessage ] = useState < string | undefined > ( undefined ) ;
65
69
const [ providerFromContext , setProviderFromContext ] = useState < AuthProviderInfo > ( ) ;
66
- const showWelcome = ! hasLoggedInBefore ( ) && ! hasVisitedMarketingWebsiteBefore ( ) && ! urlHash . startsWith ( "https://" ) ;
70
+
71
+ const showWelcome = Experiment . has ( experiment ) ?
72
+ ( ! hasLoggedInBefore ( ) && ! hasVisitedMarketingWebsiteBefore ( ) && ! urlHash . startsWith ( "https://" ) )
73
+ : ( ! hasLoggedInBefore ( ) && ! hasVisitedMarketingWebsiteBefore ( ) )
74
+ ;
67
75
68
76
useEffect ( ( ) => {
69
77
( async ( ) => {
70
78
setAuthProviders ( await getGitpodService ( ) . server . getAuthProviders ( ) ) ;
71
79
} ) ( ) ;
72
80
} , [ ] )
73
81
74
- useEffect ( ( ) => {
75
- if ( hostFromContext && authProviders ) {
76
- const providerFromContext = authProviders . find ( provider => provider . host === hostFromContext ) ;
77
- setProviderFromContext ( providerFromContext ) ;
78
- }
79
- } , [ authProviders ] )
82
+ if ( Experiment . has ( experiment ) ) {
83
+ useEffect ( ( ) => {
84
+ if ( hostFromContext && authProviders ) {
85
+ const providerFromContext = authProviders . find ( provider => provider . host === hostFromContext ) ;
86
+ setProviderFromContext ( providerFromContext ) ;
87
+ }
88
+ } , [ authProviders ] )
89
+ }
80
90
81
91
const authorizeSuccessful = async ( payload ?: string ) => {
82
92
updateUser ( ) . catch ( console . error ) ;
@@ -178,16 +188,16 @@ export function Login() {
178
188
< div className = "flex flex-col space-y-3 items-center" >
179
189
{ providerFromContext
180
190
?
181
- < button key = { "button" + providerFromContext . host } className = "btn-login flex-none w-56 h-10 p-0 inline-flex" onClick = { ( ) => openLogin ( providerFromContext . host ) } >
182
- { iconForAuthProvider ( providerFromContext . authProviderType ) }
183
- < span className = "pt-2 pb-2 mr-3 text-sm my-auto font-medium truncate overflow-ellipsis" > Continue with { simplifyProviderName ( providerFromContext . host ) } </ span >
184
- </ button >
191
+ < button key = { "button" + providerFromContext . host } className = "btn-login flex-none w-56 h-10 p-0 inline-flex" onClick = { ( ) => openLogin ( providerFromContext . host ) } >
192
+ { iconForAuthProvider ( providerFromContext . authProviderType ) }
193
+ < span className = "pt-2 pb-2 mr-3 text-sm my-auto font-medium truncate overflow-ellipsis" > Continue with { simplifyProviderName ( providerFromContext . host ) } </ span >
194
+ </ button >
185
195
:
186
- authProviders . map ( ap =>
187
- < button key = { "button" + ap . host } className = "btn-login flex-none w-56 h-10 p-0 inline-flex" onClick = { ( ) => openLogin ( ap . host ) } >
188
- { iconForAuthProvider ( ap . authProviderType ) }
189
- < span className = "pt-2 pb-2 mr-3 text-sm my-auto font-medium truncate overflow-ellipsis" > Continue with { simplifyProviderName ( ap . host ) } </ span >
190
- </ button > )
196
+ authProviders . map ( ap =>
197
+ < button key = { "button" + ap . host } className = "btn-login flex-none w-56 h-10 p-0 inline-flex" onClick = { ( ) => openLogin ( ap . host ) } >
198
+ { iconForAuthProvider ( ap . authProviderType ) }
199
+ < span className = "pt-2 pb-2 mr-3 text-sm my-auto font-medium truncate overflow-ellipsis" > Continue with { simplifyProviderName ( ap . host ) } </ span >
200
+ </ button > )
191
201
}
192
202
</ div >
193
203
0 commit comments