diff --git a/model/settings.go b/model/settings.go index fa69672..b7c77cf 100644 --- a/model/settings.go +++ b/model/settings.go @@ -9,6 +9,7 @@ type Settings struct { AutoRefreshNotifications bool `json:"auto_refresh_notifications"` FluorideMode bool `json:"fluoride_mode"` DarkMode bool `json:"dark_mode"` + AntiDopamineMode bool `json:"anti_dopamine_mode"` } func NewSettings() *Settings { @@ -21,5 +22,6 @@ func NewSettings() *Settings { AutoRefreshNotifications: false, FluorideMode: false, DarkMode: false, + AntiDopamineMode: false, } } diff --git a/renderer/model.go b/renderer/model.go index 85c73b8..7ea8c22 100644 --- a/renderer/model.go +++ b/renderer/model.go @@ -13,6 +13,7 @@ type Context struct { DarkMode bool CSRFToken string UserID string + AntiDopamineMode bool } type NavData struct { diff --git a/service/service.go b/service/service.go index 35ce3bd..cc59cb6 100644 --- a/service/service.go +++ b/service/service.go @@ -116,6 +116,7 @@ func getRendererContext(c *model.Client) *renderer.Context { DarkMode: settings.DarkMode, CSRFToken: session.CSRFToken, UserID: session.UserID, + AntiDopamineMode: settings.AntiDopamineMode, } } @@ -402,13 +403,19 @@ func (svc *service) ServeNotificationPage(c *model.Client, maxID string, var nextLink string var unreadCount int var readID string + var excludes []string var pg = mastodon.Pagination{ MaxID: maxID, MinID: minID, Limit: 20, } - notifications, err := c.GetNotifications(ctx, &pg) + dope := c.Session.Settings.AntiDopamineMode + if dope { + excludes = append(excludes, "follow", "favourite", "reblog") + } + + notifications, err := c.GetNotifications(ctx, &pg, excludes...) if err != nil { return } diff --git a/service/transport.go b/service/transport.go index 131c580..7d27a84 100644 --- a/service/transport.go +++ b/service/transport.go @@ -591,6 +591,7 @@ func NewHandler(s Service, staticDir string) http.Handler { arn := req.FormValue("auto_refresh_notifications") == "true" fluorideMode := req.FormValue("fluoride_mode") == "true" darkMode := req.FormValue("dark_mode") == "true" + antiDopamineMode := req.FormValue("anti_dopamine_mode") == "true" settings := &model.Settings{ DefaultVisibility: visibility, @@ -601,6 +602,7 @@ func NewHandler(s Service, staticDir string) http.Handler { AutoRefreshNotifications: arn, FluorideMode: fluorideMode, DarkMode: darkMode, + AntiDopamineMode: antiDopamineMode, } err := s.SaveSettings(c, settings) diff --git a/templates/notification.tmpl b/templates/notification.tmpl index b1855a6..227bc57 100644 --- a/templates/notification.tmpl +++ b/templates/notification.tmpl @@ -3,7 +3,9 @@