Add state to login button when disconnected

Summary: Indicate intern connection state via an icon, now that we are polling when offline this icon automatically goes away one we reconnect

Reviewed By: aigoncharov

Differential Revision: D44502479

fbshipit-source-id: fb411940f1e4cad50539fe08df6d6194b176404a
This commit is contained in:
Luke De Feo
2023-03-30 10:05:59 -07:00
committed by Facebook GitHub Bot
parent 3a85835a9a
commit 91c5a11e1b

View File

@@ -28,6 +28,7 @@ import {
MedicineBoxOutlined, MedicineBoxOutlined,
RocketOutlined, RocketOutlined,
BugOutlined, BugOutlined,
WarningOutlined,
} from '@ant-design/icons'; } from '@ant-design/icons';
import {SidebarLeft, SidebarRight} from './SandyIcons'; import {SidebarLeft, SidebarRight} from './SandyIcons';
import {useDispatch, useStore} from '../utils/useStore'; import {useDispatch, useStore} from '../utils/useStore';
@@ -78,7 +79,7 @@ import {css} from '@emotion/css';
import {getRenderHostInstance} from 'flipper-frontend-core'; import {getRenderHostInstance} from 'flipper-frontend-core';
import {StyleGuide} from './StyleGuide'; import {StyleGuide} from './StyleGuide';
import {useEffect} from 'react'; import {useEffect} from 'react';
import {isLoggedIn} from '../fb-stubs/user'; import {isConnected, isLoggedIn} from '../fb-stubs/user';
const LeftRailButtonElem = styled(Button)<{kind?: 'small'}>(({kind}) => ({ const LeftRailButtonElem = styled(Button)<{kind?: 'small'}>(({kind}) => ({
width: kind === 'small' ? 32 : 36, width: kind === 'small' ? 32 : 36,
@@ -205,7 +206,7 @@ export const LeftRail = withTrackingScope(function LeftRail({
<LeftSidebarToggleButton /> <LeftSidebarToggleButton />
<ExportEverythingEverywhereAllAtOnceButton /> <ExportEverythingEverywhereAllAtOnceButton />
<ExtrasMenu /> <ExtrasMenu />
{config.showLogin && <LoginButton />} {config.showLogin && <LoginConnectivityButton />}
</Layout.Container> </Layout.Container>
</Layout.Bottom> </Layout.Bottom>
</Layout.Container> </Layout.Container>
@@ -587,7 +588,7 @@ function SetupDoctorButton() {
); );
} }
function LoginButton() { function LoginConnectivityButton() {
const dispatch = useDispatch(); const dispatch = useDispatch();
const loggedIn = useValue(isLoggedIn()); const loggedIn = useValue(isLoggedIn());
const user = useStore((state) => state.user); const user = useStore((state) => state.user);
@@ -599,6 +600,20 @@ function LoginButton() {
[], [],
); );
const connected = useValue(isConnected());
if (!connected) {
return (
<Tooltip
placement="left"
title="No connection to intern, ensure you are VPN/Lighthouse for plugin updates and other features">
<WarningOutlined
style={{color: theme.warningColor, fontSize: '20px'}}
/>
</Tooltip>
);
}
return loggedIn ? ( return loggedIn ? (
<Popover <Popover
content={ content={