From 7e426348df00b4cc0644f9436f86e46b1ae2d211 Mon Sep 17 00:00:00 2001 From: Anton Tranelis Date: Mon, 29 Jul 2024 12:43:03 +0200 Subject: [PATCH] fixed request handling to fix add tag issue --- src/Components/Profile/itemFunctions.ts | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/Components/Profile/itemFunctions.ts b/src/Components/Profile/itemFunctions.ts index e5387e20..72a79d01 100644 --- a/src/Components/Profile/itemFunctions.ts +++ b/src/Components/Profile/itemFunctions.ts @@ -4,6 +4,8 @@ import { hashTagRegex } from '../../Utils/HashTagRegex'; import { randomColor } from '../../Utils/RandomColor'; import { toast } from 'react-toastify'; +const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); + export const submitNewItem = async (evt: any, type: string, item, user, setLoading, tags, addTag, addItem, linkItem, resetFilterTags, layers, addItemPopupType, setAddItemPopupType) => { evt.preventDefault(); const formItem: Item = {} as Item; @@ -142,24 +144,26 @@ export const onUpdateItem = async (state, item, tags, addTag, setLoading, naviga let offers_state: Array = []; let needs_state: Array = []; - await state.offers.map(o => { + state.offers.map(o => { offers_state.push({ items_id: item?.id, tags_id: o.id }) }); - await state.needs.map(n => { + state.needs.map(n => { needs_state.push({ items_id: item?.id, tags_id: n.id }) }); changedItem = { ...changedItem, offers: offers_state, needs: needs_state }; + setLoading(true); - state.text.toLocaleLowerCase().match(hashTagRegex)?.map(tag => { + await state.text.toLocaleLowerCase().match(hashTagRegex)?.map(tag => { if (!tags.find((t) => t.name.toLocaleLowerCase() === tag.slice(1).toLocaleLowerCase())) { addTag({ id: crypto.randomUUID(), name: encodeTag(tag.slice(1).toLocaleLowerCase()), color: randomColor() }) } }); - setLoading(true); + + await sleep(200); if (!item.new) { item?.layer?.api?.updateItem && toast.promise( @@ -181,6 +185,7 @@ export const onUpdateItem = async (state, item, tags, addTag, setLoading, naviga } else { + item.new = false; item.layer?.api?.createItem && toast.promise( item.layer?.api?.createItem(changedItem), {