fix(shareModal/index.tsx): fix typo in variable name 'unavaliableNames' to 'unavailableNames' for better readability
feat(shareModal/index.tsx): add loading state for getting names from API to provide better user experience
This commit is contained in:
parent
e511fa1bae
commit
3976bbe619
1 changed files with 18 additions and 9 deletions
|
|
@ -53,6 +53,9 @@ export default function ShareModal({
|
||||||
const [unavaliableNames, setUnavaliableNames] = useState<string[]>([]);
|
const [unavaliableNames, setUnavaliableNames] = useState<string[]>([]);
|
||||||
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) {
|
||||||
|
|
@ -69,14 +72,19 @@ export default function ShareModal({
|
||||||
setLoadingTags(false);
|
setLoadingTags(false);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
function handleGetNames() {
|
|
||||||
|
async function handleGetNames() {
|
||||||
|
setLoadingNames(true);
|
||||||
const unavaliableNames: Array<string> = [];
|
const unavaliableNames: Array<string> = [];
|
||||||
getStoreComponents({ fields: ["name"], filterByUser: true }).then((res) => {
|
await getStoreComponents({ fields: ["name"], filterByUser: true }).then(
|
||||||
|
(res) => {
|
||||||
res?.results?.forEach((element: any) => {
|
res?.results?.forEach((element: any) => {
|
||||||
unavaliableNames.push(element.name);
|
unavaliableNames.push(element.name);
|
||||||
});
|
});
|
||||||
setUnavaliableNames(unavaliableNames);
|
setUnavaliableNames(unavaliableNames);
|
||||||
});
|
setLoadingNames(false);
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|
@ -159,7 +167,7 @@ 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{" "}
|
{is_component ? "Save and " : ""}Share{" "}
|
||||||
{!is_component ? "Flow" : ""}
|
{!is_component ? "Flow" : ""}
|
||||||
</Button>
|
</Button>
|
||||||
|
|
@ -169,6 +177,7 @@ export default function ShareModal({
|
||||||
) : (
|
) : (
|
||||||
<>
|
<>
|
||||||
<Button
|
<Button
|
||||||
|
disabled={loadingNames}
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
handleShareComponent();
|
handleShareComponent();
|
||||||
if (setOpen) setOpen(false);
|
if (setOpen) setOpen(false);
|
||||||
|
|
@ -183,7 +192,7 @@ export default function ShareModal({
|
||||||
)}
|
)}
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}, [unavaliableNames]);
|
}, [unavaliableNames, name, loadingNames]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<BaseModal
|
<BaseModal
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue