From 7dcd467bc555a06a4a75b147739cfd1236cb34a8 Mon Sep 17 00:00:00 2001 From: lowercasename Date: Fri, 26 Jul 2019 01:01:55 +0100 Subject: Fixed event page route to avoid uncaught errors --- routes.js | 109 +++++++++++++++++++++++++++++++++----------------------------- 1 file changed, 58 insertions(+), 51 deletions(-) (limited to 'routes.js') diff --git a/routes.js b/routes.js index fe30e9f..0eda9ce 100755 --- a/routes.js +++ b/routes.js @@ -132,66 +132,73 @@ router.get('/:eventID', (req, res) => { id: req.params.eventID }) .then((event) => { - parsedLocation = event['location'].replace(/\s+/g, '+'); - if (moment(event.end).isSame(event.start, 'day')){ - // Happening during one day - displayDate = moment(event.start).format('dddd D MMMM YYYY [from] h:mm a') + moment(event.end).format(' [to] h:mm a'); - } - else { - displayDate = moment(event.start).format('dddd D MMMM YYYY [at] h:mm a') + moment(event.end).format(' [] dddd D MMMM YYYY [at] h:mm a'); - } - parsedStart = moment(event.start).format('YYYYMMDD[T]HHmmss'); - parsedEnd = moment(event.end).format('YYYYMMDD[T]HHmmss'); - let eventHasConcluded = false; - if (moment(event.end).isBefore(moment())){ - eventHasConcluded = true; - } - fromNow = moment(event.start).fromNow(); - parsedDescription = marked(event.description); - eventEditToken = event.editToken; + if (event) { + parsedLocation = event.location.replace(/\s+/g, '+'); + if (moment(event.end).isSame(event.start, 'day')){ + // Happening during one day + displayDate = moment(event.start).format('dddd D MMMM YYYY [from] h:mm a') + moment(event.end).format(' [to] h:mm a'); + } + else { + displayDate = moment(event.start).format('dddd D MMMM YYYY [at] h:mm a') + moment(event.end).format(' [] dddd D MMMM YYYY [at] h:mm a'); + } + parsedStart = moment(event.start).format('YYYYMMDD[T]HHmmss'); + parsedEnd = moment(event.end).format('YYYYMMDD[T]HHmmss'); + let eventHasConcluded = false; + if (moment(event.end).isBefore(moment())){ + eventHasConcluded = true; + } + fromNow = moment(event.start).fromNow(); + parsedDescription = marked(event.description); + eventEditToken = event.editToken; - escapedName = event.name.replace(/\s+/g, '+'); + escapedName = event.name.replace(/\s+/g, '+'); - let eventHasCoverImage = false; - if( event.image ) { - eventHasCoverImage = true; - } - else { - eventHasCoverImage = false; - } - let eventHasHost = false; - if( event.hostName ) { - eventHasHost = true; - } - else { - eventHasHost = false; - } - let firstLoad = false; - if (event.firstLoad === true) { - firstLoad = true; - Event.findOneAndUpdate({id: req.params.eventID}, {firstLoad: false}, function(err, raw) { - if (err) { - res.send(err); - } - }); - } - let editingEnabled = false; - if (Object.keys(req.query).length !== 0) { - if (!req.query.e) { - editingEnabled = false; - console.log("No edit token set"); + let eventHasCoverImage = false; + if( event.image ) { + eventHasCoverImage = true; + } + else { + eventHasCoverImage = false; + } + let eventHasHost = false; + if( event.hostName ) { + eventHasHost = true; } else { - if (req.query.e == eventEditToken){ - editingEnabled = true; + eventHasHost = false; + } + let firstLoad = false; + if (event.firstLoad === true) { + firstLoad = true; + Event.findOneAndUpdate({id: req.params.eventID}, {firstLoad: false}, function(err, raw) { + if (err) { + res.send(err); + } + }); + } + let editingEnabled = false; + if (Object.keys(req.query).length !== 0) { + if (!req.query.e) { + editingEnabled = false; + console.log("No edit token set"); } else { - editingEnabled = false; + if (req.query.e == eventEditToken){ + editingEnabled = true; + } + else { + editingEnabled = false; + } } } + res.set("X-Robots-Tag", "noindex"); + res.render('event', {title: event.name, escapedName: escapedName, eventData: event, parsedLocation: parsedLocation, parsedStart: parsedStart, parsedEnd: parsedEnd, displayDate: displayDate, fromNow: fromNow, parsedDescription: parsedDescription, editingEnabled: editingEnabled, eventHasCoverImage: eventHasCoverImage, eventHasHost: eventHasHost, firstLoad: firstLoad, eventHasConcluded: eventHasConcluded }) + } + else { + res.status(404); + res.render('404', { url: req.url }); } - res.set("X-Robots-Tag", "noindex"); - res.render('event', {title: event.name, escapedName: escapedName, eventData: event, parsedLocation: parsedLocation, parsedStart: parsedStart, parsedEnd: parsedEnd, displayDate: displayDate, fromNow: fromNow, parsedDescription: parsedDescription, editingEnabled: editingEnabled, eventHasCoverImage: eventHasCoverImage, eventHasHost: eventHasHost, firstLoad: firstLoad, eventHasConcluded: eventHasConcluded }) + }) .catch((err) => { addToLog("displayEvent", "error", "Attempt to display event " + req.params.eventID + " failed with error: " + err); -- cgit v1.2.3