MCPcopy Index your code
hub / github.com/winfunc/opcode / reconnectToSession

Function reconnectToSession

src/components/ClaudeCodeSession.tsx:370–429  ·  view source on GitHub ↗
(sessionId: string)

Source from the content-addressed store, hash-verified

368 };
369
370 const reconnectToSession = async (sessionId: string) => {
371 console.log('[ClaudeCodeSession] Reconnecting to session:', sessionId);
372
373 // Prevent duplicate listeners
374 if (isListeningRef.current) {
375 console.log('[ClaudeCodeSession] Already listening to session, skipping reconnect');
376 return;
377 }
378
379 // Clean up previous listeners
380 unlistenRefs.current.forEach(unlisten => unlisten());
381 unlistenRefs.current = [];
382
383 // IMPORTANT: Set the session ID before setting up listeners
384 setClaudeSessionId(sessionId);
385
386 // Mark as listening
387 isListeningRef.current = true;
388
389 // Set up session-specific listeners
390 const outputUnlisten = await listen<string>(`claude-output:${sessionId}`, async (event) => {
391 try {
392 console.log('[ClaudeCodeSession] Received claude-output on reconnect:', event.payload);
393
394 if (!isMountedRef.current) return;
395
396 // Store raw JSONL
397 setRawJsonlOutput(prev => [...prev, event.payload]);
398
399 // Parse and display
400 const message = JSON.parse(event.payload) as ClaudeStreamMessage;
401 setMessages(prev => [...prev, message]);
402 } catch (err) {
403 console.error("Failed to parse message:", err, event.payload);
404 }
405 });
406
407 const errorUnlisten = await listen<string>(`claude-error:${sessionId}`, (event) => {
408 console.error("Claude error:", event.payload);
409 if (isMountedRef.current) {
410 setError(event.payload);
411 }
412 });
413
414 const completeUnlisten = await listen<boolean>(`claude-complete:${sessionId}`, async (event) => {
415 console.log('[ClaudeCodeSession] Received claude-complete on reconnect:', event.payload);
416 if (isMountedRef.current) {
417 setIsLoading(false);
418 hasActiveSessionRef.current = false;
419 }
420 });
421
422 unlistenRefs.current = [outputUnlisten, errorUnlisten, completeUnlisten];
423
424 // Mark as loading to show the session is active
425 if (isMountedRef.current) {
426 setIsLoading(true);
427 hasActiveSessionRef.current = true;

Callers 1

checkForActiveSessionFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected