diff --git a/frontend/src/components/Billing.jsx b/frontend/src/components/Billing.jsx
index 97b6cd16..d5b39411 100644
--- a/frontend/src/components/Billing.jsx
+++ b/frontend/src/components/Billing.jsx
@@ -54,7 +54,6 @@ const Billing = (props) => {
const { globalUrl, userdata, serverside, billingInfo, stripeKey, selectedOrganization, handleGetOrg, clickedFromOrgTab } = props;
//const alert = useAlert();
let navigate = useNavigate();
-
const [selectedDealModalOpen, setSelectedDealModalOpen] = React.useState(false);
const [dealList, setDealList] = React.useState([]);
const [dealName, setDealName] = React.useState("");
@@ -1055,10 +1054,10 @@ const Billing = (props) => {
Consultation & Management
-
+
You currently have a total of {inputHour} hours and {inputMinutes} minutes of professional services available by our experts.
-
+
{editConsultation ?
<>
{
{editConsultation && }
: null}
-
+
Features
@@ -1331,7 +1330,7 @@ const Billing = (props) => {
Become a Shuffle Expert
-
+
Public Training
@@ -1346,7 +1345,7 @@ const Billing = (props) => {
-
+
Private Training
diff --git a/frontend/src/components/Branding.jsx b/frontend/src/components/Branding.jsx
index 48466476..de38ef86 100644
--- a/frontend/src/components/Branding.jsx
+++ b/frontend/src/components/Branding.jsx
@@ -3,15 +3,25 @@ import ReactGA from 'react-ga4';
import theme from "../theme.jsx";
import { ToastContainer, toast } from "react-toastify"
+import {
+ CheckCircle as CheckCircleIcon,
+} from "@mui/icons-material";
+
import {
Paper,
Typography,
Divider,
Button,
+ Tooltip,
Grid,
Card,
} from "@mui/material";
+import {
+ red,
+ green,
+} from "../views/AngularWorkflow.jsx"
+
//import { useAlert
const Branding = (props) => {
@@ -45,7 +55,7 @@ const Branding = (props) => {
toast("Failed updating org: ", responseJson.reason);
} else {
if (joinStatus == "join") {
- setPublishingInfo("Your organization is now part of the Creator Incentive Program. You can now create and publish content to your organization's page. You can also create a creator account to manage your organization's content.")
+ setPublishingInfo("Your organization is now part of the Partner Program. You can now create, publish and manage content for your organization's public page.")
} else {
setPublishingInfo("Your organization is no longer part of the Creator Incentive Program. You can still create a creator account to manage your organization's content.")
}
@@ -70,7 +80,15 @@ const Branding = (props) => {
}
const isOrganizationReady = () => {
- console.log("Is organization ready?")
+
+ // Check if it's a suborg
+ if (selectedOrganization.creator_org !== "") {
+ const comment = "Child orgs can't become creators"
+ if (!publishRequirements.includes(comment)) {
+ setPublishRequirements([...publishRequirements, comment])
+ }
+ return false;
+ }
// A simple checklist to ensure the button shows up properly
if (selectedOrganization.name === selectedOrganization.org) {
@@ -82,15 +100,6 @@ const Branding = (props) => {
return false;
}
- // Check if it's a suborg
- if (selectedOrganization.creator_org !== "") {
- const comment = "Child orgs can't become creators"
- if (!publishRequirements.includes(comment)) {
- setPublishRequirements([...publishRequirements, comment])
- }
- return false;
- }
-
if (selectedOrganization.large_image === "" || selectedOrganization.large_image === theme.palette.defaultImage) {
const comment = "Add a logo for your organization"
if (!publishRequirements.includes(comment)) {
@@ -102,6 +111,14 @@ const Branding = (props) => {
return true
}
+ const isPublished = selectedOrganization.creator_id === ""
+ const leadinfo = selectedOrganization.lead_info === undefined || selectedOrganization.lead_info === null || selectedOrganization.lead_info === "" ? "" : JSON.stringify(selectedOrganization.lead_info)
+ const isPartner = leadinfo.includes("partner")
+
+ console.log("LEADINFO: ", leadinfo)
+
+ console.log("SELECTEDORGANIZATION: ", selectedOrganization)
+
return (
@@ -111,27 +128,46 @@ const Branding = (props) => {
You can customize your organization's branding by uploading a logo, changing the color scheme and a lot more.
+
+ {isPublished ? : }
+ {isPublished ? "Not Published" : "Published"}
+
+
+
+
+ {!isPartner ? : }
+
+ {!isPartner? "Not Officially Partnered" : "Officially Partnered"}
+
+
+
+
+
+
+
+
- Creator Incentive Program
+ Partner Program
- By changing publishing settings, you agree to our Terms of Service, and acknowledge that your organization's non-sensitive data will be added as a creator account. None of your existing workflows, apps, or other stored data will be published. Any admin in your organization can manage the creator configuration. Becoming a creator organization is reversible.Support: support@shuffler.io
+ By changing publishing settings, you agree to our Terms of Service, and acknowledge that your organization's non-sensitive data will be added as a creator account. None of your existing workflows, apps, or other stored data will be published. Any admin in your organization can manage the creator configuration. Becoming a creator organization IS reversible.Support: support@shuffler.io
{selectedOrganization.creator_id == "" ?
:
-
-
- Modify your creator organization
-
+ null
}
+
diff --git a/frontend/src/components/LicencePopup.jsx b/frontend/src/components/LicencePopup.jsx
index 7fa355e0..820b8253 100644
--- a/frontend/src/components/LicencePopup.jsx
+++ b/frontend/src/components/LicencePopup.jsx
@@ -690,7 +690,7 @@ const LicencePopup = (props) => {
const priceItem = window.location.origin === "https://shuffler.io" ?
shuffleVariant === 0 ? "app_executions" : "cores"
:
- shuffleVariant === 0 ? "price_1PbO0cEJjT17t98NsfEMUlMn" : "price_1PbNnaEJjT17t98NLadq6Lhq"
+ shuffleVariant === 0 ? "price_1PZPSSEJjT17t98NLJoTMYja" : "price_1PZPQuEJjT17t98N3yORUtd9"
const successUrl = `${window.location.origin}/admin?admin_tab=billing&payment=success`
const failUrl = `${window.location.origin}/pricing?admin_tab=billing&payment=failure`
diff --git a/frontend/src/components/NewHeader.jsx b/frontend/src/components/NewHeader.jsx
index ee486357..e196c2cf 100644
--- a/frontend/src/components/NewHeader.jsx
+++ b/frontend/src/components/NewHeader.jsx
@@ -143,7 +143,7 @@ const Header = (props) => {
const [subAnchorEl, setSubAnchorEl] = React.useState(null);
const [upgradeHovered, setUpgradeHovered] = React.useState(false);
const [showTopbar, setShowTopbar] = useState(false)
- const stripeKey = typeof window === 'undefined' || window.location === undefined ? "" : window.location.origin === "https://shuffler.io" ? "pk_live_XAxwE2Fp9DEbEcNYw4UKmyby00vIlIPPRp" : "pk_test_51PXYYMEJjT17t98NbDkojZ3DRvsFUQBs35LGMx3i436BXwEBVFKB9nCvHt0Q3M4MG3dz4mHheuWvfoYvpaL3GmsG00k1Rb2ksO"
+ const stripeKey = typeof window === 'undefined' || window.location === undefined ? "" : window.location.origin === "https://shuffler.io" ? "pk_live_51PXYYMEJjT17t98N20qEqItyt1fLQjrnn41lPeG2PjnSlZHTDNKHuisAbW00s4KAn86nGuqB9uSVU4ds8MutbnMU00DPXpZ8ZD" : "pk_test_51PXYYMEJjT17t98NbDkojZ3DRvsFUQBs35LGMx3i436BXwEBVFKB9nCvHt0Q3M4MG3dz4mHheuWvfoYvpaL3GmsG00k1Rb2ksO"
let navigate = useNavigate();
const classes = useStyles();
@@ -171,8 +171,10 @@ const Header = (props) => {
setTooltipOpen(true);
};
+ const topbar_var = "topbar_closed2"
+
useEffect(() => {
- const topbar = localStorage.getItem("topbar_closed")
+ const topbar = localStorage.getItem(topbar_var)
if (topbar === "true") {
setShowTopbar(false)
} else {
@@ -919,8 +921,8 @@ const Header = (props) => {
)}
-
+
+
+ handleMenuItemClick('/partners')}>
+
+ Partner Program
+
+
+
+
{/*
) : null}
{workflow.execution_variables !== undefined &&
workflow.execution_variables !== null &&
@@ -2693,6 +2788,10 @@ const ParsedAction = (props) => {
return null
}
+ if (data.value === "authgroup controlled") {
+ return null
+ }
+
// selectedAction.selectedAuthentication = e.target.value
// selectedAction.authentication_id = e.target.value.id
if (
@@ -4086,11 +4185,7 @@ const ParsedAction = (props) => {
onClose={() => {
setShowAutocomplete(false);
- if (
- !selectedActionParameters[count].value[
- selectedActionParameters[count].value.length - 1
- ] === "."
- ) {
+ if (!selectedActionParameters[count].value[selectedActionParameters[count].value.length - 1] === ".") {
setShowDropdown(false);
}
diff --git a/frontend/src/components/Searchfield.jsx b/frontend/src/components/Searchfield.jsx
index c389f88d..6b3c50ae 100644
--- a/frontend/src/components/Searchfield.jsx
+++ b/frontend/src/components/Searchfield.jsx
@@ -124,7 +124,7 @@ const SearchField = props => {
);
return (
-
+
{modalView}
Limits & Cloud Sync />
Priorities />
Billing & Stats />
- Branding (Beta) />
+ Partner />
action.category_label !== undefined && action.category_label !== null && action.category_label.length > 0)
const actionIndex = startIndex < 0 ? 0 : startIndex
+ if (app.actions[actionIndex] === undefined || app.actions[actionIndex] === null) {
+ console.log("No actions found for app: ", app)
+ return
+ }
+
// Make the first action the most relevant one for them based on previous use
if (
app.actions[actionIndex].parameters !== undefined &&
@@ -11605,7 +11614,7 @@ const releaseToConnectLabel = "Release to Connect"
- Branch: Conditions - {selectedEdgeIndex}
+ Conditions
0) ? "loading" : "success"
var executionDelay = -75
const executionModal = (
@@ -18598,26 +18608,6 @@ const releaseToConnectLabel = "Release to Connect"
- {executionData.status === "EXECUTING" ? (
-
-
-
-
-
- ) : null}
- {isCloud ?
+ {executionData.status === "EXECUTING" ? (
+
+
+ ) : null}
+
+ {isCloud ?
+
+
+
@@ -18722,7 +18735,18 @@ const releaseToConnectLabel = "Release to Connect"
{executionData.workflow !== undefined && executionData.workflow !== null && executionData.workflow.actions !== undefined && executionData.workflow.actions !== null && executionData.workflow.actions.length > 0 ?
- Env
+
+ {/*envStatus === "success" ?
+
+
+
+ : envStatus === "failure" ?
+
+
+
+ : null*/}
+
+ Env
{
@@ -19580,7 +19604,7 @@ const releaseToConnectLabel = "Release to Connect"
return "The app's Docker Image is not available in the environment yet. Re-run the app to force a re-download of the app. If the problem persists, contact support"
}
- if (result.status !== 200 && result.url !== undefined && result.url !== null && (result.url.includes("192.168") || result.url.includes("172.16") || result.url.includes("10.0"))) {
+ if (result.status !== 200 && result.url !== undefined && result.url !== null && typeof result.url === "string" && (result.url.includes("192.168") || result.url.includes("172.16") || result.url.includes("10.0"))) {
return "Consider whether your Orborus environment can connect to a local IP or not."
}
@@ -21737,7 +21761,7 @@ const releaseToConnectLabel = "Release to Connect"
- {selectedVersion.name}
+ {selectedVersion?.name}
{/* Cross icon to close it */}
diff --git a/frontend/src/views/Apps.jsx b/frontend/src/views/Apps.jsx
index 4c816623..770e37c8 100755
--- a/frontend/src/views/Apps.jsx
+++ b/frontend/src/views/Apps.jsx
@@ -2586,6 +2586,8 @@ const Apps = (props) => {
if (parsedtext.indexOf("openapi") === -1 && parsedtext.indexOf("swagger") === -1) {
setValidation(false);
setOpenApiError("Error in generation: "+parsedtext);
+
+
return;
}
} catch (e) {
@@ -2684,10 +2686,11 @@ const Apps = (props) => {
body: openApidata,
credentials: "include",
})
- .then((response) => {
+ .then((response) => {
+
setValidation(false);
return response.json();
- })
+ })
.then((responseJson) => {
if (responseJson.success) {
setAppValidation(responseJson.id);