diff --git a/ui/src/components/roles/addMember.vue b/ui/src/components/roles/addMember.vue
index 2294c3e..d127408 100644
--- a/ui/src/components/roles/addMember.vue
+++ b/ui/src/components/roles/addMember.vue
@@ -13,6 +13,7 @@ import Button from '../ui/button/Button.vue';
import InputGroup from '../ui/input-group/InputGroup.vue';
import InputGroupAddon from '../ui/input-group/InputGroupAddon.vue';
import { SearchIcon } from 'lucide-vue-next';
+import Spinner from '../ui/spinner/Spinner.vue';
const props = defineProps<{
allMembers: MemberLight[],
@@ -43,8 +44,11 @@ function openDialog() {
showAddMemberDialog.value = true;
}
-
+const submitting = ref(false);
async function handleAddMember() {
+ //catch double submit
+ if (submitting.value) return;
+ submitting.value = true;
//guard
if (memberToAdd.value == null)
return;
@@ -52,6 +56,7 @@ async function handleAddMember() {
await addMemberToRole(memberToAdd.value.id, props.role.id);
emit('submit');
showAddMemberDialog.value = false;
+ submitting.value = false;
}
@@ -94,8 +99,11 @@ async function handleAddMember() {
-