From 1aff0569bfecf427d097a1601d9c5ac449c65d49 Mon Sep 17 00:00:00 2001 From: r Date: Tue, 31 Dec 2019 11:00:21 +0000 Subject: Add option to mask nsfw attachments --- service/service.go | 25 +++++++++++++++++++++---- service/transport.go | 2 ++ 2 files changed, 23 insertions(+), 4 deletions(-) (limited to 'service') diff --git a/service/service.go b/service/service.go index c9c48eb..27e0d4a 100644 --- a/service/service.go +++ b/service/service.go @@ -280,6 +280,11 @@ func (svc *service) ServeTimelinePage(ctx context.Context, client io.Writer, for i := range statuses { statuses[i].ThreadInNewTab = c.Session.Settings.ThreadInNewTab + statuses[i].MaskNSFW = c.Session.Settings.MaskNSFW + if statuses[i].Reblog != nil { + statuses[i].Reblog.ThreadInNewTab = c.Session.Settings.ThreadInNewTab + statuses[i].Reblog.MaskNSFW = c.Session.Settings.MaskNSFW + } } if len(maxID) > 0 && len(statuses) > 0 { @@ -394,6 +399,7 @@ func (svc *service) ServeThreadPage(ctx context.Context, client io.Writer, c *mo for i := range statuses { statuses[i].ShowReplies = true statuses[i].ReplyMap = replyMap + statuses[i].MaskNSFW = c.Session.Settings.MaskNSFW addToReplyMap(replyMap, statuses[i].InReplyToID, statuses[i].ID, i+1) } @@ -434,9 +440,10 @@ func (svc *service) ServeNotificationPage(ctx context.Context, client io.Writer, var unreadCount int for i := range notifications { - switch notifications[i].Type { - case "reblog", "favourite": - if notifications[i].Status != nil { + if notifications[i].Status != nil { + notifications[i].Status.MaskNSFW = c.Session.Settings.MaskNSFW + switch notifications[i].Type { + case "reblog", "favourite": notifications[i].Status.HideAccountInfo = true } } @@ -496,6 +503,13 @@ func (svc *service) ServeUserPage(ctx context.Context, client io.Writer, c *mode return } + for i := range statuses { + statuses[i].MaskNSFW = c.Session.Settings.MaskNSFW + if statuses[i].Reblog != nil { + statuses[i].Reblog.MaskNSFW = c.Session.Settings.MaskNSFW + } + } + if len(pg.MaxID) > 0 { hasNext = true nextLink = "/user/" + id + "?max_id=" + pg.MaxID @@ -666,7 +680,6 @@ func (svc *service) ServeFollowersPage(ctx context.Context, client io.Writer, c return } - fmt.Println(len(followers), pg.MaxID) if len(followers) == 20 && len(pg.MaxID) > 0 { hasNext = true nextLink = "/followers/" + id + "?max_id=" + pg.MaxID @@ -706,6 +719,10 @@ func (svc *service) ServeSearchPage(ctx context.Context, client io.Writer, c *mo hasNext = len(results.Accounts) == 20 case "statuses": hasNext = len(results.Statuses) == 20 + for i := range results.Statuses { + results.Statuses[i].MaskNSFW = c.Session.Settings.MaskNSFW + } + } if hasNext { diff --git a/service/transport.go b/service/transport.go index 83eeedf..8075377 100644 --- a/service/transport.go +++ b/service/transport.go @@ -355,10 +355,12 @@ func NewHandler(s Service, staticDir string) http.Handler { visibility := req.FormValue("visibility") copyScope := req.FormValue("copy_scope") == "true" threadInNewTab := req.FormValue("thread_in_new_tab") == "true" + maskNSFW := req.FormValue("mask_nsfw") == "true" settings := &model.Settings{ DefaultVisibility: visibility, CopyScope: copyScope, ThreadInNewTab: threadInNewTab, + MaskNSFW: maskNSFW, } err := s.SaveSettings(ctx, w, nil, settings) -- cgit v1.2.3