Skip to content

Commit df25033

Browse files
author
Laurie T. Malau
committed
Plug in experiment
1 parent 5f8184f commit df25033

File tree

2 files changed

+27
-16
lines changed

2 files changed

+27
-16
lines changed

components/dashboard/src/Login.tsx

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { UserContext } from "./user-context";
1111
import { TeamsContext } from "./teams/teams-context";
1212
import { getGitpodService } from "./service/service";
1313
import { iconForAuthProvider, openAuthorizeWindow, simplifyProviderName, getSafeURLRedirect } from "./provider-utils";
14+
import { Experiment } from './experiments';
1415
import gitpod from './images/gitpod.svg';
1516
import gitpodDark from './images/gitpod-dark.svg';
1617
import gitpodIcon from './icons/gitpod.svg';
@@ -47,9 +48,12 @@ export function hasVisitedMarketingWebsiteBefore() {
4748
export function Login() {
4849
const { setUser } = useContext(UserContext);
4950
const { setTeams } = useContext(TeamsContext);
51+
const experiment = "login-from-context-6826";
52+
5053
const urlHash = getURLHash();
5154
let hostFromContext: string | undefined;
5255
let repoPathname: string | undefined;
56+
5357
try {
5458
if (urlHash.length > 0) {
5559
const url = new URL(urlHash);
@@ -63,20 +67,26 @@ export function Login() {
6367
const [authProviders, setAuthProviders] = useState<AuthProviderInfo[]>([]);
6468
const [errorMessage, setErrorMessage] = useState<string | undefined>(undefined);
6569
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+
;
6775

6876
useEffect(() => {
6977
(async () => {
7078
setAuthProviders(await getGitpodService().server.getAuthProviders());
7179
})();
7280
}, [])
7381

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+
}
8090

8191
const authorizeSuccessful = async (payload?: string) => {
8292
updateUser().catch(console.error);
@@ -178,16 +188,16 @@ export function Login() {
178188
<div className="flex flex-col space-y-3 items-center">
179189
{providerFromContext
180190
?
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>
185195
:
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>)
191201
}
192202
</div>
193203

components/dashboard/src/experiments.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ const Experiments = {
2828
* Experiment "example" will be activate on login for 10% of all clients.
2929
*/
3030
// "example": 0.1,
31+
"login-from-context-6826": 0.5,
3132
};
3233
const ExperimentsSet = new Set(Object.keys(Experiments)) as Set<Experiment>;
3334
export type Experiment = keyof (typeof Experiments);

0 commit comments

Comments
 (0)