Files
paseo/packages/app/src/utils/terminal-renderer-readiness.ts
T

37 lines
1006 B
TypeScript

export interface TerminalRendererReadyChange {
streamKey: string;
isReady: boolean;
}
export function applyTerminalRendererReadyChange(
currentReadyStreamKey: string | null,
change: TerminalRendererReadyChange,
): string | null {
if (change.isReady) {
return change.streamKey;
}
return currentReadyStreamKey === change.streamKey ? null : currentReadyStreamKey;
}
export function shouldReplayTerminalSnapshotForRenderer(input: {
change: TerminalRendererReadyChange;
terminalStreamKey: string;
}): boolean {
return input.change.isReady && input.change.streamKey === input.terminalStreamKey;
}
export function shouldShowTerminalLoadingOverlay(input: {
isWorkspaceFocused: boolean;
hasStreamError: boolean;
isAttaching: boolean;
rendererReadyStreamKey: string | null;
terminalStreamKey: string;
}): boolean {
return (
input.isWorkspaceFocused &&
!input.hasStreamError &&
(input.isAttaching || input.rendererReadyStreamKey !== input.terminalStreamKey)
);
}