diff --git a/src/web/components/app.tsx b/src/web/components/app.tsx index 2a1a2c0..a91ac7f 100644 --- a/src/web/components/app.tsx +++ b/src/web/components/app.tsx @@ -24,6 +24,7 @@ const serverConnection = new ServerConnection(window.location.href); export function App() { let [devices, setDevices] = useState([]); + let [serverConnectionReady, setServerConnectionReady] = useState(false); let [autoConnect, setAutoConnect] = useState(() => localStorage?.getItem(StoredItemKeys.SettingsAutoConnectDevices) === "true"); useEffect(() => { @@ -46,7 +47,7 @@ export function App() { Share connected Android devices for debugging on the server - + setServerConnectionReady(true)} /> Connected Devices Device not visible in the list below? @@ -61,7 +62,7 @@ export function App() { )} - {devices.map((device) => ())} + {devices.map((device) => ())} diff --git a/src/web/components/device.tsx b/src/web/components/device.tsx index d6c3019..1c1cc5b 100644 --- a/src/web/components/device.tsx +++ b/src/web/components/device.tsx @@ -74,17 +74,21 @@ function CommunicationSpeed(props: {device: RemoteAdbDevice}) { ) } -export function Device(props: {device: RemoteAdbDevice, serverConnection: ServerConnection, autoConnect: boolean}) { +export function Device(props: {device: RemoteAdbDevice, serverConnection: ServerConnection, autoConnect: boolean, serverConnectionReady: boolean}) { const [error, setError] = useState(undefined); const [isConnecting, setConnecting] = useState(false); - const { device, serverConnection, autoConnect } = props; + const { device, serverConnection, autoConnect, serverConnectionReady } = props; useEffect(() => { + if (!serverConnectionReady) { + return; + } + if (autoConnect && !device.connected && !isConnecting) { onConnect(); } - }, [autoConnect]); + }, [autoConnect, serverConnectionReady]); const onConnect = useCallback(async () => { let connecting = true; diff --git a/src/web/components/status.tsx b/src/web/components/status.tsx index 33b211a..01a6b7b 100644 --- a/src/web/components/status.tsx +++ b/src/web/components/status.tsx @@ -114,7 +114,7 @@ function StatusItem(props: {type: MessageBarType, message: string, muted?: boole ); } -export function Status(props: {serverConnection: ServerConnection}) { +export function Status(props: {serverConnection: ServerConnection, onServerConnectionReady: () => void}) { const [initialized, setInitialized] = useState(false); const [statusError, setStatusError] = useState(undefined); @@ -123,7 +123,7 @@ export function Status(props: {serverConnection: ServerConnection}) { const [showLoginDialog, setShowLoginDialog] = useState(false); - const { serverConnection } = props; + const { serverConnection, onServerConnectionReady } = props; const updateStatus = useCallback(async (status: ServerStatus) => { if (status._error) { @@ -145,13 +145,18 @@ export function Status(props: {serverConnection: ServerConnection}) { // Show login dialog once initialized useEffect(() => { - if (initialized && loginSupported && loginRequired) { - setShowLoginDialog(true); + if (initialized) { + if (loginSupported && loginRequired) { + setShowLoginDialog(true); + } else { + onServerConnectionReady(); + } } }, [initialized]); const onLoginSuccess = useCallback(() => { setLoginRequired(false); + onServerConnectionReady(); serverConnection.getServerStatus(); }, [setLoginRequired, updateStatus]);