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 @@