Add the Anti Dopamine feature
This commit is contained in:
parent
71c5da7b3b
commit
28695fb8e6
|
@ -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,
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ type Context struct {
|
|||
DarkMode bool
|
||||
CSRFToken string
|
||||
UserID string
|
||||
AntiDopamineMode bool
|
||||
}
|
||||
|
||||
type NavData struct {
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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}}
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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">
|
||||
|
|
Loading…
Reference in New Issue