diff --git a/data.go b/data.go index d84128c..aca2e71 100644 --- a/data.go +++ b/data.go @@ -241,6 +241,7 @@ func grabData(ctx context.Context, code string, isProfileSitemap bool) (*Data, e switch event.Kind { case 0: + data.templateId = Profile { rawAuthorRelays := []string{} ctx, cancel := context.WithTimeout(ctx, time.Second*4) diff --git a/pages.go b/pages.go index 3a170ef..3ccd032 100644 --- a/pages.go +++ b/pages.go @@ -16,6 +16,7 @@ type TemplateID int const ( Note TemplateID = iota + Profile LongForm TelegramInstantView FileMetadata @@ -286,6 +287,29 @@ type ProfilePage struct { func (*ProfilePage) TemplateText() string { return tmplProfile } +var ( + //go:embed templates/embedded_profile.html + tmplEmbeddedProfile string + EmbeddedProfileTemplate = tmpl.MustCompile(&EmbeddedProfilePage{}) +) + +type EmbeddedProfilePage struct { + AuthorRelays []string + Content string + CreatedAt string + Domain string + Metadata sdk.ProfileMetadata + NormalizedAuthorWebsiteURL string + RenderedAuthorAboutText template.HTML + Nevent string + Npub string + Nprofile string + Proxy string + Title string +} + +func (*EmbeddedProfilePage) TemplateText() string { return tmplEmbeddedProfile } + var ( //go:embed templates/file_metadata.html tmplFileMetadata string diff --git a/render_embedded.go b/render_embedded.go index 200f96e..6645692 100644 --- a/render_embedded.go +++ b/render_embedded.go @@ -51,6 +51,15 @@ func renderEmbedded(w http.ResponseWriter, r *http.Request, code string) { Url: code, }) + case Profile: + err = EmbeddedProfileTemplate.Render(w, &EmbeddedProfilePage{ + Metadata: data.metadata, + NormalizedAuthorWebsiteURL: normalizeWebsiteURL(data.metadata.Website), + RenderedAuthorAboutText: template.HTML(basicFormatting(html.EscapeString(data.metadata.About), false, false, true)), + Npub: data.npub, + Nprofile: data.nprofile, + AuthorRelays: data.authorRelays, + }) default: log.Error().Int("templateId", int(data.templateId)).Msg("no way to render") http.Error(w, "tried to render an unsupported template at render_event.go", 500) diff --git a/render_event.go b/render_event.go index 7410876..231e1b2 100644 --- a/render_event.go +++ b/render_event.go @@ -59,13 +59,6 @@ func renderEvent(w http.ResponseWriter, r *http.Request) { return } - // render npub and nprofile using a separate function - if prefix == "npub" || prefix == "nprofile" { - // it's a profile - renderProfile(w, r, code) - return - } - // Check if the embed parameter is set to "yes" embedParam := r.URL.Query().Get("embed") if embedParam == "yes" { @@ -73,6 +66,13 @@ func renderEvent(w http.ResponseWriter, r *http.Request) { return } + // render npub and nprofile using a separate function + if prefix == "npub" || prefix == "nprofile" { + // it's a profile + renderProfile(w, r, code) + return + } + // get data for this event data, err := grabData(r.Context(), code, false) if err != nil { diff --git a/templates/embedded_profile.html b/templates/embedded_profile.html new file mode 100644 index 0000000..f88a607 --- /dev/null +++ b/templates/embedded_profile.html @@ -0,0 +1,144 @@ + + + +
+ + + + + + + +
+
+