diff --git a/frontend/components/Item/CreateModal.vue b/frontend/components/Item/CreateModal.vue
index f0884311..dae8cf6f 100644
--- a/frontend/components/Item/CreateModal.vue
+++ b/frontend/components/Item/CreateModal.vue
@@ -7,12 +7,11 @@
file name: {{ form.photo.name }}
-File name: {{ form.photo?.name }}
+use Shift + Enter to create and add another @@ -103,40 +103,25 @@ description: "", color: "", // Future! labels: [] as LabelOut[], - preview: null, - photo: null + preview: null as string | null, + photo: null as File | null, }); const { shift } = useMagicKeys(); - function previewImage(event) { - var input = event.target; - if (input.files) { - var reader = new FileReader(); - reader.onload = (e) => { - form.preview = e.target.result; - } - form.photo=input.files[0]; - reader.readAsDataURL(input.files[0]); + function previewImage(event: Event) { + const input = event.target as HTMLInputElement; + if (input.files && input.files.length > 0) { + const reader = new FileReader(); + reader.onload = e => { + form.preview = e.target?.result as string; + }; + const file = input.files[0]; + form.photo = file; + reader.readAsDataURL(file); } } - - function uploadImage(e: Event) { - const files = (e.target as HTMLInputElement).files; - if (!files || !files.item(0)) { - return; - } - - const first = files.item(0); - if (!first) { - return; - } - - uploadAttachment([first], null); - } - - whenever( () => modal.value, () => { @@ -160,6 +145,13 @@ return; } + if (loading.value) { + toast.error("Already creating an item"); + return; + } + + loading.value = true; + if (shift.value) { close = false; } @@ -175,6 +167,7 @@ const { error, data } = await api.items.create(out); loading.value = false; if (error) { + loading.value = false; toast.error("Couldn't create item"); return; } @@ -182,10 +175,11 @@ toast.success("Item created"); // if the photo was provided, upload it - if(form.photo){ - const { data2, error } = await api.items.attachments.add(data.id, form.photo, form.photo.name, AttachmentTypes.Photo); + if (form.photo) { + const { error } = await api.items.attachments.add(data.id, form.photo, form.photo.name, AttachmentTypes.Photo); if (error) { + loading.value = false; toast.error("Failed to upload Photo"); return; } @@ -193,7 +187,6 @@ toast.success("Photo uploaded"); } - // Reset form.name = ""; form.description = ""; diff --git a/frontend/components/Label/CreateModal.vue b/frontend/components/Label/CreateModal.vue index efd2ece0..862bf5b4 100644 --- a/frontend/components/Label/CreateModal.vue +++ b/frontend/components/Label/CreateModal.vue @@ -71,6 +71,12 @@ const { shift } = useMagicKeys(); async function create(close = true) { + if (loading.value) { + toast.error("Already creating a label"); + return; + } + loading.value = true; + if (shift.value) { close = false; } diff --git a/frontend/components/Location/CreateModal.vue b/frontend/components/Location/CreateModal.vue index 355724c3..5bbaa28a 100644 --- a/frontend/components/Location/CreateModal.vue +++ b/frontend/components/Location/CreateModal.vue @@ -73,6 +73,10 @@ const { shift } = useMagicKeys(); async function create(close = true) { + if (loading.value) { + toast.error("Already creating a location"); + return; + } loading.value = true; if (shift.value) {