From e14cfe8ae2cebb0e920754a98dbc9e6d816721b0 Mon Sep 17 00:00:00 2001 From: "bert.hausmans" Date: Fri, 10 Apr 2026 14:19:40 +0200 Subject: [PATCH] fix: remove non-existent GET persons endpoint from crowd list detail panel MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The backend only has POST (add) and DELETE (remove) for crowd list persons — no GET to list them. Reworked the detail panel to show person count from the crowd list data instead of fetching individual persons. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../AddPersonToCrowdListDialog.vue | 43 +++-- .../crowd-lists/CrowdListDetailPanel.vue | 162 ++++-------------- apps/app/src/composables/api/useCrowdLists.ts | 15 -- 3 files changed, 59 insertions(+), 161 deletions(-) diff --git a/apps/app/src/components/crowd-lists/AddPersonToCrowdListDialog.vue b/apps/app/src/components/crowd-lists/AddPersonToCrowdListDialog.vue index f4ad7df8..4372856b 100644 --- a/apps/app/src/components/crowd-lists/AddPersonToCrowdListDialog.vue +++ b/apps/app/src/components/crowd-lists/AddPersonToCrowdListDialog.vue @@ -7,7 +7,6 @@ import type { Person } from '@/types/person' const props = defineProps<{ eventId: string crowdList: CrowdList - existingPersonIds: string[] }>() const modelValue = defineModel({ required: true }) @@ -20,24 +19,21 @@ const { mutate: addPerson, isPending } = useAddPersonToCrowdList(eventIdRef) const selectedPersonId = ref(null) const showSuccess = ref(false) const successName = ref('') +const errorMessage = ref('') -const availablePersons = computed(() => { - const all = personsResponse.value?.data ?? [] - const excluded = new Set(props.existingPersonIds) - - return all - .filter((p: Person) => !excluded.has(p.id)) - .map((p: Person) => ({ - title: p.name, - value: p.id, - subtitle: p.email, - })) -}) +const personItems = computed(() => + (personsResponse.value?.data ?? []).map((p: Person) => ({ + title: p.name, + value: p.id, + subtitle: p.email, + })), +) function onSubmit() { if (!selectedPersonId.value) return - const personName = availablePersons.value.find(p => p.value === selectedPersonId.value)?.title ?? '' + errorMessage.value = '' + const personName = personItems.value.find(p => p.value === selectedPersonId.value)?.title ?? '' addPerson( { listId: props.crowdList.id, personId: selectedPersonId.value }, @@ -48,6 +44,10 @@ function onSubmit() { modelValue.value = false showSuccess.value = true }, + onError: (err: unknown) => { + const data = (err as { response?: { data?: { message?: string } } }).response?.data + errorMessage.value = data?.message ?? 'Kon persoon niet toevoegen' + }, }, ) } @@ -64,11 +64,22 @@ function onSubmit() { Voeg een persoon toe aan {{ crowdList.name }}

+ + {{ errorMessage }} + + diff --git a/apps/app/src/components/crowd-lists/CrowdListDetailPanel.vue b/apps/app/src/components/crowd-lists/CrowdListDetailPanel.vue index 7467327e..b731d62d 100644 --- a/apps/app/src/components/crowd-lists/CrowdListDetailPanel.vue +++ b/apps/app/src/components/crowd-lists/CrowdListDetailPanel.vue @@ -1,11 +1,9 @@