fix(api): login-callback may have null user in rare cases

This commit is contained in:
41666 2020-12-17 15:01:40 -05:00
parent 823a99b4eb
commit b7921a830a

View file

@ -69,7 +69,6 @@ export const LoginCallback = resolveFailures(
const tokens = (await tokenFetch.json()) as AuthTokenResponse; const tokens = (await tokenFetch.json()) as AuthTokenResponse;
if (!tokens.access_token) { if (!tokens.access_token) {
console.info({ tokens });
return AuthErrorResponse('token response invalid'); return AuthErrorResponse('token response invalid');
} }
@ -79,6 +78,10 @@ export const LoginCallback = resolveFailures(
getGuilds(tokens.access_token), getGuilds(tokens.access_token),
]); ]);
if (!user) {
return AuthErrorResponse('failed to fetch user');
}
const sessionData: SessionData = { const sessionData: SessionData = {
tokens, tokens,
sessionID: sessionID.string, sessionID: sessionID.string,
@ -94,12 +97,14 @@ export const LoginCallback = resolveFailures(
} }
); );
const getUser = async (accessToken: string): Promise<DiscordUser> => { const getUser = async (accessToken: string): Promise<DiscordUser | null> => {
const { id, username, discriminator, bot, avatar } = await discordFetch<DiscordUser>( const user = await discordFetch<DiscordUser>('/users/@me', accessToken, 'Bearer');
'/users/@me',
accessToken, if (!user) {
'Bearer' return null;
); }
const { id, username, discriminator, bot, avatar } = user;
return { id, username, discriminator, bot, avatar }; return { id, username, discriminator, bot, avatar };
}; };