import React, { useState, useEffect, useRef } from "react"; import theme from '../theme.jsx'; import ReactGA from 'react-ga4'; import { useNavigate, Link } from 'react-router-dom'; import { Search as SearchIcon, CloudQueue as CloudQueueIcon, Code as CodeIcon, Close as CloseIcon, Folder as FolderIcon, LibraryBooks as LibraryBooksIcon } from '@mui/icons-material'; import aa from 'search-insights' import DeleteIcon from '@mui/icons-material/Delete'; import ShowChartIcon from '@mui/icons-material/ShowChart'; import ExploreIcon from '@mui/icons-material/Explore'; import LightbulbIcon from "@mui/icons-material/Lightbulb"; import NewReleasesIcon from "@mui/icons-material/NewReleases"; import ExtensionIcon from "@mui/icons-material/Extension"; import EmailIcon from "@mui/icons-material/Email"; import FingerprintIcon from '@mui/icons-material/Fingerprint'; import AppSearch from "../components/Appsearch.jsx"; import { toast } from 'react-toastify'; import { Zoom, Grid, Paper, TextField, Collapse, IconButton, Avatar, ButtonBase, InputAdornment, Typography, Button, Tooltip, List, ListItem, ListItemAvatar, ListItemText, } from '@mui/material'; const AppSelection = props => { const { userdata, globalUrl, appFramework, setActiveStep, defaultSearch, setDefaultSearch, checkLogin, } = props; const [discoveryData, setDiscoveryData] = React.useState({}) const [selectionOpen, setSelectionOpen] = React.useState(false) const [newSelectedApp, setNewSelectedApp] = React.useState({}) const [finishedApps, setFinishedApps] = React.useState([]) const [moreButton, setMoreButton] = useState(false); const [mouseHoverIndex, setMouseHoverIndex] = useState(-1) const ref = useRef() let navigate = useNavigate(); const isCloud = window.location.host === "localhost:3002" || window.location.host === "shuffler.io"; const setFrameworkItem = (data) => { console.log("Setting framework item: ", data, isCloud) // if (!isCloud) { // activateApp(data.id) // } fetch(globalUrl + "/api/v1/apps/frameworkConfiguration", { method: "POST", headers: { "Content-Type": "application/json", Accept: "application/json", }, body: JSON.stringify(data), credentials: "include", }) .then((response) => { if (response.status !== 200) { console.log("Status not 200 for framework!"); } if (checkLogin !== undefined) { checkLogin() } return response.json(); }) .then((responseJson) => { if (responseJson.success === false) { if (responseJson.reason !== undefined) { toast("Failed updating: " + responseJson.reason) } else { toast("Failed to update framework for your org.") } } //setFrameworkLoaded(true) //setFrameworkData(responseJson) }) .catch((error) => { if (checkLogin !== undefined) { checkLogin() } toast(error.toString()); //setFrameworkLoaded(true) }) } const onNodeSelect = (label) => { // if (setDiscoveryWrapper !== undefined) { // setDiscoveryWrapper({ id: label }); // } if (isCloud) { ReactGA.event({ category: "welcome", action: `click_${label}`, label: "", }); } setDiscoveryData(label) setSelectionOpen(true) setNewSelectedApp({}) setDefaultSearch(label.charAt(0).toUpperCase() + (label.substring(1)).toLowerCase()) }; useEffect(() => { if (newSelectedApp.objectID === undefined || newSelectedApp.objectID === undefined || newSelectedApp.objectID.length === 0) { return } const submitNewApp = { description: newSelectedApp.description, id: newSelectedApp.objectID, large_image: newSelectedApp.image_url, name: newSelectedApp.name, type: discoveryData } if (discoveryData === "CASES") { appFramework.cases = submitNewApp } else if (discoveryData === "SIEM") { appFramework.siem = submitNewApp } else if (discoveryData === "ERADICATION") { appFramework.eradication = submitNewApp } else if (discoveryData === "INTEL") { appFramework.intel = submitNewApp } else if (discoveryData === "EMAIL") { appFramework.email = submitNewApp } else if (discoveryData === "NETWORK") { appFramework.network = submitNewApp } else if (discoveryData === "ASSETS") { appFramework.assets = submitNewApp } else if (discoveryData === "IAM") { appFramework.iam = submitNewApp } setFrameworkItem(submitNewApp); setSelectionOpen(false); console.log("Selected app changed (effect)"); }, [newSelectedApp]); const sizing = 510; const buttonWidth = 450; const buttonMargin = 10; const bottomButtonStyle = { borderRadius: 200, marginTop: moreButton ? 44 : "", height: 51, width: 464, fontSize: 16, // background: "linear-gradient(89.83deg, #FF8444 0.13%, #F2643B 99.84%)", background: "linear-gradient(90deg, #F86744 0%, #F34475 100%)", padding: "16px 24px", // top: 20, // margin: "auto", itemAlign: "center", // marginLeft: "65px", }; const buttonStyle = { flex: 1, width: 224, padding: 25, margin: buttonMargin, color: "var(--White-text, #F1F1F1)", fontWeight: 400, fontSize: 17, background: "rgba(33, 33, 33, 1)", textTransform: 'capitalize', border: mouseHoverIndex ? "1px solid rgba(33, 33, 33, 1)" : "1px solid #f85a3e", borderRadius: 8, marginRight: 8, }; return (
{selectionOpen ? (
{discoveryData}
{ setSelectionOpen(false) }} > { e.preventDefault(); setSelectionOpen(false) setDefaultSearch("") const submitDeletedApp = { "description": "", "id": "remove", "name": "", "type": discoveryData } setFrameworkItem(submitDeletedApp) setNewSelectedApp({}) setTimeout(() => { setDiscoveryData({}) setFrameworkItem(submitDeletedApp) setNewSelectedApp({}) }, 1000) }} >
) : null} Find your apps Select the apps you work with and we will connect the for you. {/*Find your integrations!*/}
{ setMouseHoverIndex() }} onMouseOut={() => { setMouseHoverIndex(-1) }} >
{moreButton ? (
{ setMouseHoverIndex() }} onMouseOut={() => { setMouseHoverIndex(-1) }} >
) :
} {/* What do you want to automate first ? { onNodeSelect("Email") }} />} label="Email" labelPlacement="Email" /> { onNodeSelect("SIEM") }} />} label="SIEM" labelPlacement="SIEM" /> { onNodeSelect("EDR") }} />} label="EDR" labelPlacement="EDR" /> */}
) } export default AppSelection;