Delete message-input.test.tsx, left-sidebar.test.tsx, agent-stream-view.test.tsx, and agent-panel.test.tsx — all heavy vi.mock + JSDOM + toHaveBeenCalledWith slop. Coverage preserved by extracting the testable derivations: - agent-stream-view-data.ts: isSameAssistantBlockGroup, getAssistantBlockSpacing, resolveInlineWorkingIndicatorItemId — 14 pure unit tests, zero mocks - message-input-state.ts: computeCanStartDictation (dictation readiness gate) — 7 pure unit tests, zero mocks Remaining behaviors confirmed covered by existing E2E: - left-sidebar subscription-while-hidden → sidebar-workspace.spec.ts - agent-panel render isolation + archived agent store hygiene → archive-tab.spec.ts - message-input attachment menu / submit icon → workspace-setup-streaming.spec.ts
15 lines
537 B
TypeScript
15 lines
537 B
TypeScript
import type { DaemonClient } from "@server/client/daemon-client";
|
|
|
|
export function computeCanStartDictation(input: {
|
|
client: DaemonClient | null;
|
|
isReadyForDictation: boolean | undefined;
|
|
disabled: boolean;
|
|
dictationUnavailableMessage: string | null | undefined;
|
|
}): boolean {
|
|
const socketConnected = input.client?.isConnected ?? false;
|
|
const readyForDictation = input.isReadyForDictation ?? socketConnected;
|
|
return (
|
|
socketConnected && readyForDictation && !input.disabled && !input.dictationUnavailableMessage
|
|
);
|
|
}
|