Add the Anti Dopamine feature

This commit is contained in:
Hyphen 2020-09-02 19:50:48 +02:00 committed by r
parent 71c5da7b3b
commit 28695fb8e6
7 changed files with 30 additions and 5 deletions

View File

@ -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,
}
}

View File

@ -13,6 +13,7 @@ type Context struct {
DarkMode bool
CSRFToken string
UserID string
AntiDopamineMode bool
}
type NavData struct {

View File

@ -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
}

View File

@ -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)

View File

@ -3,7 +3,9 @@
<div class="notification-title-container">
<div class="notification-title">
Notifications
{{if gt .UnreadCount 0}}({{.UnreadCount }}){{end}}
{{if and (not $.Ctx.AntiDopamineMode) (gt .UnreadCount 0)}}
({{.UnreadCount }})
{{end}}
</div>
<a class="notification-refresh" href="/notifications" target="_self">refresh</a>
{{if .ReadID}}

View File

@ -41,6 +41,11 @@
<input id="dark-mode" name="dark_mode" type="checkbox" value="true" {{if .Settings.DarkMode}}checked{{end}}>
<label for="dark-mode"> Use dark theme </label>
</div>
<div class="settings-form-field">
<input id="anti-dopamine-mode" name="anti_dopamine_mode" type="checkbox"
value="true" {{if .Settings.AntiDopamineMode}}checked{{end}}>
<label for="anti-dopamine-mode"> Remove addictive social media features </label>
</div>
<button type="submit"> Save </button>
</form>

View File

@ -160,7 +160,9 @@
reply
</a>
<a class="status-reply-count" href="/thread/{{.ID}}#status-{{.ID}}" {{if $.Ctx.ThreadInNewTab}}target="_blank"{{end}}>
{{if .RepliesCount}} ({{DisplayInteractionCount .RepliesCount}}) {{end}}
{{if and (not $.Ctx.AntiDopamineMode) .RepliesCount}}
({{DisplayInteractionCount .RepliesCount}})
{{end}}
</a>
</div>
<div class="status-action">
@ -184,7 +186,9 @@
{{end}}
{{end}}
<a class="status-retweet-count" href="/retweetedby/{{.ID}}" title="click to see the the list">
{{if .ReblogsCount}} ({{DisplayInteractionCount .ReblogsCount}}) {{end}}
{{if and (not $.Ctx.AntiDopamineMode) .ReblogsCount}}
({{DisplayInteractionCount .ReblogsCount}})
{{end}}
</a>
</div>
<div class="status-action">
@ -202,7 +206,9 @@
</form>
{{end}}
<a class="status-like-count" href="/likedby/{{.ID}}" title="click to see the the list">
{{if .FavouritesCount}} ({{DisplayInteractionCount .FavouritesCount}}) {{end}}
{{if and (not $.Ctx.AntiDopamineMode) .FavouritesCount}}
({{DisplayInteractionCount .FavouritesCount}})
{{end}}
</a>
</div>
<div class="status-action">