feat(activities): fetchMyEvents + invoice-key auto_approve probe

`fetchMyEvents` hits the existing all_wallets=true endpoint to surface
the caller's own events regardless of status. `getAutoApprove` now
calls the public probe (invoice-key-gated) added in events extension
v1.3.0-aio.5 so non-admin webapp users get accurate edit-flow copy.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Padreug 2026-05-21 15:55:19 +02:00
commit 3047565920

View file

@ -34,6 +34,20 @@ export class TicketApiService {
return response return response
} }
/**
* Fetch the authenticated user's own events across all their wallets,
* regardless of status. Lets the webapp show the user's pending /
* rejected events alongside the public approved feed without this
* a user who edits under `auto_approve=false` loses sight of their
* own event the moment it drops to `proposed`.
*/
async fetchMyEvents(invoiceKey: string): Promise<any[]> {
return this.request('/events/api/v1/events?all_wallets=true', {
method: 'GET',
headers: { 'X-API-KEY': invoiceKey },
})
}
/** /**
* Request a ticket purchase (creates a Lightning invoice). * Request a ticket purchase (creates a Lightning invoice).
* Uses POST /tickets/{event_id} with user_id in body (upstream API). * Uses POST /tickets/{event_id} with user_id in body (upstream API).
@ -187,14 +201,16 @@ export class TicketApiService {
} }
/** /**
* Read the extension's auto_approve flag. Admin-only endpoint, so * Read the extension's auto_approve flag. Hits the public probe
* non-admin callers see false (the safe default for UI gating). * (invoice-key-gated, available to any wallet holder), so non-admin
* users see the real value and the edit-flow copy is accurate.
* Degrades to `false` on failure the safer default for warning UI.
*/ */
async getAutoApprove(adminKey: string): Promise<boolean> { async getAutoApprove(invoiceKey: string): Promise<boolean> {
try { try {
const settings = await this.request('/events/api/v1/events/settings', { const settings = await this.request('/events/api/v1/events/settings/public', {
method: 'GET', method: 'GET',
headers: { 'X-API-KEY': adminKey }, headers: { 'X-API-KEY': invoiceKey },
}) })
return Boolean(settings?.auto_approve) return Boolean(settings?.auto_approve)
} catch { } catch {