From e0b2613dbe96192d59659557943dd21b86e3c007 Mon Sep 17 00:00:00 2001 From: Benny Samir Hierl Date: Sat, 19 Feb 2022 20:49:48 +0100 Subject: [PATCH] create wishlist added Signed-off-by: Benny Samir Hierl --- src/components/FormWishlist.vue | 22 +++++++++++-------- src/composables/useWishlistStore.ts | 11 +++++++++- src/config/locales/de-DE.json | 12 ++++++++-- src/config/locales/en-US.json | 12 ++++++++-- src/router/index.ts | 6 +++++ src/views/CreateWishlistView.vue | 34 +++++++++++++++++++++++++++++ 6 files changed, 83 insertions(+), 14 deletions(-) create mode 100644 src/views/CreateWishlistView.vue diff --git a/src/components/FormWishlist.vue b/src/components/FormWishlist.vue index 1047e43..5a45a60 100644 --- a/src/components/FormWishlist.vue +++ b/src/components/FormWishlist.vue @@ -3,25 +3,25 @@ () -const emits = defineEmits(['update']) +const emits = defineEmits(['create', 'update']) const { t } = useI18n() @@ -96,6 +96,10 @@ const { handleSubmit, meta } = useForm({ const onSubmit = handleSubmit((values) => { values.imageSrc = values.imageFile || values.imageSrc - emits('update', values) + if (props.wishlist?.id) { + emits('update', values) + } else { + emits('create', values) + } }) diff --git a/src/composables/useWishlistStore.ts b/src/composables/useWishlistStore.ts index a5bfc4f..282d6d3 100644 --- a/src/composables/useWishlistStore.ts +++ b/src/composables/useWishlistStore.ts @@ -3,7 +3,6 @@ import { Wishlist, WishlistItem } from '@/types' import { useEditMode } from './useEditMode' const { isActive: editModeIsActive } = useEditMode() import { useFetch } from './useFetch' -import { syncRef } from '@vueuse/core' const state = ref() const isFinished = ref(false) @@ -16,6 +15,15 @@ const fetch = async (slugText: string) => { error.value = request.error.value } +const create = async (wishlist: Wishlist): Promise => { + const { data, error } = await useFetch('/wishlist/') + .post(unref(wishlist)) + .json() + if (error.value) { + throw error.value + } + state.value = data.value +} const update = async (updatedData: Wishlist): Promise => { const id = state.value?.id const payload = { @@ -106,6 +114,7 @@ export const useWishlistStore = () => { state, isFinished, error, + create, update, createItem, updateItem, diff --git a/src/config/locales/de-DE.json b/src/config/locales/de-DE.json index 0678783..023c407 100644 --- a/src/config/locales/de-DE.json +++ b/src/config/locales/de-DE.json @@ -10,10 +10,10 @@ "text": "Lade..." }, "saved": { - "text": "Wunschliste gespeichert" + "text": "Gespeichert" }, "saving-failed": { - "text": "Wunschliste konnte nicht gespeichert werden" + "text": "Speichern ist fehlgeschlagen!" } }, "errors": { @@ -48,6 +48,14 @@ } } }, + "create-wishlist-view": { + "title": { + "text": "Wunschliste erstellen" + }, + "headline": { + "text": "Erstelle eine Wunschliste" + } + }, "detail-view": { "main": { "empty-list": { diff --git a/src/config/locales/en-US.json b/src/config/locales/en-US.json index ba67d6d..eace745 100644 --- a/src/config/locales/en-US.json +++ b/src/config/locales/en-US.json @@ -10,10 +10,10 @@ "text": "Loading..." }, "saved": { - "text": "Wishlist saved" + "text": "Saved" }, "saving-failed": { - "text": "Saving wishlist failed" + "text": "Saving failed" } }, "errors": { @@ -48,6 +48,14 @@ } } }, + "create-wishlist-view": { + "title": { + "text": "Create a wishlist" + }, + "headline": { + "text": "Create a wishlist" + } + }, "detail-view": { "main": { "empty-list": { diff --git a/src/router/index.ts b/src/router/index.ts index 867b4c1..649f2cc 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -1,6 +1,7 @@ import { createRouter, createWebHistory } from 'vue-router' import HomeView from '@/views/HomeView.vue' import LoginView from '@/views/LoginView.vue' +import CreateWishlistView from '@/views/CreateWishlistView.vue' import DetailView from '@/views/DetailView.vue' const router = createRouter({ @@ -16,6 +17,11 @@ const router = createRouter({ name: 'login', component: LoginView, }, + { + path: '/create-wishlist', + name: 'create-wishlist', + component: CreateWishlistView, + }, { path: '/:slug', name: 'detail', diff --git a/src/views/CreateWishlistView.vue b/src/views/CreateWishlistView.vue new file mode 100644 index 0000000..ba7bb7a --- /dev/null +++ b/src/views/CreateWishlistView.vue @@ -0,0 +1,34 @@ + + +