From dca419ee243dd1548800caf6273dbb05785c7a0f Mon Sep 17 00:00:00 2001 From: Michel Weststrate Date: Thu, 12 Nov 2020 15:03:02 -0800 Subject: [PATCH] Prompt for login by default Summary: This aligns behaviour with non-sandy behaviour of login: Prompt for login on startup if the user isn't yet signed in. Logic is based on https://www.internalfb.com/intern/diffusion/FBS/browse/master/xplat/sonar/desktop/app/src/chrome/UserAccount.tsx?commit=1fc905fdd1cd&lines=94 Reviewed By: jknoxville Differential Revision: D24922397 fbshipit-source-id: b4bab9c109a1054c0e260599d28320699c47dfda --- desktop/app/src/sandy-chrome/LeftRail.tsx | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/desktop/app/src/sandy-chrome/LeftRail.tsx b/desktop/app/src/sandy-chrome/LeftRail.tsx index 8221b54c6..e20fc8a1d 100644 --- a/desktop/app/src/sandy-chrome/LeftRail.tsx +++ b/desktop/app/src/sandy-chrome/LeftRail.tsx @@ -7,7 +7,13 @@ * @format */ -import React, {cloneElement, useState, useCallback, useMemo} from 'react'; +import React, { + cloneElement, + useState, + useCallback, + useMemo, + useEffect, +} from 'react'; import {Button, Divider, Badge, Tooltip, Avatar, Popover} from 'antd'; import { MobileFilled, @@ -37,7 +43,7 @@ import SignInSheet from '../chrome/SignInSheet'; import {errorCounterAtom} from '../chrome/ConsoleLogs'; import {ToplevelProps} from './SandyApp'; import {useValue} from 'flipper-plugin'; -import {logout} from '../reducers/user'; +import {logout, USER_NOT_SIGNEDIN, USER_UNAUTHORIZED} from '../reducers/user'; import config from '../fb-stubs/config'; import styled from '@emotion/styled'; import {showEmulatorLauncher} from './appinspect/LaunchEmulator'; @@ -46,6 +52,7 @@ import SupportRequestFormV2 from '../fb-stubs/SupportRequestFormV2'; import {setStaticView} from '../reducers/connections'; import {getInstance} from '../fb-stubs/Logger'; import {isStaticViewActive} from '../chrome/mainsidebar/sidebarUtils'; +import {getUser} from '../fb-stubs/user'; const LeftRailButtonElem = styled(Button)<{kind?: 'small'}>(({kind}) => ({ width: kind === 'small' ? 32 : 36, @@ -353,6 +360,17 @@ function LoginButton() { (visible) => setShowLogout(visible), [], ); + + useEffect(() => { + if (config.showLogin) { + getUser().catch((error) => { + if (error === USER_UNAUTHORIZED || error === USER_NOT_SIGNEDIN) { + setShowLogin(true); + } + }); + } + }, []); + return login ? (