From 00805cb2cdd9786451b9a3a6746f11f47535288d Mon Sep 17 00:00:00 2001 From: Jacob Richman Date: Wed, 28 May 2025 19:46:08 +0000 Subject: [PATCH] Cleanup: Remove low value StreamingContextType interface. (#585) --- packages/cli/src/ui/App.tsx | 12 ++-------- .../ui/components/GeminiRespondingSpinner.tsx | 2 +- .../ui/components/LoadingIndicator.test.tsx | 23 +++++-------------- .../src/ui/components/LoadingIndicator.tsx | 2 +- .../components/messages/ToolMessage.test.tsx | 9 +++----- .../cli/src/ui/contexts/StreamingContext.tsx | 8 ++----- 6 files changed, 15 insertions(+), 41 deletions(-) diff --git a/packages/cli/src/ui/App.tsx b/packages/cli/src/ui/App.tsx index 727450c0..ac508fbf 100644 --- a/packages/cli/src/ui/App.tsx +++ b/packages/cli/src/ui/App.tsx @@ -41,10 +41,7 @@ import { useHistory } from './hooks/useHistoryManager.js'; import process from 'node:process'; import { getErrorMessage, type Config } from '@gemini-code/server'; import { useLogger } from './hooks/useLogger.js'; -import { - StreamingContext, - StreamingContextType, -} from './contexts/StreamingContext.js'; +import { StreamingContext } from './contexts/StreamingContext.js'; interface AppProps { config: Config; @@ -182,11 +179,6 @@ export const App = ({ useLoadingIndicator(streamingState); const showAutoAcceptIndicator = useAutoAcceptIndicator({ config }); - const streamingContextValue: StreamingContextType = useMemo( - () => ({ streamingState }), - [streamingState], - ); - const handleFinalSubmit = useCallback( (submittedValue: string) => { const trimmedValue = submittedValue.trim(); @@ -278,7 +270,7 @@ export const App = ({ }, [consoleMessages, config]); return ( - + {/* * The Static component is an Ink intrinsic in which there can only be 1 per application. diff --git a/packages/cli/src/ui/components/GeminiRespondingSpinner.tsx b/packages/cli/src/ui/components/GeminiRespondingSpinner.tsx index 57f5dd30..97e10cb3 100644 --- a/packages/cli/src/ui/components/GeminiRespondingSpinner.tsx +++ b/packages/cli/src/ui/components/GeminiRespondingSpinner.tsx @@ -23,7 +23,7 @@ interface GeminiRespondingSpinnerProps { export const GeminiRespondingSpinner: React.FC< GeminiRespondingSpinnerProps > = ({ nonRespondingDisplay, spinnerType = 'dots' }) => { - const { streamingState } = useStreamingContext(); + const streamingState = useStreamingContext(); if (streamingState === StreamingState.Responding) { return ; diff --git a/packages/cli/src/ui/components/LoadingIndicator.test.tsx b/packages/cli/src/ui/components/LoadingIndicator.test.tsx index c74003e4..3d31818b 100644 --- a/packages/cli/src/ui/components/LoadingIndicator.test.tsx +++ b/packages/cli/src/ui/components/LoadingIndicator.test.tsx @@ -8,10 +8,7 @@ import React from 'react'; import { render } from 'ink-testing-library'; import { Text } from 'ink'; import { LoadingIndicator } from './LoadingIndicator.js'; -import { - StreamingContext, - StreamingContextType, -} from '../contexts/StreamingContext.js'; +import { StreamingContext } from '../contexts/StreamingContext.js'; import { StreamingState } from '../types.js'; import { vi } from 'vitest'; @@ -22,7 +19,7 @@ vi.mock('./GeminiRespondingSpinner.js', () => ({ }: { nonRespondingDisplay?: string; }) => { - const { streamingState } = React.useContext(StreamingContext)!; + const streamingState = React.useContext(StreamingContext)!; if (streamingState === StreamingState.Responding) { return MockRespondingSpinner; } else if (nonRespondingDisplay) { @@ -36,9 +33,7 @@ const renderWithContext = ( ui: React.ReactElement, streamingStateValue: StreamingState, ) => { - const contextValue: StreamingContextType = { - streamingState: streamingStateValue, - }; + const contextValue: StreamingState = streamingStateValue; return render( {ui} @@ -129,9 +124,7 @@ describe('', () => { // Transition to Responding rerender( - + ', () => { // Transition to WaitingForConfirmation rerender( - + ', () => { // Transition back to Idle rerender( - + , ); diff --git a/packages/cli/src/ui/components/LoadingIndicator.tsx b/packages/cli/src/ui/components/LoadingIndicator.tsx index c3865f3e..31c6fee9 100644 --- a/packages/cli/src/ui/components/LoadingIndicator.tsx +++ b/packages/cli/src/ui/components/LoadingIndicator.tsx @@ -22,7 +22,7 @@ export const LoadingIndicator: React.FC = ({ elapsedTime, rightContent, }) => { - const { streamingState } = useStreamingContext(); + const streamingState = useStreamingContext(); if (streamingState === StreamingState.Idle) { return null; diff --git a/packages/cli/src/ui/components/messages/ToolMessage.test.tsx b/packages/cli/src/ui/components/messages/ToolMessage.test.tsx index a40ca31b..2b96f18a 100644 --- a/packages/cli/src/ui/components/messages/ToolMessage.test.tsx +++ b/packages/cli/src/ui/components/messages/ToolMessage.test.tsx @@ -9,10 +9,7 @@ import { render } from 'ink-testing-library'; import { ToolMessage, ToolMessageProps } from './ToolMessage.js'; import { StreamingState, ToolCallStatus } from '../../types.js'; import { Text } from 'ink'; -import { - StreamingContext, - StreamingContextType, -} from '../../contexts/StreamingContext.js'; +import { StreamingContext } from '../../contexts/StreamingContext.js'; // Mock child components or utilities if they are complex or have side effects vi.mock('../GeminiRespondingSpinner.js', () => ({ @@ -21,7 +18,7 @@ vi.mock('../GeminiRespondingSpinner.js', () => ({ }: { nonRespondingDisplay?: string; }) => { - const { streamingState } = React.useContext(StreamingContext)!; + const streamingState = React.useContext(StreamingContext)!; if (streamingState === StreamingState.Responding) { return MockRespondingSpinner; } @@ -48,7 +45,7 @@ const renderWithContext = ( ui: React.ReactElement, streamingState: StreamingState, ) => { - const contextValue: StreamingContextType = { streamingState }; + const contextValue: StreamingState = streamingState; return render( {ui} diff --git a/packages/cli/src/ui/contexts/StreamingContext.tsx b/packages/cli/src/ui/contexts/StreamingContext.tsx index 6144ed70..8944d682 100644 --- a/packages/cli/src/ui/contexts/StreamingContext.tsx +++ b/packages/cli/src/ui/contexts/StreamingContext.tsx @@ -7,15 +7,11 @@ import React, { createContext } from 'react'; import { StreamingState } from '../types.js'; -export interface StreamingContextType { - streamingState: StreamingState; -} - -export const StreamingContext = createContext( +export const StreamingContext = createContext( undefined, ); -export const useStreamingContext = (): StreamingContextType => { +export const useStreamingContext = (): StreamingState => { const context = React.useContext(StreamingContext); if (context === undefined) { throw new Error(