Synced 2.0 updates
This commit is contained in:
@@ -7,7 +7,9 @@ import {
|
||||
Add as AddIcon,
|
||||
BorderColor,
|
||||
Close as CloseIcon,
|
||||
ConstructionOutlined,
|
||||
ConstructionOutlined as ConstructionOutlinedIcon,
|
||||
Toc as TocIcon,
|
||||
Settings as SettingsIcon
|
||||
} from "@mui/icons-material";
|
||||
import SearchBox from "./SearchData.jsx";
|
||||
import {
|
||||
@@ -29,9 +31,6 @@ import {
|
||||
Collapse,
|
||||
} from "@mui/material";
|
||||
import theme from "../theme.jsx";
|
||||
import {
|
||||
Settings as SettingsIcon
|
||||
} from "@mui/icons-material";
|
||||
import RecentWorkflow from "../components/RecentWorkflow.jsx";
|
||||
|
||||
import { useNavigate } from "react-router";
|
||||
@@ -143,8 +142,6 @@ useEffect(() => {
|
||||
>
|
||||
<Box
|
||||
sx={{
|
||||
maxHeight: 250,
|
||||
overflowY: "auto",
|
||||
scrollbarWidth: "thin",
|
||||
scrollbarColor: "#494949 transparent",
|
||||
"& .MuiAutocomplete-listbox": {
|
||||
@@ -238,7 +235,7 @@ useEffect(() => {
|
||||
setOpenautomateTab(true);
|
||||
setOpenSecurityTab(false);
|
||||
setCurrentOpenTab("workflows");
|
||||
} else if ((lastTabOpenByUser === "apps" && currentPath.includes("/search")) || currentPath.includes("/search")) {
|
||||
} else if ((lastTabOpenByUser === "apps" && currentPath.includes("/apps")) || currentPath.includes("/apps")) {
|
||||
setOpenautomateTab(true);
|
||||
setOpenSecurityTab(false);
|
||||
setCurrentOpenTab("apps");
|
||||
@@ -500,16 +497,6 @@ useEffect(() => {
|
||||
})
|
||||
</MenuItem>
|
||||
</Link>
|
||||
<Link to="/workflows" style={hrefStyle}>
|
||||
<MenuItem
|
||||
onClick={(event) => {
|
||||
handleClose();
|
||||
}}
|
||||
style={{fontSize: 18}}
|
||||
>
|
||||
<LightbulbIcon style={{ marginRight: 5 }} /> Use Cases
|
||||
</MenuItem>
|
||||
</Link>
|
||||
|
||||
<Divider style={{ marginTop: 10, marginBottom: 10, }} />
|
||||
|
||||
@@ -537,7 +524,7 @@ useEffect(() => {
|
||||
<Divider style={{ marginBottom: 10, }} />
|
||||
|
||||
<Typography color="textSecondary" align="center" style={{ marginTop: 5, marginBottom: 5, fontSize: 18 }}>
|
||||
Version: 2.0.0-rc3
|
||||
Version: 2.0.0-rc4
|
||||
</Typography>
|
||||
</Menu>
|
||||
</span>
|
||||
@@ -704,16 +691,48 @@ useEffect(() => {
|
||||
|
||||
const CheckOrgStates = useCallback(() => {
|
||||
setOrgOptions(
|
||||
userdata?.orgs?.map((org) => ({
|
||||
id: org.id,
|
||||
name: org.name,
|
||||
image: org.image,
|
||||
region_url: getRegionTag(org.region_url),
|
||||
})) || []
|
||||
userdata?.orgs?.map((org) => {
|
||||
let skipOrg = false;
|
||||
|
||||
if (
|
||||
org.creator_org !== undefined &&
|
||||
org.creator_org !== null &&
|
||||
org.creator_org.length > 0
|
||||
) {
|
||||
// Finds the parent org
|
||||
for (let key in userdata.child_orgs) {
|
||||
if (userdata.child_orgs[key].id === org.creator_org) {
|
||||
skipOrg = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (skipOrg) {
|
||||
return null; // Skip this org
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
id: org.id,
|
||||
name: org.name,
|
||||
image: org.image,
|
||||
region_url: getRegionTag(org.region_url),
|
||||
margin_left:
|
||||
org.creator_org !== undefined &&
|
||||
org.creator_org !== null &&
|
||||
org.creator_org.length > 0
|
||||
? org.id === userdata.active_org.id
|
||||
? 0
|
||||
: 20
|
||||
: 0,
|
||||
};
|
||||
}) || []
|
||||
);
|
||||
|
||||
setActiveOrgName(userdata?.active_org?.name || "Select Organization");
|
||||
setSelectedOrg(userdata?.active_org?.name || "Select Organization");
|
||||
},[orgOptions, activeOrgName, selectedOrg]);
|
||||
}, [userdata]);
|
||||
|
||||
|
||||
useEffect(() => {
|
||||
if (typeof userdata?.id === "string" && userdata?.id?.length > 0) {
|
||||
@@ -870,7 +889,7 @@ useEffect(() => {
|
||||
</Button>
|
||||
</Box>
|
||||
</Box>
|
||||
<Box sx={{ display: "flex", flexDirection: "column", width:"100%", height: "100%", overflowY: "auto", overflowX: "hidden",transition: 'display 0.3s ease',paddingTop: 0.5 }} onMouseOver={()=>{!leftSideBarOpenByClick && setExpandLeftNav(true);}} onMouseLeave={()=>{!leftSideBarOpenByClick && setExpandLeftNav(false);setOpenAutocomplete(false);}}>
|
||||
<Box sx={{ display: "flex", flexDirection: "column", width:"100%", height: "100%", overflowY: "auto", overflowX: "hidden",transition: 'display 0.3s ease',paddingTop: 0.5 }} onMouseOver={()=>{!leftSideBarOpenByClick && setExpandLeftNav(true)}} onMouseLeave={()=>{!leftSideBarOpenByClick && setExpandLeftNav(false);setOpenAutocomplete(false)}}>
|
||||
<Box
|
||||
sx={{
|
||||
display: "flex",
|
||||
@@ -1144,7 +1163,7 @@ useEffect(() => {
|
||||
color: currentOpenTab === "apps" && currentPath.includes("/apps") ? "#FFFFFF" : "#C8C8C8",
|
||||
justifyContent: "flex-start",
|
||||
textTransform: "none",
|
||||
backgroundColor: currentOpenTab === "apps" && expandLeftNav && currentPath.includes("/apps2") ? "#2f2f2f": "transparent",
|
||||
backgroundColor: currentOpenTab === "apps" && expandLeftNav && currentPath.includes("/apps") ? "#2f2f2f": "transparent",
|
||||
marginLeft: 16,
|
||||
fontSize: 18
|
||||
}}
|
||||
@@ -1152,7 +1171,7 @@ useEffect(() => {
|
||||
event.currentTarget.style.backgroundColor = "#2f2f2f";
|
||||
}}
|
||||
onMouseOut={(event)=>{
|
||||
event.currentTarget.style.backgroundColor = currentOpenTab === "apps" && expandLeftNav && currentPath.includes("/search") ? "#2f2f2f": "transparent";
|
||||
event.currentTarget.style.backgroundColor = currentOpenTab === "apps" && expandLeftNav && currentPath.includes("/apps") ? "#2f2f2f": "transparent";
|
||||
}}
|
||||
disableRipple={expandLeftNav ? false : true}
|
||||
>
|
||||
@@ -1205,7 +1224,7 @@ useEffect(() => {
|
||||
: "transparent";
|
||||
}}
|
||||
>
|
||||
<ShieldOutlinedIcon
|
||||
<TocIcon
|
||||
style={{
|
||||
width: 18,
|
||||
height: 18,
|
||||
@@ -1223,7 +1242,7 @@ useEffect(() => {
|
||||
: "#C8C8C8"
|
||||
}}
|
||||
>
|
||||
Discover
|
||||
Content
|
||||
</span>
|
||||
</Button>
|
||||
</Link>
|
||||
@@ -1262,7 +1281,7 @@ useEffect(() => {
|
||||
<Collapse in={openSecurityTab} timeout="auto" unmountOnExit>
|
||||
<Box
|
||||
style={{
|
||||
maxHeight: openSecurityTab && expandLeftNav ? 100 : 0,
|
||||
maxHeight: openSecurityTab && expandLeftNav ? 135 : 0,
|
||||
overflow: "hidden",
|
||||
transition: "max-height 0.3s ease, opacity 0.3s ease",
|
||||
display: "flex",
|
||||
@@ -1276,19 +1295,18 @@ useEffect(() => {
|
||||
to={"/forms"}
|
||||
style={{
|
||||
...hrefStyle,
|
||||
pointerEvents: userdata?.support ? "auto" : "none",
|
||||
pointerEvents: "auto",
|
||||
}}
|
||||
>
|
||||
<Button
|
||||
onClick={(event) => {
|
||||
if (!userdata?.support) return;
|
||||
setCurrentOpenTab("detection");
|
||||
localStorage.setItem("lastTabOpenByUser", "detection");
|
||||
}}
|
||||
sx={{
|
||||
width: "100%",
|
||||
height: 35,
|
||||
color: userdata?.support ? "#C8C8C8" : "#6F6F6F",
|
||||
color: "#C8C8C8",
|
||||
justifyContent: "flex-start",
|
||||
textTransform: "none",
|
||||
backgroundColor:
|
||||
@@ -1296,11 +1314,10 @@ useEffect(() => {
|
||||
? "#2f2f2f"
|
||||
: "transparent",
|
||||
"&:hover": {
|
||||
backgroundColor: userdata?.support ? "#2f2f2f" : "transparent",
|
||||
backgroundColor: "#2f2f2f",
|
||||
},
|
||||
cursor: userdata?.support ? "pointer" : "not-allowed",
|
||||
cursor: "pointer",
|
||||
}}
|
||||
disabled={userdata?.support === false}
|
||||
>
|
||||
<span style={{ position: "relative", left: !expandLeftNav ? 10 : 0, marginRight: 10, fontSize: 18 }}>
|
||||
•
|
||||
@@ -1312,11 +1329,9 @@ useEffect(() => {
|
||||
transition: "opacity 0.3s ease",
|
||||
fontSize: 18,
|
||||
color:
|
||||
userdata?.support && currentOpenTab === "detection" && currentPath.includes("/detection")
|
||||
currentOpenTab === "detection" && currentPath.includes("/detection")
|
||||
? "#F1F1F1"
|
||||
: userdata?.support
|
||||
? "#C8C8C8"
|
||||
: "#6F6F6F",
|
||||
: "#C8C8C8"
|
||||
}}
|
||||
>
|
||||
Forms
|
||||
@@ -1329,19 +1344,18 @@ useEffect(() => {
|
||||
to={"/admin?tab=datastore"}
|
||||
style={{
|
||||
...hrefStyle,
|
||||
pointerEvents: userdata?.support ? "auto" : "none",
|
||||
pointerEvents: "auto",
|
||||
}}
|
||||
>
|
||||
<Button
|
||||
onClick={(event) => {
|
||||
if (!userdata?.support) return;
|
||||
setCurrentOpenTab("response");
|
||||
localStorage.setItem("lastTabOpenByUser", "response");
|
||||
}}
|
||||
sx={{
|
||||
width: "100%",
|
||||
height: 35,
|
||||
color: userdata?.support ? "#C8C8C8" : "#6F6F6F",
|
||||
color: "#C8C8C8",
|
||||
justifyContent: "flex-start",
|
||||
textTransform: "none",
|
||||
backgroundColor:
|
||||
@@ -1349,9 +1363,9 @@ useEffect(() => {
|
||||
? "#2f2f2f"
|
||||
: "transparent",
|
||||
"&:hover": {
|
||||
backgroundColor: userdata?.support ? "#2f2f2f" : "transparent",
|
||||
backgroundColor: "#2f2f2f",
|
||||
},
|
||||
cursor: userdata?.support ? "pointer" : "not-allowed",
|
||||
cursor: "pointer",
|
||||
}}
|
||||
>
|
||||
<span style={{ position: "relative", left: !expandLeftNav ? 10 : 0, marginRight: 10, fontSize: 18 }}>
|
||||
@@ -1364,11 +1378,9 @@ useEffect(() => {
|
||||
transition: "opacity 0.3s ease",
|
||||
fontSize: 18,
|
||||
color:
|
||||
userdata?.support && currentOpenTab === "response" && currentPath.includes("/response")
|
||||
currentOpenTab === "response" && currentPath.includes("/response")
|
||||
? "#F1F1F1"
|
||||
: userdata?.support
|
||||
? "#C8C8C8"
|
||||
: "#6F6F6F",
|
||||
: "#C8C8C8"
|
||||
}}
|
||||
>
|
||||
Datastore
|
||||
@@ -1376,24 +1388,24 @@ useEffect(() => {
|
||||
</Button>
|
||||
</Link>
|
||||
</span>
|
||||
|
||||
<span style={{ display: "inline-block", width: "100%" }}>
|
||||
<Link
|
||||
to={"/admin?tab=files"}
|
||||
style={{
|
||||
...hrefStyle,
|
||||
pointerEvents: userdata?.support ? "auto" : "none",
|
||||
pointerEvents: "auto",
|
||||
}}
|
||||
>
|
||||
<Button
|
||||
onClick={(event) => {
|
||||
if (!userdata?.support) return;
|
||||
setCurrentOpenTab("response");
|
||||
localStorage.setItem("lastTabOpenByUser", "response");
|
||||
}}
|
||||
sx={{
|
||||
width: "100%",
|
||||
height: 35,
|
||||
color: userdata?.support ? "#C8C8C8" : "#6F6F6F",
|
||||
color: "#C8C8C8",
|
||||
justifyContent: "flex-start",
|
||||
textTransform: "none",
|
||||
backgroundColor:
|
||||
@@ -1401,9 +1413,9 @@ useEffect(() => {
|
||||
? "#2f2f2f"
|
||||
: "transparent",
|
||||
"&:hover": {
|
||||
backgroundColor: userdata?.support ? "#2f2f2f" : "transparent",
|
||||
backgroundColor: "#2f2f2f",
|
||||
},
|
||||
cursor: userdata?.support ? "pointer" : "not-allowed",
|
||||
cursor: "pointer",
|
||||
}}
|
||||
>
|
||||
<span style={{ position: "relative", left: !expandLeftNav ? 10 : 0, marginRight: 10, fontSize: 18 }}>
|
||||
@@ -1416,11 +1428,9 @@ useEffect(() => {
|
||||
transition: "opacity 0.3s ease",
|
||||
fontSize: 18,
|
||||
color:
|
||||
userdata?.support && currentOpenTab === "response" && currentPath.includes("/response")
|
||||
currentOpenTab === "response" && currentPath.includes("/response")
|
||||
? "#F1F1F1"
|
||||
: userdata?.support
|
||||
? "#C8C8C8"
|
||||
: "#6F6F6F",
|
||||
: "#C8C8C8"
|
||||
}}
|
||||
>
|
||||
Files
|
||||
@@ -1428,8 +1438,59 @@ useEffect(() => {
|
||||
</Button>
|
||||
</Link>
|
||||
</span>
|
||||
|
||||
<span style={{ display: "inline-block", width: "100%" }}>
|
||||
<Link
|
||||
to={"/admin?tab=locations"}
|
||||
style={{
|
||||
...hrefStyle,
|
||||
pointerEvents: "auto",
|
||||
}}
|
||||
>
|
||||
<Button
|
||||
onClick={(event) => {
|
||||
setCurrentOpenTab("response");
|
||||
localStorage.setItem("lastTabOpenByUser", "response");
|
||||
}}
|
||||
sx={{
|
||||
width: "100%",
|
||||
height: 35,
|
||||
color: "#C8C8C8",
|
||||
justifyContent: "flex-start",
|
||||
textTransform: "none",
|
||||
backgroundColor:
|
||||
currentOpenTab === "response" && currentPath.includes("/response")
|
||||
? "#2f2f2f"
|
||||
: "transparent",
|
||||
"&:hover": {
|
||||
backgroundColor: "#2f2f2f",
|
||||
},
|
||||
cursor: "pointer",
|
||||
}}
|
||||
>
|
||||
<span style={{ position: "relative", left: !expandLeftNav ? 10 : 0, marginRight: 10, fontSize: 18 }}>
|
||||
•
|
||||
</span>
|
||||
<span
|
||||
style={{
|
||||
display: expandLeftNav ? "inline" : "none",
|
||||
opacity: expandLeftNav ? 1 : 0,
|
||||
transition: "opacity 0.3s ease",
|
||||
fontSize: 18,
|
||||
color:
|
||||
currentOpenTab === "response" && currentPath.includes("/response")
|
||||
? "#F1F1F1"
|
||||
: "#C8C8C8"
|
||||
}}
|
||||
>
|
||||
Shuffle Agent
|
||||
</span>
|
||||
</Button>
|
||||
</Link>
|
||||
</span>
|
||||
</Box>
|
||||
</Collapse>
|
||||
|
||||
<Link to="/docs" style={hrefStyle}>
|
||||
<Button
|
||||
onClick={(event) => {
|
||||
@@ -1464,6 +1525,38 @@ useEffect(() => {
|
||||
</span>
|
||||
</Button>
|
||||
</Link>
|
||||
|
||||
|
||||
<Link to="/admin?admin_tab=billingstats" style={hrefStyle}>
|
||||
<Button
|
||||
onClick={(event) => {
|
||||
setCurrentOpenTab("admin");
|
||||
localStorage.setItem("lastTabOpenByUser", "admin");
|
||||
}}
|
||||
style={{
|
||||
...ButtonStyle,
|
||||
marginTop: 8,
|
||||
marginTop: 8,
|
||||
backgroundColor: currentOpenTab === "docs" && currentPath.includes("/admin") ? "#2f2f2f": "transparent",
|
||||
}}
|
||||
onMouseOver={(event)=>{
|
||||
event.currentTarget.style.backgroundColor = "#2f2f2f";
|
||||
}}
|
||||
onMouseOut={(event)=>{
|
||||
event.currentTarget.style.backgroundColor = currentOpenTab === "docs" && currentPath.includes("/admin") ? "#2f2f2f": "transparent";
|
||||
}}
|
||||
>
|
||||
<BusinessIcon style={{ width: 16, height: 16, marginRight: expandLeftNav ? 10 : 0, color: "rgba(255,255,255,0.5)", }} />
|
||||
<span
|
||||
style={{
|
||||
display: expandLeftNav ? "inline" : "none",
|
||||
color: currentOpenTab === "admin" && currentPath.includes("/admin") ? "#F1F1F1" : "#C8C8C8",
|
||||
}}
|
||||
>
|
||||
Admin
|
||||
</span>
|
||||
</Button>
|
||||
</Link>
|
||||
</Box>
|
||||
|
||||
{recentworkflows?.length > 0 ?
|
||||
@@ -1549,6 +1642,7 @@ useEffect(() => {
|
||||
padding: option.id === "add_suborg" ? "0" : "12px 16px",
|
||||
marginTop: index !== 0 ? 8 : 0,
|
||||
borderRadius: 6,
|
||||
marginLeft: option.margin_left ? option.margin_left : 0,
|
||||
}}
|
||||
onMouseOver={(e) => {
|
||||
e.currentTarget.style.backgroundColor = "#444444";
|
||||
@@ -1618,12 +1712,15 @@ useEffect(() => {
|
||||
setAutocompleteValue(newInputValue);
|
||||
}}
|
||||
filterOptions={(options, params) => {
|
||||
const normalize = (str) => str.toLowerCase().replace(/[\s-]+/g, "");
|
||||
const input = normalize(params.inputValue);
|
||||
|
||||
return options.filter((option) =>
|
||||
option.name
|
||||
.toLowerCase()
|
||||
.includes(params.inputValue.toLowerCase())
|
||||
normalize(option.name).includes(input) ||
|
||||
normalize(option.region_url).includes(input)
|
||||
);
|
||||
}}
|
||||
|
||||
value={userOrgs}
|
||||
renderInput={(params) => (
|
||||
<Box
|
||||
|
||||
Reference in New Issue
Block a user