package main import ( _ "embed" "strings" "html/template" "github.com/nbd-wtf/go-nostr/nip19" "github.com/nbd-wtf/go-nostr/nip52" ) type CalendarPageParams struct { BaseEventPageParams OpenGraphParams HeadParams Details DetailsParams TimeZone string StartAtDate string StartAtTime string EndAtDate string EndAtTime string Content template.HTML CalendarEvent Kind31922Or31923Metadata Clients []ClientReference } func formatParticipants(participants []nip52.Participant) string { var list = make([]string, 0) for _, p := range participants { nreplace, _ := nip19.EncodePublicKey(p.PubKey) nreplace = replaceNostrURLsWithHTMLTags(nostrNpubNprofileMatcher, "nostr:"+nreplace) if p.Role != "" { nreplace = nreplace + " as " + strings.ToTitle(p.Role) } list = append(list, nreplace) } return strings.Join(list, ", ") } templ calendarEventInnerBlock(params CalendarPageParams) {

{ params.CalendarEvent.Title }

if params.StartAtDate == params.EndAtDate {
Date
{ params.StartAtDate }
if params.StartAtTime != "" && params.EndAtTime != "" {
From { params.StartAtTime } to { params.EndAtTime } ({ params.TimeZone })
}
} else {
Start date
{ params.StartAtDate }
{ params.StartAtTime } ({ params.TimeZone })
if params.EndAtTime != "" {
End date
{ params.EndAtDate }
{ params.EndAtTime } ({ params.TimeZone })
} } if params.CalendarEvent.Locations[0] != "" {
Location
{ params.CalendarEvent.Locations[0] }
}
if len(params.CalendarEvent.Participants) != 0 {
People: @templ.Raw(formatParticipants(params.CalendarEvent.Participants))
} if params.CalendarEvent.Image != "" { } @templ.Raw(params.Content)
for _, v := range params.CalendarEvent.Hashtags { { v } }
} templ calendarEventTemplate(params CalendarPageParams, isEmbed bool) { if isEmbed { @embeddedPageTemplate( params.Event, params.NeventNaked, ) { @calendarEventInnerBlock(params) } } else { @eventPageTemplate( "Calendar Event: "+params.CalendarEvent.Title, params.OpenGraphParams, params.HeadParams, params.Clients, params.Details, params.Event, ) { @calendarEventInnerBlock(params) } } }