Merge branch 'dev' into update_component

This commit is contained in:
anovazzi1 2023-12-08 16:49:05 -03:00
commit 75e7f7ab46

View file

@ -1,3 +1,4 @@
import { Loader2 } from "lucide-react";
import { ReactNode, useContext, useEffect, useMemo, useState } from "react"; import { ReactNode, useContext, useEffect, useMemo, useState } from "react";
import EditFlowSettings from "../../components/EditFlowSettingsComponent"; import EditFlowSettings from "../../components/EditFlowSettingsComponent";
import IconComponent from "../../components/genericIconComponent"; import IconComponent from "../../components/genericIconComponent";
@ -56,6 +57,9 @@ export default function ShareModal({
>([]); >([]);
const { saveFlow, flows, tabId } = useContext(FlowsContext); const { saveFlow, flows, tabId } = useContext(FlowsContext);
const [nameIsAvailable, setNameIsAvailable] = useState(false);
const [loadingNames, setLoadingNames] = useState(false);
useEffect(() => { useEffect(() => {
if (open || internalOpen) { if (open || internalOpen) {
if (hasApiKey && hasStore) { if (hasApiKey && hasStore) {
@ -72,16 +76,20 @@ export default function ShareModal({
setLoadingTags(false); setLoadingTags(false);
}); });
} }
function handleGetNames() {
async function handleGetNames() {
setLoadingNames(true);
const unavaliableNames: Array<{ id: string; name: string }> = []; const unavaliableNames: Array<{ id: string; name: string }> = [];
getStoreComponents({ fields: ["name", "id"], filterByUser: true }).then( await getStoreComponents({
(res) => { fields: ["name", "id"],
res?.results?.forEach((element: any) => { filterByUser: true,
unavaliableNames.push({ name: element.name, id: element.id }); }).then((res) => {
}); res?.results?.forEach((element: any) => {
setUnavaliableNames(unavaliableNames); unavaliableNames.push({ name: element.name, id: element.id });
} });
); setUnavaliableNames(unavaliableNames);
setLoadingNames(false);
});
} }
useEffect(() => { useEffect(() => {
@ -89,7 +97,7 @@ export default function ShareModal({
setDescription(component?.description ?? ""); setDescription(component?.description ?? "");
}, [component, open, internalOpen]); }, [component, open, internalOpen]);
const handleShareComponent = (update = false) => { const handleShareComponent = async (update = false) => {
//remove file names from flows before sharing //remove file names from flows before sharing
removeFileNameFromComponents(component); removeFileNameFromComponents(component);
const flow: FlowType = checked const flow: FlowType = checked
@ -119,7 +127,7 @@ export default function ShareModal({
}); });
} }
saveFlow(flows.find((flow) => flow.id === tabId)!, true); await saveFlow(flows.find((flow) => flow.id === tabId)!, true);
if (!update) if (!update)
saveFlowStore(flow!, getTagsIds(selectedTags, tags), sharePublic).then( saveFlowStore(flow!, getTagsIds(selectedTags, tags), sharePublic).then(
successShare, successShare,
@ -178,9 +186,19 @@ export default function ShareModal({
</ConfirmationModal.Content> </ConfirmationModal.Content>
<ConfirmationModal.Trigger> <ConfirmationModal.Trigger>
<div className="text-right"> <div className="text-right">
<Button type="button"> <Button disabled={loadingNames} type="button">
{is_component ? "Save and " : ""}Share{" "} {loadingNames ? (
{!is_component ? "Flow" : ""} <>
<div className="center w-16">
<Loader2 className="m-auto h-4 w-4 animate-spin"></Loader2>
</div>
</>
) : (
<>
{is_component && !loadingNames ? "Save and " : ""}Share{" "}
{!is_component && !loadingNames ? "Flow" : ""}
</>
)}
</Button> </Button>
</div> </div>
</ConfirmationModal.Trigger> </ConfirmationModal.Trigger>
@ -188,6 +206,7 @@ export default function ShareModal({
) : ( ) : (
<> <>
<Button <Button
disabled={loadingNames}
onClick={() => { onClick={() => {
handleShareComponent(); handleShareComponent();
if (setOpen) setOpen(false); if (setOpen) setOpen(false);
@ -195,14 +214,24 @@ export default function ShareModal({
}} }}
type="button" type="button"
> >
{is_component ? "Save and " : ""}Share{" "} {loadingNames ? (
{!is_component ? "Flow" : ""} <>
<div className="center w-16">
<Loader2 className="m-auto h-4 w-4 animate-spin"></Loader2>
</div>
</>
) : (
<>
{is_component && !loadingNames ? "Save and " : ""}Share{" "}
{!is_component && !loadingNames ? "Flow" : ""}
</>
)}
</Button> </Button>
</> </>
)} )}
</> </>
); );
}, [unavaliableNames, name]); }, [unavaliableNames, name, loadingNames]);
return ( return (
<BaseModal <BaseModal