From 573507b8ff77a4010153f01b30556864641948fb Mon Sep 17 00:00:00 2001 From: FX-Wood Date: Thu, 19 Oct 2023 23:45:13 +0000 Subject: [PATCH 01/10] add email template --- app/api/events/$id.mjs | 10 ++++--- app/pages/events/$id.mjs | 57 +++++++++++++++++++++++++++++++++++++++- 2 files changed, 62 insertions(+), 5 deletions(-) diff --git a/app/api/events/$id.mjs b/app/api/events/$id.mjs index 4baf27f..318dcb3 100644 --- a/app/api/events/$id.mjs +++ b/app/api/events/$id.mjs @@ -2,9 +2,10 @@ import events from '../../data/events.json' assert { type: 'json' } import { inflateEvent } from '../events.mjs' export async function get(req) { - let { path } = req + let { path, query } = req const event = events.find(e => e.id === req.params.id) - + let display = "page" + if (query && Object.hasOwn(query, "email")) display = "email" if (!event) { return { statusCode: 404, @@ -24,7 +25,8 @@ export async function get(req) { json: { events: inflatedEvent, sponsors: eventSponsors, - talks: eventTalks + talks: eventTalks, + display } }} -} \ No newline at end of file +} diff --git a/app/pages/events/$id.mjs b/app/pages/events/$id.mjs index d2b5dfb..4b2b1ea 100644 --- a/app/pages/events/$id.mjs +++ b/app/pages/events/$id.mjs @@ -3,9 +3,63 @@ import { marked } from "marked" export default function ({ html, state = {} }) { let { store = {} } = state let event = store.events[0] - let { id, title, sponsors, talks, description } = event + let display = store.display + let { id, title, sponsors, talks, description, date } = event let hasTalks = talks && talks.length > 0 + console.log({hasTalks}) let hasSponsors = sponsors && sponsors.length > 0 + if (display === "email") { + let eventDate = new Date(date) + // this xmp tag is a hack, detailed in this stackoverflow answer: + // https://stackoverflow.com/a/16785992 + let htmlContents = ` +

GREETING TEXT

+ + ${hasSponsors ? sponsors.map(s => ` +

+ ${s.name} logo +

+

Special thanks to our friends at ${s.name} for sponsoring snacks for this month's event! 😎

+ `).join('') : null} + + + ${hasTalks ? talks.map(t => ` +

${t.title} by ${t.speaker.name}

+

${t.name}

+ ${description && `

${marked(description)}

` } + `).join('') : null } + +

See you all on ${eventDate.toLocaleDateString(undefined, {month: "long", day: "numeric"})}

+ ` + return html` + +
+ + + ${htmlContents} + +
+ ` + } return html`

${title}

@@ -21,3 +75,4 @@ export default function ({ html, state = {} }) {
` } + From c1b4878b25798ca25041479aed6fd7d2cecdfa69 Mon Sep 17 00:00:00 2001 From: FX-Wood Date: Thu, 19 Oct 2023 23:55:00 +0000 Subject: [PATCH 02/10] remove old comment, whitespace --- app/pages/events/$id.mjs | 3 --- 1 file changed, 3 deletions(-) diff --git a/app/pages/events/$id.mjs b/app/pages/events/$id.mjs index 4b2b1ea..be073f8 100644 --- a/app/pages/events/$id.mjs +++ b/app/pages/events/$id.mjs @@ -10,8 +10,6 @@ export default function ({ html, state = {} }) { let hasSponsors = sponsors && sponsors.length > 0 if (display === "email") { let eventDate = new Date(date) - // this xmp tag is a hack, detailed in this stackoverflow answer: - // https://stackoverflow.com/a/16785992 let htmlContents = `

GREETING TEXT

@@ -45,7 +43,6 @@ export default function ({ html, state = {} }) {
- ${htmlContents}
` } return html` - +

${title}

- ${description && `

${marked(description)}

` } + ${description && `

${marked(description)}

`}

Thanks to our Sponsors ❤️

${hasSponsors ? html`` : null} - ${hasTalks ? html``: html`

No talks were given durring this event.

`} + ${hasTalks + ? html`` + : html`

No talks were given durring this event.

`}
See all past events @@ -71,4 +102,3 @@ export default function ({ html, state = {} }) { ` } - From 42394e11bc4a517ce98b48461074fc530455ad41 Mon Sep 17 00:00:00 2001 From: FX-Wood Date: Fri, 20 Oct 2023 00:07:01 +0000 Subject: [PATCH 05/10] Revert "lint" as the linter made it hard to read This reverts commit 7cc137a4725e3ef95931ef90df543852330daf40. --- app/api/events/$id.mjs | 31 ++++++++-------- app/pages/events/$id.mjs | 76 ++++++++++++---------------------------- 2 files changed, 38 insertions(+), 69 deletions(-) diff --git a/app/api/events/$id.mjs b/app/api/events/$id.mjs index 544c6c0..318dcb3 100644 --- a/app/api/events/$id.mjs +++ b/app/api/events/$id.mjs @@ -1,11 +1,11 @@ import events from '../../data/events.json' assert { type: 'json' } -import { inflateEvent } from '../events.mjs' +import { inflateEvent } from '../events.mjs' export async function get(req) { let { path, query } = req const event = events.find(e => e.id === req.params.id) - let display = 'page' - if (query && Object.hasOwn(query, 'email')) display = 'email' + let display = "page" + if (query && Object.hasOwn(query, "email")) display = "email" if (!event) { return { statusCode: 404, @@ -15,19 +15,18 @@ export async function get(req) { } } } else { - // We have to convert event from an object to an array to inflate it - let inflatedEvent = [event].map(inflateEvent) - let eventSponsors = event.sponsors - let eventTalks = event.talks + // We have to convert event from an object to an array to inflate it + let inflatedEvent = [event].map(inflateEvent) + let eventSponsors = event.sponsors + let eventTalks = event.talks - // In event/$id we are reusing the element which expects a list of events - return { - json: { - events: inflatedEvent, - sponsors: eventSponsors, - talks: eventTalks, - display - } + // In event/$id we are reusing the element which expects a list of events + return { + json: { + events: inflatedEvent, + sponsors: eventSponsors, + talks: eventTalks, + display } - } + }} } diff --git a/app/pages/events/$id.mjs b/app/pages/events/$id.mjs index 91ed188..470bc59 100644 --- a/app/pages/events/$id.mjs +++ b/app/pages/events/$id.mjs @@ -1,4 +1,4 @@ -import { marked } from 'marked' +import { marked } from "marked" export default function ({ html, state = {} }) { let { store = {} } = state @@ -7,60 +7,31 @@ export default function ({ html, state = {} }) { let { id, title, sponsors, talks, description, date } = event let hasTalks = talks && talks.length > 0 let hasSponsors = sponsors && sponsors.length > 0 - if (display === 'email') { + if (display === "email") { let eventDate = new Date(date) let htmlContents = `

GREETING TEXT

- ${ - hasSponsors - ? sponsors - .map( - s => ` + ${hasSponsors ? sponsors.map(s => `

${s.name} logo

Special thanks to our friends at ${s.name} for sponsoring snacks for this month's event! 😎

- ` - ) - .join('') - : null - } + `).join('') : null}
    -
  • 🗓 ${eventDate.toLocaleDateString(undefined, { - weekday: 'long', - month: 'long', - day: 'numeric' - })}
  • +
  • 🗓 ${eventDate.toLocaleDateString(undefined, {weekday: "long", month: "long", day: "numeric"})}
  • ⏰ 5:30pm - 8:30pm
  • 📍 LOCATION
  • 🎟 Buy Tickets
- ${ - hasTalks - ? talks - .map( - t => ` -

${ - t.title - } by ${t.speaker.name}

-

${
-            t.name
-          }

- ${description && `

${marked(description)}

`} - ` - ) - .join('') - : null - } + ${hasTalks ? talks.map(t => ` +

${t.title} by ${t.speaker.name}

+

${t.name}

+ ${description && `

${marked(description)}

` } + `).join('') : null } -

See you all on ${eventDate.toLocaleDateString(undefined, { - month: 'long', - day: 'numeric' - })}

+

See you all on ${eventDate.toLocaleDateString(undefined, {month: "long", day: "numeric"})}

` return html`
- ${htmlContents} +
+

GREETING TEXT

+ + ${hasSponsors ? sponsors.map(s => ` +

+ ${s.name} logo +

+

Special thanks to our friends at ${s.name} for sponsoring snacks for this month's event! 😎

+ `).join('') : null} +
    +
  • 🗓 ${eventDate.toLocaleDateString(undefined, {weekday: "long", month: "long", day: "numeric"})}
  • +
  • ⏰ 5:30pm - 8:30pm
  • +
  • 📍 LOCATION
  • +
  • 🎟 Buy Tickets
  • +
+ + ${hasTalks ? talks.map(t => ` +

${t.title} by ${t.speaker.name}

+

${t.name}

+ ${description && `

${marked(description)}

` } + `).join('') : null } + +

See you all on ${eventDate.toLocaleDateString(undefined, {month: "long", day: "numeric"})}

+
From 8d1c2361d55ddc4e6f8ce821d444747db3169362 Mon Sep 17 00:00:00 2001 From: FX Wood <40310772+FX-Wood@users.noreply.github.com> Date: Wed, 25 Oct 2023 23:19:24 +0000 Subject: [PATCH 07/10] remove cruft --- app/pages/events/$id.mjs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/app/pages/events/$id.mjs b/app/pages/events/$id.mjs index 3c688d9..c5a8f59 100644 --- a/app/pages/events/$id.mjs +++ b/app/pages/events/$id.mjs @@ -9,8 +9,6 @@ export default function ({ html, state = {} }) { let hasSponsors = sponsors && sponsors.length > 0 if (display === "email") { let eventDate = new Date(date) - let htmlContents = ` - ` return html`