diff --git a/desktop/flipper-ui-core/src/deprecated-exports.tsx b/desktop/flipper-ui-core/src/deprecated-exports.tsx index 23fff3ae7..35f8a6f20 100644 --- a/desktop/flipper-ui-core/src/deprecated-exports.tsx +++ b/desktop/flipper-ui-core/src/deprecated-exports.tsx @@ -20,7 +20,8 @@ export { internGraphPOSTAPIRequest, graphQLQuery, isLoggedIn, - getUser, + fetchUser, + getCachedUser, } from './fb-stubs/user'; export {FlipperPlugin, FlipperDevicePlugin, BaseAction} from './plugin'; export {PluginClient, Props, KeyboardActions} from './plugin'; diff --git a/desktop/flipper-ui-core/src/dispatcher/handleOpenPluginDeeplink.tsx b/desktop/flipper-ui-core/src/dispatcher/handleOpenPluginDeeplink.tsx index efa2ae416..6e23ea7a8 100644 --- a/desktop/flipper-ui-core/src/dispatcher/handleOpenPluginDeeplink.tsx +++ b/desktop/flipper-ui-core/src/dispatcher/handleOpenPluginDeeplink.tsx @@ -9,8 +9,12 @@ import React from 'react'; import {Dialog, getFlipperLib} from 'flipper-plugin'; -import {isTest, UserNotSignedInError} from 'flipper-common'; -import {getUser} from '../fb-stubs/user'; +import { + isTest, + UserNotSignedInError, + UserUnauthorizedError, +} from 'flipper-common'; +import {fetchUser} from '../fb-stubs/user'; import {State, Store} from '../reducers/index'; import {checkForUpdate} from '../fb-stubs/checkForUpdate'; import {getAppVersion} from '../utils/info'; @@ -226,7 +230,7 @@ async function verifyLighthouseAndUserLoggedIn( }); try { - const user = await getUser(); + const user = await fetchUser(); spinnerDialog.close(); // User is logged in if (user) { @@ -237,7 +241,10 @@ async function verifyLighthouseAndUserLoggedIn( } } catch (e) { spinnerDialog.close(); - if (e instanceof UserNotSignedInError) { + if ( + e instanceof UserNotSignedInError || + e instanceof UserUnauthorizedError + ) { // connection, but user is not logged in return await showPleaseLoginDialog(store, title); } diff --git a/desktop/flipper-ui-core/src/fb-stubs/user.tsx b/desktop/flipper-ui-core/src/fb-stubs/user.tsx index 451175d9a..f1ceb1c16 100644 --- a/desktop/flipper-ui-core/src/fb-stubs/user.tsx +++ b/desktop/flipper-ui-core/src/fb-stubs/user.tsx @@ -10,10 +10,14 @@ import {GraphFileUpload, User} from 'flipper-common'; import {Atom, createState} from 'flipper-plugin'; -export async function getUser(): Promise { +export async function fetchUser(): Promise { throw new Error('Feature not implemented'); } +export function getCachedUser(): User | null { + return null; +} + export async function internGraphPOSTAPIRequest( _endpoint: string, _formFields: { diff --git a/desktop/flipper-ui-core/src/sandy-chrome/LeftRail.tsx b/desktop/flipper-ui-core/src/sandy-chrome/LeftRail.tsx index 19959cde3..d448170c2 100644 --- a/desktop/flipper-ui-core/src/sandy-chrome/LeftRail.tsx +++ b/desktop/flipper-ui-core/src/sandy-chrome/LeftRail.tsx @@ -78,6 +78,7 @@ import {css} from '@emotion/css'; import {getRenderHostInstance} from 'flipper-frontend-core'; import {StyleGuide} from './StyleGuide'; import {useEffect} from 'react'; +import {isLoggedIn} from '../fb-stubs/user'; const LeftRailButtonElem = styled(Button)<{kind?: 'small'}>(({kind}) => ({ width: kind === 'small' ? 32 : 36, @@ -588,8 +589,9 @@ function SetupDoctorButton() { function LoginButton() { const dispatch = useDispatch(); + const loggedIn = useValue(isLoggedIn()); const user = useStore((state) => state.user); - const login = (user?.id ?? null) !== null; + const profileUrl = user?.profile_picture?.uri; const [showLogout, setShowLogout] = useState(false); const onHandleVisibleChange = useCallback( @@ -597,7 +599,7 @@ function LoginButton() { [], ); - return login ? ( + return loggedIn ? (