diff --git a/src/components/ClaudeCodeSession.tsx b/src/components/ClaudeCodeSession.tsx index f0f164f21..c0be78d4b 100644 --- a/src/components/ClaudeCodeSession.tsx +++ b/src/components/ClaudeCodeSession.tsx @@ -15,21 +15,16 @@ import { Label } from "@/components/ui/label"; import { Popover } from "@/components/ui/popover"; import { api, type Session } from "@/lib/api"; import { cn } from "@/lib/utils"; +import { listen as tauriListen } from "@tauri-apps/api/event"; -// Conditional imports for Tauri APIs -let tauriListen: any; type UnlistenFn = () => void; -try { - if (typeof window !== 'undefined' && window.__TAURI__) { - tauriListen = require("@tauri-apps/api/event").listen; +// Web-compatible replacements +const listen = (eventName: string, callback: (event: any) => void) => { + if (typeof window !== 'undefined' && '__TAURI__' in window) { + return tauriListen(eventName, callback); } -} catch (e) { - console.log('[ClaudeCodeSession] Tauri APIs not available, using web mode'); -} -// Web-compatible replacements -const listen = tauriListen || ((eventName: string, callback: (event: any) => void) => { console.log('[ClaudeCodeSession] Setting up DOM event listener for:', eventName); // In web mode, listen for DOM events @@ -46,7 +41,7 @@ const listen = tauriListen || ((eventName: string, callback: (event: any) => voi console.log('[ClaudeCodeSession] Removing DOM event listener for:', eventName); window.removeEventListener(eventName, domEventHandler); }); -}); +}; import { StreamMessage } from "./StreamMessage"; import { FloatingPromptInput, type FloatingPromptInputRef } from "./FloatingPromptInput"; import { ErrorBoundary } from "./ErrorBoundary"; diff --git a/src/components/claude-code-session/useClaudeMessages.ts b/src/components/claude-code-session/useClaudeMessages.ts index 5a2e819e6..d470d956d 100644 --- a/src/components/claude-code-session/useClaudeMessages.ts +++ b/src/components/claude-code-session/useClaudeMessages.ts @@ -2,16 +2,7 @@ import { useState, useCallback, useRef, useEffect } from 'react'; import { api } from '@/lib/api'; import { getEnvironmentInfo } from '@/lib/apiAdapter'; import type { ClaudeStreamMessage } from '../AgentExecution'; - -// Conditional import for Tauri -let tauriListen: any; -try { - if (typeof window !== 'undefined' && window.__TAURI__) { - tauriListen = require('@tauri-apps/api/event').listen; - } -} catch (e) { - console.log('[useClaudeMessages] Tauri event API not available, using web mode'); -} +import { listen as tauriListen } from '@tauri-apps/api/event'; interface UseClaudeMessagesOptions { onSessionInfo?: (info: { sessionId: string; projectId: string }) => void; @@ -135,7 +126,7 @@ export function useClaudeMessages(options: UseClaudeMessagesOptions = {}) { const envInfo = getEnvironmentInfo(); console.log('[TRACE] Environment info:', envInfo); - if (envInfo.isTauri && tauriListen) { + if (envInfo.isTauri) { // Tauri mode - use Tauri's event system console.log('[TRACE] Setting up Tauri event listener for claude-stream'); eventListenerRef.current = await tauriListen("claude-stream", (event: any) => { @@ -202,4 +193,4 @@ export function useClaudeMessages(options: UseClaudeMessagesOptions = {}) { loadMessages, handleMessage }; -} \ No newline at end of file +}