From 0642bd4193856872a76b942fb371275eb0b70ee8 Mon Sep 17 00:00:00 2001 From: Benny Samir Hierl Date: Fri, 18 Feb 2022 19:49:20 +0100 Subject: [PATCH] create Item modus added Signed-off-by: Benny Samir Hierl --- src/components/FormWishlistItem.vue | 62 +++++++++++++++++++++-------- src/composables/useWishlistStore.ts | 16 ++++++++ src/config/locales/de-DE.json | 6 +++ src/config/locales/en-US.json | 6 +++ src/views/DetailView.vue | 16 ++++++++ 5 files changed, 89 insertions(+), 17 deletions(-) diff --git a/src/components/FormWishlistItem.vue b/src/components/FormWishlistItem.vue index 32df92c..2100445 100644 --- a/src/components/FormWishlistItem.vue +++ b/src/components/FormWishlistItem.vue @@ -7,14 +7,14 @@ :src="item.imageSrc" :alt="item.title" /> -
-
+

+ {{ t('components.form-wishlist-item.headline-new-item.text') }} +

+

+ {{ t('components.form-wishlist-item.headline-change-item.text') }} +

+ {{ t('components.form-wishlist-item.submit.text') }} - + diff --git a/src/composables/useWishlistStore.ts b/src/composables/useWishlistStore.ts index 81823b4..a6fec72 100644 --- a/src/composables/useWishlistStore.ts +++ b/src/composables/useWishlistStore.ts @@ -40,6 +40,21 @@ const update = async (updatedData: Wishlist): Promise => { } } +const createItem = async (values: WishlistItem): Promise => { + const id = state.value?.id + const payload = { + ...values, + } + try { + const { data } = await client.post(`/wishlist/${id}/item`, payload) + state.value?.items?.push(data) + } catch (e: any) { + if (e.isAxiosError && !(e.ignore)) { + throw e + } + } +} + const updateItem = async ( currentValues: WishlistItem, newValues: WishlistItem @@ -91,6 +106,7 @@ export const useWishlistStore = () => { isReady, fetch, update, + createItem, updateItem, itemBought, itemDelete, diff --git a/src/config/locales/de-DE.json b/src/config/locales/de-DE.json index 5c718b7..c702742 100644 --- a/src/config/locales/de-DE.json +++ b/src/config/locales/de-DE.json @@ -126,6 +126,12 @@ } }, "form-wishlist-item": { + "headline-new-item": { + "text": "Neuen Eintrag hinzufügen" + }, + "headline-change-item": { + "text": "Eintrag bearbeiten" + }, "title": { "label": "Titel", "error-requried": "Titel wird benötigt." diff --git a/src/config/locales/en-US.json b/src/config/locales/en-US.json index 3cf893d..0706bc4 100644 --- a/src/config/locales/en-US.json +++ b/src/config/locales/en-US.json @@ -123,6 +123,12 @@ } }, "form-wishlist-item": { + "headline-new-item": { + "text": "Add new item" + }, + "headline-change-item": { + "text": "Change item" + }, "title": { "label": "Title", "error-requried": "Title is required." diff --git a/src/views/DetailView.vue b/src/views/DetailView.vue index 80e9db4..818fa30 100644 --- a/src/views/DetailView.vue +++ b/src/views/DetailView.vue @@ -24,6 +24,7 @@ const { fetch, isReady, update, + createItem, updateItem, itemBought, itemDelete, @@ -41,6 +42,15 @@ const handleUpdateWishlist = async (wishlist: Wishlist): Promise => { } } +const handleCreateItem = async (values: WishlistItemType): Promise => { + try { + await createItem(values) + toast.success(t('common.saved.text')) + } catch (error) { + toast.error(t('common.saving-failed.text')) + } +} + const handleUpdateItem = async ( currentValues: WishlistItemType, newValues: WishlistItemType @@ -97,6 +107,11 @@ const handleDeleteItem = async (item: WishlistItemType): Promise => { v-if="filteredItems.length > 0" class="flex flex-col space-y-14 py-10 md:space-y-8" > +
=> {