MCPcopy
hub / github.com/codeaashu/claude-code / handleStateChange

Function handleStateChange

src/hooks/useReplBridge.tsx:224–365  ·  view source on GitHub ↗
(state: BridgeState, detail_0?: string)

Source from the content-addressed store, hash-verified

222
223 // State change callback — maps bridge lifecycle events to AppState.
224 function handleStateChange(state: BridgeState, detail_0?: string): void {
225 if (cancelled) return;
226 if (outboundOnly) {
227 logForDebugging(`[bridge:repl] Mirror state=${state}${detail_0 ? ` detail=${detail_0}` : ''}`);
228 // Sync replBridgeConnected so the forwarding effect starts/stops
229 // writing as the transport comes up or dies.
230 if (state === 'failed') {
231 setAppState(prev_3 => {
232 if (!prev_3.replBridgeConnected) return prev_3;
233 return {
234 ...prev_3,
235 replBridgeConnected: false
236 };
237 });
238 } else if (state === 'ready' || state === 'connected') {
239 setAppState(prev_4 => {
240 if (prev_4.replBridgeConnected) return prev_4;
241 return {
242 ...prev_4,
243 replBridgeConnected: true
244 };
245 });
246 }
247 return;
248 }
249 const handle = handleRef.current;
250 switch (state) {
251 case 'ready':
252 setAppState(prev_9 => {
253 const connectUrl = handle && handle.environmentId !== '' ? buildBridgeConnectUrl(handle.environmentId, handle.sessionIngressUrl) : prev_9.replBridgeConnectUrl;
254 const sessionUrl = handle ? getRemoteSessionUrl(handle.bridgeSessionId, handle.sessionIngressUrl) : prev_9.replBridgeSessionUrl;
255 const envId = handle?.environmentId;
256 const sessionId = handle?.bridgeSessionId;
257 if (prev_9.replBridgeConnected && !prev_9.replBridgeSessionActive && !prev_9.replBridgeReconnecting && prev_9.replBridgeConnectUrl === connectUrl && prev_9.replBridgeSessionUrl === sessionUrl && prev_9.replBridgeEnvironmentId === envId && prev_9.replBridgeSessionId === sessionId) {
258 return prev_9;
259 }
260 return {
261 ...prev_9,
262 replBridgeConnected: true,
263 replBridgeSessionActive: false,
264 replBridgeReconnecting: false,
265 replBridgeConnectUrl: connectUrl,
266 replBridgeSessionUrl: sessionUrl,
267 replBridgeEnvironmentId: envId,
268 replBridgeSessionId: sessionId,
269 replBridgeError: undefined
270 };
271 });
272 break;
273 case 'connected':
274 {
275 setAppState(prev_8 => {
276 if (prev_8.replBridgeSessionActive) return prev_8;
277 return {
278 ...prev_8,
279 replBridgeConnected: true,
280 replBridgeSessionActive: true,
281 replBridgeReconnecting: false,

Callers

nothing calls this directly

Calls 8

logForDebuggingFunction · 0.85
buildBridgeConnectUrlFunction · 0.85
getRemoteSessionUrlFunction · 0.85
getCwdFunction · 0.85
buildSystemInitMessageFunction · 0.85
notifyBridgeFailedFunction · 0.85
errorMessageFunction · 0.50

Tested by

no test coverage detected