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)