diff options
author | Raphael <raphaelkabo@gmail.com> | 2022-12-28 16:38:57 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-28 16:38:57 +0000 |
commit | 8627537af32c8e88fa8bdfe224b92621c7e2df5c (patch) | |
tree | bf1820828f450977151bf6dd4cfd12af87a4026c | |
parent | e93b23db71df18480b29ed53c1b8247e7f0f83a7 (diff) | |
parent | d39734bf3fd84c568c15e90d6edb75e68d74b3e1 (diff) |
Merge pull request #85 from redneckcatholic/fix-event-deletion
Fix event deletion
-rw-r--r-- | activitypub.js | 5 | ||||
-rwxr-xr-x | routes.js | 75 | ||||
-rwxr-xr-x | views/event.handlebars | 2 |
3 files changed, 42 insertions, 40 deletions
diff --git a/activitypub.js b/activitypub.js index 8620e81..442f03c 100644 --- a/activitypub.js +++ b/activitypub.js @@ -341,8 +341,11 @@ function broadcastUpdateMessage(apObject, followers, eventID) { } function broadcastDeleteMessage(apObject, followers, eventID, callback) { - if (!isFederated) return; callback = callback || function () { }; + if (!isFederated) { + callback([]); + return; + } // we need to build an array of promises for each message we're sending, run Promise.all(), and then that will resolve when every message has been sent (or failed) // per spec, each promise will execute *as it is built*, which is fine, we just need the guarantee that they are all done let promises = []; @@ -1279,47 +1279,46 @@ router.post('/deleteevent/:eventID/:editToken', (req, res) => { 'Location': '/' }); res.end(); + + // Send emails here otherwise they don't exist lol + if (sendEmails) { + const attendeeEmails = event.attendees.filter(o => o.status === 'attending' && o.email).map(o => o.email); + if (attendeeEmails.length) { + console.log("Sending emails to: " + attendeeEmails); + req.app.get('hbsInstance').renderView('./views/emails/deleteevent.handlebars', { siteName, siteLogo, domain, eventName: event.name, cache: true, layout: 'email.handlebars' }, function (err, html) { + const msg = { + to: attendeeEmails, + from: { + name: siteName, + email: contactEmail, + address: contactEmail + }, + subject: `${siteName}: ${event.name} was deleted`, + html, + }; + switch (mailService) { + case 'sendgrid': + sgMail.sendMultiple(msg).catch(e => { + console.error(e.toString()); + res.status(500).end(); + }); + break; + case 'nodemailer': + nodemailerTransporter.sendMail(msg).catch(e => { + console.error(e.toString()); + res.status(500).end(); + }); + break; + } + }); + } + else { + console.log("Nothing to send!"); + } + } }) .catch((err) => { res.send('Sorry! Something went wrong (error deleting): ' + err); addToLog("deleteEvent", "error", "Attempt to delete event " + req.params.eventID + " failed with error: " + err); }); }); - // Send emails here otherwise they don't exist lol - if (sendEmails) { - Event.findOne({ id: req.params.eventID }).then((event) => { - const attendeeEmails = event.attendees.filter(o => o.status === 'attending' && o.email).map(o => o.email); - if (attendeeEmails.length) { - console.log("Sending emails to: " + attendeeEmails); - req.app.get('hbsInstance').renderView('./views/emails/deleteevent.handlebars', { siteName, siteLogo, domain, eventName: event.name, cache: true, layout: 'email.handlebars' }, function (err, html) { - const msg = { - to: attendeeEmails, - from: { - name: siteName, - email: contactEmail, - address: contactEmail - }, - subject: `${siteName}: ${event.name} was deleted`, - html, - }; - switch (mailService) { - case 'sendgrid': - sgMail.sendMultiple(msg).catch(e => { - console.error(e.toString()); - res.status(500).end(); - }); - break; - case 'nodemailer': - nodemailerTransporter.sendMail(msg).catch(e => { - console.error(e.toString()); - res.status(500).end(); - }); - break; - } - }); - } - else { - console.log("Nothing to send!"); - } - }); - } } else { // Token doesn't match diff --git a/views/event.handlebars b/views/event.handlebars index ff88ba5..3071b64 100755 --- a/views/event.handlebars +++ b/views/event.handlebars @@ -377,7 +377,7 @@ <span aria-hidden="true">×</span> </button> </div> - <form id="deleteEventForm" action="/deleteevent/{{eventData.id}}" method="post"> + <form id="deleteEventForm" action="/deleteevent/{{eventData.id}}/{{eventData.editToken}}" method="post"> <div class="modal-body"> <p>Are you sure you want to delete this event? This action cannot be undone.</p> </div> |