diff --git a/src/frontend/src/modals/shareModal/index.tsx b/src/frontend/src/modals/shareModal/index.tsx index d0c747863..7d181ec90 100644 --- a/src/frontend/src/modals/shareModal/index.tsx +++ b/src/frontend/src/modals/shareModal/index.tsx @@ -1,3 +1,4 @@ +import { Loader2 } from "lucide-react"; import { ReactNode, useContext, useEffect, useMemo, useState } from "react"; import EditFlowSettings from "../../components/EditFlowSettingsComponent"; import IconComponent from "../../components/genericIconComponent"; @@ -56,6 +57,9 @@ export default function ShareModal({ >([]); const { saveFlow, flows, tabId } = useContext(FlowsContext); + const [nameIsAvailable, setNameIsAvailable] = useState(false); + const [loadingNames, setLoadingNames] = useState(false); + useEffect(() => { if (open || internalOpen) { if (hasApiKey && hasStore) { @@ -72,16 +76,20 @@ export default function ShareModal({ setLoadingTags(false); }); } - function handleGetNames() { + + async function handleGetNames() { + setLoadingNames(true); const unavaliableNames: Array<{ id: string; name: string }> = []; - getStoreComponents({ fields: ["name", "id"], filterByUser: true }).then( - (res) => { - res?.results?.forEach((element: any) => { - unavaliableNames.push({ name: element.name, id: element.id }); - }); - setUnavaliableNames(unavaliableNames); - } - ); + await getStoreComponents({ + fields: ["name", "id"], + filterByUser: true, + }).then((res) => { + res?.results?.forEach((element: any) => { + unavaliableNames.push({ name: element.name, id: element.id }); + }); + setUnavaliableNames(unavaliableNames); + setLoadingNames(false); + }); } useEffect(() => { @@ -89,7 +97,7 @@ export default function ShareModal({ setDescription(component?.description ?? ""); }, [component, open, internalOpen]); - const handleShareComponent = (update = false) => { + const handleShareComponent = async (update = false) => { //remove file names from flows before sharing removeFileNameFromComponents(component); 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) saveFlowStore(flow!, getTagsIds(selectedTags, tags), sharePublic).then( successShare, @@ -178,9 +186,19 @@ export default function ShareModal({
-
@@ -188,6 +206,7 @@ export default function ShareModal({ ) : ( <> )} ); - }, [unavaliableNames, name]); + }, [unavaliableNames, name, loadingNames]); return (