From 7f4e302b856e638dcfd39cf9f6f924ae3b3a85c0 Mon Sep 17 00:00:00 2001 From: Elijah Seed-Arita Date: Mon, 6 Oct 2025 19:34:26 -0700 Subject: [PATCH] feat: hide embeds for moderated posts (#9152) --- bskyweb/cmd/bskyweb/server.go | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/bskyweb/cmd/bskyweb/server.go b/bskyweb/cmd/bskyweb/server.go index f0cd72b153..f9fe641ede 100644 --- a/bskyweb/cmd/bskyweb/server.go +++ b/bskyweb/cmd/bskyweb/server.go @@ -458,6 +458,18 @@ func (srv *Server) WebHome(c echo.Context) error { return c.Render(http.StatusOK, "home.html", data) } +// Posts that include these labels will not have embeds passed to the metadata +// template. +var hideEmbedLabels = map[string]bool{ + "nudity": true, + "porn": true, + "sexual": true, + "sexual-figurative": true, + "graphic-media": true, + "self-harm": true, + "sensitive": true, +} + func (srv *Server) WebPost(c echo.Context) error { ctx := c.Request().Context() data := srv.NewTemplateContext() @@ -512,14 +524,29 @@ func (srv *Server) WebPost(c echo.Context) error { postView := tpv.Thread.FeedDefs_ThreadViewPost.Post data["postView"] = postView data["requestURI"] = fmt.Sprintf("https://%s%s", req.Host, req.URL.Path) - if postView.Embed != nil { - if postView.Embed.EmbedImages_View != nil { + + // If any undesirable labels are set, the embed will not be included in + // metadata + isEmbedHidden := false + for _, label := range postView.Labels { + isNeg := label.Neg != nil && *label.Neg + if hideEmbedLabels[label.Val] && !isNeg { + isEmbedHidden = true + break + } + } + + if postView.Embed != nil && !isEmbedHidden { + hasImages := postView.Embed.EmbedImages_View != nil + hasMedia := postView.Embed.EmbedRecordWithMedia_View != nil && postView.Embed.EmbedRecordWithMedia_View.Media != nil && postView.Embed.EmbedRecordWithMedia_View.Media.EmbedImages_View != nil + + if hasImages { var thumbUrls []string for i := range postView.Embed.EmbedImages_View.Images { thumbUrls = append(thumbUrls, postView.Embed.EmbedImages_View.Images[i].Thumb) } data["imgThumbUrls"] = thumbUrls - } else if postView.Embed.EmbedRecordWithMedia_View != nil && postView.Embed.EmbedRecordWithMedia_View.Media != nil && postView.Embed.EmbedRecordWithMedia_View.Media.EmbedImages_View != nil { + } else if hasMedia { var thumbUrls []string for i := range postView.Embed.EmbedRecordWithMedia_View.Media.EmbedImages_View.Images { thumbUrls = append(thumbUrls, postView.Embed.EmbedRecordWithMedia_View.Media.EmbedImages_View.Images[i].Thumb)