fix: prevent infinite terminal re-initialization loop

- Remove status from TerminalComponent useEffect dependencies to prevent recreation on WebSocket status changes
- Use ref for onTerminalReady callback to avoid parent re-renders triggering terminal recreation
- Wrap MobileTerminalWrapper onTerminalReady with useCallback for stable reference
This commit is contained in:
Fusion
2026-05-24 11:35:32 +02:00
parent b6bda3d692
commit aea1ff95f6
2 changed files with 13 additions and 6 deletions
@@ -39,6 +39,13 @@ export const MobileTerminalWrapper: React.FC<MobileTerminalWrapperProps> = ({
keysAutoHide.toggle();
}, [headerAutoHide, keysAutoHide]);
const handleTerminalReady = useCallback(
(sendData: (data: string) => void, connectionStatus: "connecting" | "connected" | "disconnected" | "error") => {
setTerminalRef({ sendData, connectionStatus });
},
[]
);
const handleSendKey = useCallback(
(data: string) => {
terminalRef?.sendData(data);
@@ -78,9 +85,7 @@ export const MobileTerminalWrapper: React.FC<MobileTerminalWrapperProps> = ({
instanceId={instanceId}
onClose={onClose}
isMobile={true}
onTerminalReady={(sendData, connectionStatus) =>
setTerminalRef({ sendData, connectionStatus })
}
onTerminalReady={handleTerminalReady}
/>
</div>