From e7696925e70c3cceee224924bc9a4c0a4cf15bb1 Mon Sep 17 00:00:00 2001 From: BhagwanSingh Date: Fri, 21 Nov 2025 12:18:33 +0530 Subject: [PATCH] s --- src/electron/utils/utilityFunctions.ts | 1 - src/ui/layout/DashboardLayout.tsx | 82 ++++++++++++++++++++++++++ 2 files changed, 82 insertions(+), 1 deletion(-) diff --git a/src/electron/utils/utilityFunctions.ts b/src/electron/utils/utilityFunctions.ts index ce15b8f..c56e5a2 100644 --- a/src/electron/utils/utilityFunctions.ts +++ b/src/electron/utils/utilityFunctions.ts @@ -61,7 +61,6 @@ export const handleLogin = async (credentials: { email: string, password: string // Call your login API console.log("🟡 login Request received", credentials); - console.log("Doom"); console.log("app.getAppPath()", app.getAppPath()); console.log("UIPATH", getUIPath()); console.log("Doom 1"); diff --git a/src/ui/layout/DashboardLayout.tsx b/src/ui/layout/DashboardLayout.tsx index 3978ebb..26b6c27 100644 --- a/src/ui/layout/DashboardLayout.tsx +++ b/src/ui/layout/DashboardLayout.tsx @@ -134,6 +134,7 @@ const DashboardLayout = () => { console.log(" Current elapsed time:", elapsedTime); setLoadingStop(true); + handleSocketDisconnect(); // STEP 1: Send final PATCH with last active window data // This ensures the last window activity is recorded before logout @@ -345,6 +346,8 @@ const DashboardLayout = () => { }) ); + handleSocketConnect() + setActiveProjectLogId(res?.data?.logId); console.log(" Tracking started. Log ID:", res?.data?.logId); @@ -396,6 +399,7 @@ const DashboardLayout = () => { // Trigger auto-stop handleLimitExceeded(); + handleSocketDisconnect(); } }, 1000); @@ -438,6 +442,84 @@ const DashboardLayout = () => { } }; + const handleSocketConnect = async () => { + + const token = await window.electron.getToken("ACCESS_TOKEN"); + + if (socketRef.current) { + console.warn("Already connected"); + return; + } + if (!selectedProject?.projectId) return + + console.log(selectedProject?.projectId, "SelectedProject ID") + socketRef.current = io("https://quality-friendly-goldfish.ngrok-free.app", { + transports: ["websocket"], + secure: true, + rejectUnauthorized: false, + reconnection: true, + withCredentials: true, + forceNew: true, + extraHeaders: { + "Access-Control-Allow-Origin": "*" + }, + auth: { + token: token, + projectId: selectedProject?.projectId, + userType: "va" + }, + }); + + socketRef.current.on("connect", () => { + console.log("🟢 Connected:", socketRef.current?.id); + setIsConnected(true); + + // Start sending every 5 seconds + intervalRef.current = setInterval(async () => { + const apps = await window.electron.getRunningApps() + socketRef.current?.emit("getVisibleApps", { token: await token, apps }); + }, 5000); + }); + + socketRef.current.on("appToCapture", async ({ appTitle }) => { + console.log("📸 Capture requested for:", appTitle); + + const base64String = await window.electron.captureAppScreenShot(appTitle); + if (base64String && socketRef.current) { + socketRef.current.emit("sendImage", { + token: token, + image: base64String, + title: appTitle, + projectId: selectedProject?.projectId, + }); + } + }); + + socketRef.current.on("disconnect", () => { + console.log("🔴 Disconnected"); + setIsConnected(false); + if (intervalRef.current) { + clearInterval(intervalRef.current); + intervalRef.current = null; + } + }); + }; + + const handleSocketDisconnect = () => { + if (intervalRef.current) { + clearInterval(intervalRef.current); + intervalRef.current = null; + } + + if (socketRef.current) { + socketRef.current.disconnect(); + socketRef.current = null; + setIsConnected(false); + console.log("🔌 Disconnected manually"); + } + }; + + const trackingState: TrackingState = { selectedProject, isTracking,