Compare commits
2 Commits
f8b9003c36
...
d4de6faa89
| Author | SHA1 | Date | |
|---|---|---|---|
| d4de6faa89 | |||
| 19f3177f66 |
|
|
@ -54,8 +54,10 @@ type indexPage struct {
|
|||
type settingsPage struct {
|
||||
Session session
|
||||
|
||||
CurrentChannel microsub.Channel
|
||||
CurrentSetting channelSetting
|
||||
CurrentChannel microsub.Channel
|
||||
CurrentSetting channelSetting
|
||||
ExcludedTypes map[string]bool
|
||||
ExcludedTypeNames map[string]string
|
||||
|
||||
Channels []microsub.Channel
|
||||
Feeds []microsub.Feed
|
||||
|
|
@ -348,7 +350,7 @@ func (h *mainHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
} else {
|
||||
page.CurrentSetting = channelSetting{}
|
||||
}
|
||||
// TODO: similar code is found in timeline.go
|
||||
// FIXME: similar code is found in timeline.go
|
||||
if page.CurrentSetting.ChannelType == "" {
|
||||
if v.UID == "notifications" {
|
||||
page.CurrentSetting.ChannelType = "stream"
|
||||
|
|
@ -356,6 +358,21 @@ func (h *mainHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
page.CurrentSetting.ChannelType = "sorted-set"
|
||||
}
|
||||
}
|
||||
page.ExcludedTypeNames = map[string]string{
|
||||
"repost": "Reposts",
|
||||
"like": "Likes",
|
||||
"bookmark": "Bookmarks",
|
||||
"reply": "Replies",
|
||||
"checkin": "Checkins",
|
||||
}
|
||||
page.ExcludedTypes = make(map[string]bool)
|
||||
types := []string{"repost", "like", "bookmark", "reply", "checkin"}
|
||||
for _, v := range types {
|
||||
page.ExcludedTypes[v] = false
|
||||
}
|
||||
for _, v := range page.CurrentSetting.ExcludeType {
|
||||
page.ExcludedTypes[v] = true
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
|
|
@ -629,23 +646,25 @@ func (h *mainHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||
defer h.Backend.save()
|
||||
uid := r.FormValue("uid")
|
||||
|
||||
if h.Backend.Settings == nil {
|
||||
h.Backend.Settings = make(map[string]channelSetting)
|
||||
}
|
||||
|
||||
excludeRegex := r.FormValue("exclude_regex")
|
||||
includeRegex := r.FormValue("include_regex")
|
||||
channelType := r.FormValue("type")
|
||||
|
||||
if setting, e := h.Backend.Settings[uid]; e {
|
||||
setting.ExcludeRegex = excludeRegex
|
||||
setting.IncludeRegex = includeRegex
|
||||
setting.ChannelType = channelType
|
||||
h.Backend.Settings[uid] = setting
|
||||
} else {
|
||||
setting = channelSetting{
|
||||
ExcludeRegex: excludeRegex,
|
||||
IncludeRegex: includeRegex,
|
||||
ChannelType: channelType,
|
||||
}
|
||||
h.Backend.Settings[uid] = setting
|
||||
setting, e := h.Backend.Settings[uid]
|
||||
if !e {
|
||||
setting = channelSetting{}
|
||||
}
|
||||
setting.ExcludeRegex = excludeRegex
|
||||
setting.IncludeRegex = includeRegex
|
||||
setting.ChannelType = channelType
|
||||
if values, e := r.Form["exclude_type"]; e {
|
||||
setting.ExcludeType = values
|
||||
}
|
||||
h.Backend.Settings[uid] = setting
|
||||
|
||||
h.Backend.Debug()
|
||||
|
||||
|
|
|
|||
|
|
@ -54,6 +54,7 @@ type memoryBackend struct {
|
|||
type channelSetting struct {
|
||||
ExcludeRegex string
|
||||
IncludeRegex string
|
||||
ExcludeType []string
|
||||
ChannelType string
|
||||
}
|
||||
|
||||
|
|
@ -564,6 +565,37 @@ func (b *memoryBackend) channelAddItemWithMatcher(channel string, item microsub.
|
|||
b.lock.RUnlock()
|
||||
|
||||
for channelKey, setting := range settings {
|
||||
if len(setting.ExcludeType) > 0 {
|
||||
for _, v := range setting.ExcludeType {
|
||||
switch v {
|
||||
case "repost":
|
||||
if len(item.RepostOf) > 0 {
|
||||
return nil
|
||||
}
|
||||
break
|
||||
case "like":
|
||||
if len(item.LikeOf) > 0 {
|
||||
return nil
|
||||
}
|
||||
break
|
||||
case "bookmark":
|
||||
if len(item.BookmarkOf) > 0 {
|
||||
return nil
|
||||
}
|
||||
break
|
||||
case "reply":
|
||||
if len(item.InReplyTo) > 0 {
|
||||
return nil
|
||||
}
|
||||
break
|
||||
case "checkin":
|
||||
if item.Checkin != nil {
|
||||
return nil
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
if setting.IncludeRegex != "" {
|
||||
re, err := regexp.Compile(setting.IncludeRegex)
|
||||
if err != nil {
|
||||
|
|
|
|||
|
|
@ -79,6 +79,18 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label for="exclude_type" class="label">Exclude Types</label>
|
||||
<div class="control">
|
||||
<div class="select is-multiple">
|
||||
<select name="exclude_type" id="exclude_type" multiple>
|
||||
{{ range $key, $excluded := .ExcludedTypes }}
|
||||
<option value="{{ $key }}" {{ if $excluded }}selected="selected"{{ end }}>{{ index $.ExcludedTypeNames $key }}</option>
|
||||
{{ end }}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="field">
|
||||
<div class="control">
|
||||
<button type="submit" class="button is-primary">Save</button>
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user