1import url from 'url';
2
3import { websiteOrigin } from '../apiClient';
4import { getAuthSchemeAsync } from '../native-modules/DevMenuInternal';
5import { openAuthSessionAsync } from '../native-modules/DevMenuWebBrowser';
6
7export async function startAuthSessionAsync(type: 'signup' | 'login') {
8  const scheme = await getAuthSchemeAsync();
9
10  const redirectBase = `${scheme}://auth`;
11  const authSessionURL = `${websiteOrigin}/${type}?app_redirect_uri=${encodeURIComponent(
12    redirectBase
13  )}`;
14
15  const result = await openAuthSessionAsync(authSessionURL, redirectBase);
16
17  if (result.type === 'success') {
18    const { query } = url.parse(result.url, true);
19    const sessionSecret = decodeURIComponent(query['session_secret'] as string);
20    return sessionSecret;
21  }
22
23  return null;
24}
25