From fa2a6e40f0198d9ef26552434c3c63f81f520c82 Mon Sep 17 00:00:00 2001 From: Padreug Date: Sat, 23 May 2026 21:00:30 +0200 Subject: [PATCH] feat(ui): "Republish all" button on the admin Settings card MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Surfaces the POST /republish-all endpoint added in the previous commit. Lives in the existing admin-gated Settings card on the events extension landing page, so the LNbits operator can trigger the migration without curl + access tokens. Confirm dialog before firing (the endpoint emits one Nostr event per approved row, fine to retry but worth a click of friction). Notification shows the republished/total count on success. Self-closing tags expanded per the LNbits UMD rule (webapp CLAUDE.md > LNbits + Quasar UMD gotchas) — q-separator and q-btn would silently nest wrong otherwise. Co-Authored-By: Claude Opus 4.7 (1M context) --- static/js/index.js | 28 ++++++++++++++++++++++++++++ static/js/index.vue | 22 ++++++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/static/js/index.js b/static/js/index.js index 022399c..8ec41a6 100644 --- a/static/js/index.js +++ b/static/js/index.js @@ -9,6 +9,7 @@ window.PageEvents = { pendingEvents: [], allUserEvents: [], isAdmin: false, + republishing: false, settings: { auto_approve: false }, @@ -275,6 +276,33 @@ window.PageEvents = { .catch(LNbits.utils.notifyApiError) }) }, + republishAllEvents() { + LNbits.utils + .confirmDialog( + 'Re-emit every approved event to Nostr relays? This is safe ' + + 'to run multiple times but generates one event per approved row.' + ) + .onOk(() => { + this.republishing = true + LNbits.api + .request('POST', '/events/api/v1/events/republish-all') + .then(response => { + Quasar.Notify.create({ + type: 'positive', + message: + 'Republished ' + + response.data.republished + + ' of ' + + response.data.total + + ' events' + }) + }) + .catch(LNbits.utils.notifyApiError) + .finally(() => { + this.republishing = false + }) + }) + }, foldDateTime(day, time) { // Combine separate date/time inputs into the wire format // expected by the events extension: "YYYY-MM-DD" or diff --git a/static/js/index.vue b/static/js/index.vue index 4117f47..befc230 100644 --- a/static/js/index.vue +++ b/static/js/index.vue @@ -15,6 +15,28 @@ > + +
+
+ Republish to Nostr +
+ Re-emit every approved event so connected clients pick + up the latest tag set. Useful after the extension + publisher changes (e.g. new tickets_* tags) so existing + events don't need a per-event edit. +
+
+
+ +
+