From 6aa1440b051e9e7503ebede8057323513bae2f86 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Sat, 21 Oct 2023 07:45:30 -0300 Subject: [PATCH] tmpl migration: note.html --- data.go | 4 +- main.go | 1 - pages.go | 57 ++++++++- render.go | 43 ++++++- .../{column_clients.html => clients.html} | 6 +- templates/note.html | 112 ++++++++---------- utils.go | 48 +++----- 7 files changed, 171 insertions(+), 100 deletions(-) rename templates/{column_clients.html => clients.html} (94%) diff --git a/data.go b/data.go index 46a5e68..d08c98d 100644 --- a/data.go +++ b/data.go @@ -146,11 +146,11 @@ func grabData(ctx context.Context, code string, isProfileSitemap bool) (*Data, e return nil, err } case 1, 7, 30023, 30024: - typ = "note" + templateId = Note content = event.Content parentNevent = getParentNevent(event) case 6: - typ = "note" + templateId = Note if reposted := event.Tags.GetFirst([]string{"e", ""}); reposted != nil { original_nevent, _ := nip19.EncodeEvent((*reposted)[1], []string{}, "") content = "Repost of nostr:" + original_nevent diff --git a/main.go b/main.go index 7cd393a..e8753be 100644 --- a/main.go +++ b/main.go @@ -73,7 +73,6 @@ func main() { "homepage": "homepage.html", "profile": "profile.html", "profile_sitemap": "sitemap.xml", - "note": "note.html", "relay": "relay.html", "relay_sitemap": "sitemap.xml", "archive": "archive.html", diff --git a/pages.go b/pages.go index 3b6edb1..ab59f6a 100644 --- a/pages.go +++ b/pages.go @@ -54,7 +54,7 @@ var ( DetailsTemplate = tmpl.MustCompile(&DetailsPartial{}) ) -//tmpl:bind footer.html +//tmpl:bind details.html type DetailsPartial struct { HideDetails bool CreatedAt string @@ -69,6 +69,21 @@ func (*DetailsPartial) TemplateText() string { return tmplDetails } +var ( + //go:embed templates/clients.html + tmplClients string + ClientsTemplate = tmpl.MustCompile(&ClientsPartial{}) +) + +//tmpl:bind clients.html +type ClientsPartial struct { + Clients []ClientReference +} + +func (*ClientsPartial) TemplateText() string { + return tmplClients +} + var ( //go:embed templates/footer.html tmplFooter string @@ -151,3 +166,43 @@ type OtherPage struct { func (*OtherPage) TemplateText() string { return tmplOther } + +var ( + //go:embed templates/note.html + tmplNote string + NoteTemplate = tmpl.MustCompile(&NotePage{}) +) + +type NotePage struct { + HeadCommonPartial `tmpl:"head_common"` + TopPartial `tmpl:"top"` + DetailsPartial `tmpl:"details"` + ClientsPartial `tmpl:"clients"` + FooterPartial `tmpl:"footer"` + + AuthorLong string + Content template.HTML + CreatedAt string + Description string + Image string + Metadata nostr.ProfileMetadata + Nevent string + Npub string + NpubShort string + Oembed string + ParentLink template.HTML + Proxy string + SeenOn []string + Style string + Subject string + TextImageURL string + Title string + TitleizedContent string + TwitterTitle string + Video string + VideoType string +} + +func (*NotePage) TemplateText() string { + return tmplNote +} diff --git a/render.go b/render.go index 8ea41e9..a47b358 100644 --- a/render.go +++ b/render.go @@ -218,7 +218,7 @@ func render(w http.ResponseWriter, r *http.Request) { // oembed discovery oembed := "" - if data.typ == "note" { + if data.templateId == Note { oembed = (&url.URL{ Scheme: "https", Host: host, @@ -289,11 +289,50 @@ func render(w http.ResponseWriter, r *http.Request) { AuthorLong: data.authorLong, CreatedAt: data.createdAt, }) + case Note: + err = NoteTemplate.Render(w, &NotePage{ + HeadCommonPartial: HeadCommonPartial{IsProfile: false}, + DetailsPartial: DetailsPartial{ + HideDetails: true, + CreatedAt: data.createdAt, + KindDescription: data.kindDescription, + KindNIP: data.kindNIP, + EventJSON: string(eventJSON), + Kind: data.event.Kind, + }, + ClientsPartial: ClientsPartial{ + Clients: generateClientList(code, data.event), + }, + + AuthorLong: data.authorLong, + Content: template.HTML(data.content), + CreatedAt: data.createdAt, + Description: description, + Image: data.image, + Metadata: data.metadata, + Nevent: data.nevent, + Npub: data.npub, + NpubShort: data.npubShort, + Oembed: oembed, + ParentLink: template.HTML( + replaceNostrURLsWithTags(nostrNoteNeventMatcher, "nostr:"+data.parentNevent), + ), + Proxy: "https://" + host + "/njump/proxy?src=", + SeenOn: data.relays, + Style: style, + Subject: subject, + TextImageURL: textImageURL, + Title: title, + TitleizedContent: titleizedContent, + TwitterTitle: twitterTitle, + Video: data.video, + VideoType: data.videoType, + }) case Other: err = OtherTemplate.Render(w, &OtherPage{ HeadCommonPartial: HeadCommonPartial{IsProfile: false}, DetailsPartial: DetailsPartial{ - HideDetails: false, + HideDetails: true, CreatedAt: data.createdAt, KindDescription: data.kindDescription, KindNIP: data.kindNIP, diff --git a/templates/column_clients.html b/templates/clients.html similarity index 94% rename from templates/column_clients.html rename to templates/clients.html index ce65cfa..7d01f2c 100644 --- a/templates/column_clients.html +++ b/templates/clients.html @@ -1,6 +1,6 @@