From 31efc50fad7f133db265ebe5f3293da7fdd33e7d Mon Sep 17 00:00:00 2001 From: Padreug Date: Mon, 27 Apr 2026 18:24:36 +0200 Subject: [PATCH] refactor: use single POST /events endpoint with invoice key Remove proposeEvent(), consolidate to createEvent() with invoice key. Backend determines approval status based on user role and settings. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../activities/services/TicketApiService.ts | 19 +++---------------- .../activities/views/ActivitiesPage.vue | 2 +- src/modules/activities/views/EventsPage.vue | 11 +++++------ 3 files changed, 9 insertions(+), 23 deletions(-) diff --git a/src/modules/activities/services/TicketApiService.ts b/src/modules/activities/services/TicketApiService.ts index 2ecbdc5..a9f3975 100644 --- a/src/modules/activities/services/TicketApiService.ts +++ b/src/modules/activities/services/TicketApiService.ts @@ -134,24 +134,11 @@ export class TicketApiService { } /** - * Create a new ticketed event in LNbits (admin). + * Create a new event. Uses invoice key (any user). + * Backend determines approval status based on user role and settings. */ - async createEvent(eventData: CreateEventRequest, adminKey: string): Promise { + async createEvent(eventData: CreateEventRequest, invoiceKey: string): Promise { return this.request('/events/api/v1/events', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - 'X-API-KEY': adminKey, - }, - body: JSON.stringify(eventData), - }) - } - - /** - * Propose a new event for admin approval (any user with invoice key). - */ - async proposeEvent(eventData: CreateEventRequest, invoiceKey: string): Promise { - return this.request('/events/api/v1/events/propose', { method: 'POST', headers: { 'Content-Type': 'application/json', diff --git a/src/modules/activities/views/ActivitiesPage.vue b/src/modules/activities/views/ActivitiesPage.vue index bee4edf..e831705 100644 --- a/src/modules/activities/views/ActivitiesPage.vue +++ b/src/modules/activities/views/ActivitiesPage.vue @@ -66,7 +66,7 @@ async function handleCreateEvent(eventData: CreateEventRequest) { if (!invoiceKey) { throw new Error('No wallet available. Please log in first.') } - await ticketApi.proposeEvent(eventData, invoiceKey) + await ticketApi.createEvent(eventData, invoiceKey) } diff --git a/src/modules/activities/views/EventsPage.vue b/src/modules/activities/views/EventsPage.vue index d214c3d..4bb3be6 100644 --- a/src/modules/activities/views/EventsPage.vue +++ b/src/modules/activities/views/EventsPage.vue @@ -49,14 +49,13 @@ function handlePurchaseClick(event: { async function handleCreateEvent(eventData: CreateEventRequest) { const ticketApi = injectService(SERVICE_TOKENS.TICKET_API) as TicketApiService - const paymentService = injectService(SERVICE_TOKENS.PAYMENT_SERVICE) as any - - const adminKey = paymentService?.getPreferredWalletAdminKey?.() - if (!adminKey) { - throw new Error('No wallet admin key available. Please connect a wallet first.') + const { currentUser } = useAuth() + const invoiceKey = currentUser.value?.wallets?.[0]?.inkey + if (!invoiceKey) { + throw new Error('No wallet available. Please log in first.') } - await ticketApi.createEvent(eventData, adminKey) + await ticketApi.createEvent(eventData, invoiceKey) } function handleEventCreated() {