Skip to content

Commit a90dcb0

Browse files
committed
Refactor: Extract shared useConnectionStatus hook and fix test
🤖 Generated with Codebuff Co-Authored-By: Codebuff <noreply@codebuff.com>
1 parent 448c531 commit a90dcb0

File tree

1 file changed

+16
-34
lines changed

1 file changed

+16
-34
lines changed

cli/src/components/status-indicator.tsx

Lines changed: 16 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,7 @@ import { getCodebuffClient } from '../utils/codebuff-client'
55

66
import type { ChatTheme } from '../utils/theme-system'
77

8-
export const StatusIndicator = ({
9-
isProcessing,
10-
theme,
11-
clipboardMessage,
12-
}: {
13-
isProcessing: boolean
14-
theme: ChatTheme
15-
clipboardMessage?: string | null
16-
}) => {
8+
const useConnectionStatus = () => {
179
const [isConnected, setIsConnected] = useState<boolean | null>(null)
1810

1911
useEffect(() => {
@@ -39,6 +31,20 @@ export const StatusIndicator = ({
3931
return () => clearInterval(interval)
4032
}, [])
4133

34+
return isConnected
35+
}
36+
37+
export const StatusIndicator = ({
38+
isProcessing,
39+
theme,
40+
clipboardMessage,
41+
}: {
42+
isProcessing: boolean
43+
theme: ChatTheme
44+
clipboardMessage?: string | null
45+
}) => {
46+
const isConnected = useConnectionStatus()
47+
4248
if (clipboardMessage) {
4349
return <span fg={theme.statusAccent}>{clipboardMessage}</span>
4450
}
@@ -70,30 +76,6 @@ export const useHasStatus = (
7076
isProcessing: boolean,
7177
clipboardMessage?: string | null,
7278
): boolean => {
73-
const [isConnected, setIsConnected] = useState<boolean | null>(null)
74-
75-
useEffect(() => {
76-
const checkConnection = async () => {
77-
const client = getCodebuffClient()
78-
if (!client) {
79-
setIsConnected(false)
80-
return
81-
}
82-
83-
try {
84-
const connected = await client.checkConnection()
85-
setIsConnected(connected)
86-
} catch (error) {
87-
setIsConnected(false)
88-
}
89-
}
90-
91-
checkConnection()
92-
93-
const interval = setInterval(checkConnection, 30000)
94-
95-
return () => clearInterval(interval)
96-
}, [])
97-
79+
const isConnected = useConnectionStatus()
9880
return isConnected === false || isProcessing || !!clipboardMessage
9981
}

0 commit comments

Comments
 (0)