import React, { useEffect, useState } from "react"; import { RecordingsTable } from "./RecordingsTable"; import { Grid } from "@mui/material"; import { RunSettings, RunSettingsModal } from "../run/RunSettings"; import { ScheduleSettings, ScheduleSettingsModal } from "./ScheduleSettings"; import { IntegrationSettingsModal } from "../integration/IntegrationSettings"; import { RobotSettingsModal } from "./RobotSettings"; import { RobotEditModal } from "./RobotEdit"; import { RobotDuplicationModal } from "./RobotDuplicate"; import { useNavigate, useLocation, useParams } from "react-router-dom"; import { useGlobalInfoStore } from "../../context/globalInfo"; import { useTranslation } from "react-i18next"; interface RecordingsProps { handleEditRecording: (id: string, fileName: string) => void; handleRunRecording: (settings: RunSettings) => void; handleScheduleRecording: (settings: ScheduleSettings) => void; setRecordingInfo: (id: string, name: string) => void; } export const Recordings = ({ handleEditRecording, handleRunRecording, setRecordingInfo, handleScheduleRecording, }: RecordingsProps) => { const navigate = useNavigate(); const location = useLocation(); const { selectedRecordingId } = useParams(); const [params, setParams] = useState([]); const { notify } = useGlobalInfoStore(); const { t } = useTranslation(); const handleNavigate = (path: string, id: string, name: string, params: string[]) => { setParams(params); setRecordingInfo(id, name); navigate(path); }; const handleClose = () => { setParams([]); setRecordingInfo("", ""); navigate("/robots"); // Navigate back to the main robots page }; useEffect(() => { // Helper function to get and clear a cookie const getAndClearCookie = (name: string) => { const value = document.cookie .split('; ') .find(row => row.startsWith(`${name}=`)) ?.split('=')[1]; if (value) { document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/`; } return value; }; const authStatus = getAndClearCookie('robot_auth_status'); const airtableAuthStatus = getAndClearCookie('airtable_auth_status'); const robotId = getAndClearCookie('robot_auth_robotId'); if (airtableAuthStatus === 'success' && robotId) { console.log("Airtable Auth Status:", airtableAuthStatus); notify(airtableAuthStatus, t("recordingtable.notifications.auth_success")); handleNavigate(`/robots/${robotId}/integrate/airtable`, robotId, "", []); } else if (authStatus === 'success' && robotId) { console.log("Google Auth Status:", authStatus); notify(authStatus, t("recordingtable.notifications.auth_success")); handleNavigate(`/robots/${robotId}/integrate/google`, robotId, "", []); } }, []); // Determine which modal to open based on the current route const getCurrentModal = () => { const currentPath = location.pathname; if (currentPath.endsWith("/run")) { return ( ); } else if (currentPath.endsWith("/schedule")) { return ( ); } else if (currentPath.endsWith("/integrate/google")) { return ( {}} preSelectedIntegrationType="googleSheets" /> ); } else if (currentPath.endsWith("/integrate/airtable")) { return ( {}} preSelectedIntegrationType="airtable" /> ); } else if (currentPath.endsWith("/integrate")) { return ( {}} /> ); } else if (currentPath.endsWith("/settings")) { return ( {}} /> ); } else if (currentPath.endsWith("/edit")) { return ( {}} /> ); } else if (currentPath.endsWith("/duplicate")) { return ( {}} /> ); } return null; }; return ( {getCurrentModal()} handleNavigate(`/robots/${id}/run`, id, name, params) } handleScheduleRecording={(id, name, params) => handleNavigate(`/robots/${id}/schedule`, id, name, params) } handleIntegrateRecording={(id, name, params) => handleNavigate(`/robots/${id}/integrate`, id, name, params) } handleSettingsRecording={(id, name, params) => handleNavigate(`/robots/${id}/settings`, id, name, params) } handleEditRobot={(id, name, params) => handleNavigate(`/robots/${id}/edit`, id, name, params) } handleDuplicateRobot={(id, name, params) => handleNavigate(`/robots/${id}/duplicate`, id, name, params) } /> ); };