import React, { useEffect, useState, useCallback, useContext } from 'react';
import { useNavigate, useLocation } from "react-router-dom";
import Branding from "../components/Branding.jsx";
import { ToastContainer, toast } from "react-toastify";
import { Button } from '@mui/material';
import { getTheme } from '../theme.jsx';
import { Context } from '../context/ContextApi.jsx';
import PartnerSettings from '../components/PartnerSettings.jsx';
import PartnersUsecasesTab from '../components/PartnersUsecasesTab.jsx';
import PartnersApps from '../components/PartnerApps.jsx';
import PartnerArticles from '../components/PartnersArticles.jsx';
const PartnerTab = (props) => {
const location = useLocation();
const navigate = useNavigate();
const {
userdata,
globalUrl,
serverside,
isCloud,
setSelectedOrganization,
selectedOrganization, handleGetOrg,
handleStatusChange,
isLoaded,
removeCookie
} = props;
const [selectedTab, setSelectedTab] = useState('partner_settings');
const [loadingPartnerData, setLoadingPartnerData] = useState(false);
const [curIndex, setCurIndex] = React.useState(0);
const [partnerData, setPartnerData] = React.useState({
name: "",
description: "",
image_url: "",
landscape_image_url: "",
website_url: "",
article_url: "",
expertise: [],
usecases: [],
services: [],
solutions: [],
country: "",
region: "",
partner_type: {},
});
const tabsOnPartnerTab = [ 'Partner Settings', 'Usecases', 'Apps', 'AI Agents', 'Articles', 'Branding'];
const { themeMode } = useContext(Context);
const theme = getTheme(themeMode);
useEffect(() => {
if(!isCloud || !userdata?.active_org?.is_partner) {
// If the user is not a partner or if it's not a cloud environment do not make api call :)
return;
}
setLoadingPartnerData(true);
const url = globalUrl + "/api/v1/partners/" + userdata?.active_org?.id;
fetch(url, {
method: "GET",
headers: {
"Content-Type": "application/json",
Accept: "application/json",
},
credentials: "include",
})
.then((response) => {
if (response.status !== 200) {
toast.info("No partner details found");
}
return response.json();
})
.then((responseJson) => {
if(responseJson.success) {
setPartnerData(responseJson?.partner);
setLoadingPartnerData(false);
}else{
setLoadingPartnerData(false);
console.error(responseJson?.reason)
}
})
.catch((error) => {
setLoadingPartnerData(false);
})
}, [globalUrl]);
// Used to auto select the tab based on the url : partner_tab
useEffect(() => {
const queryParams = new URLSearchParams(location.search);
const tabName = queryParams.get('partner_tab');
if (tabName) {
const decodedTabName = decodeURIComponent(tabName);
setSelectedTab(decodedTabName);
if (decodedTabName === 'partner_settings') {
setCurIndex(0);
} else if(decodedTabName === 'usecases'){
setCurIndex(1)
}else if (decodedTabName === 'apps'){
setCurIndex(2);
} else if (decodedTabName === 'aiagents') {
setCurIndex(3);
} else if (decodedTabName === 'articles') {
setCurIndex(4);
} else if (decodedTabName === 'branding') {
setCurIndex(5);
}
}
}, [location.search]);
// Tab click on partner tab
const handleTabClick = (tabName) => {
const formattedTabName = tabName.toLowerCase().replace(/[\s&]+/g, '');
const encodedTabName = encodeURIComponent(formattedTabName);
setSelectedTab(formattedTabName);
document.title = `Shuffle - partner - ${formattedTabName}`;
navigate(`?partner_tab=${encodedTabName}`);
};
// Rendering the content based on the selected tab
const renderContent = () => {
switch (selectedTab) {
case 'partner_settings':
return