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({
) : (
<>
{
handleShareComponent();
if (setOpen) setOpen(false);
@@ -195,14 +214,24 @@ export default function ShareModal({
}}
type="button"
>
- {is_component ? "Save and " : ""}Share{" "}
- {!is_component ? "Flow" : ""}
+ {loadingNames ? (
+ <>
+
+
+
+ >
+ ) : (
+ <>
+ {is_component && !loadingNames ? "Save and " : ""}Share{" "}
+ {!is_component && !loadingNames ? "Flow" : ""}
+ >
+ )}
>
)}
>
);
- }, [unavaliableNames, name]);
+ }, [unavaliableNames, name, loadingNames]);
return (