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:
cristhianzl 2023-12-08 15:49:34 -03:00
commit 3976bbe619

View file

@ -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?.results?.forEach((element: any) => { (res) => {
unavaliableNames.push(element.name); res?.results?.forEach((element: any) => {
}); 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