Compare commits
2 Commits
f8b9003c36
...
d4de6faa89
| Author | SHA1 | Date | |
|---|---|---|---|
| d4de6faa89 | |||
| 19f3177f66 |
|
|
@ -54,8 +54,10 @@ type indexPage struct {
|
||||||
type settingsPage struct {
|
type settingsPage struct {
|
||||||
Session session
|
Session session
|
||||||
|
|
||||||
CurrentChannel microsub.Channel
|
CurrentChannel microsub.Channel
|
||||||
CurrentSetting channelSetting
|
CurrentSetting channelSetting
|
||||||
|
ExcludedTypes map[string]bool
|
||||||
|
ExcludedTypeNames map[string]string
|
||||||
|
|
||||||
Channels []microsub.Channel
|
Channels []microsub.Channel
|
||||||
Feeds []microsub.Feed
|
Feeds []microsub.Feed
|
||||||
|
|
@ -348,7 +350,7 @@ func (h *mainHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
} else {
|
} else {
|
||||||
page.CurrentSetting = channelSetting{}
|
page.CurrentSetting = channelSetting{}
|
||||||
}
|
}
|
||||||
// TODO: similar code is found in timeline.go
|
// FIXME: similar code is found in timeline.go
|
||||||
if page.CurrentSetting.ChannelType == "" {
|
if page.CurrentSetting.ChannelType == "" {
|
||||||
if v.UID == "notifications" {
|
if v.UID == "notifications" {
|
||||||
page.CurrentSetting.ChannelType = "stream"
|
page.CurrentSetting.ChannelType = "stream"
|
||||||
|
|
@ -356,6 +358,21 @@ func (h *mainHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
page.CurrentSetting.ChannelType = "sorted-set"
|
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
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -629,23 +646,25 @@ func (h *mainHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||||
defer h.Backend.save()
|
defer h.Backend.save()
|
||||||
uid := r.FormValue("uid")
|
uid := r.FormValue("uid")
|
||||||
|
|
||||||
|
if h.Backend.Settings == nil {
|
||||||
|
h.Backend.Settings = make(map[string]channelSetting)
|
||||||
|
}
|
||||||
|
|
||||||
excludeRegex := r.FormValue("exclude_regex")
|
excludeRegex := r.FormValue("exclude_regex")
|
||||||
includeRegex := r.FormValue("include_regex")
|
includeRegex := r.FormValue("include_regex")
|
||||||
channelType := r.FormValue("type")
|
channelType := r.FormValue("type")
|
||||||
|
|
||||||
if setting, e := h.Backend.Settings[uid]; e {
|
setting, e := h.Backend.Settings[uid]
|
||||||
setting.ExcludeRegex = excludeRegex
|
if !e {
|
||||||
setting.IncludeRegex = includeRegex
|
setting = channelSetting{}
|
||||||
setting.ChannelType = channelType
|
|
||||||
h.Backend.Settings[uid] = setting
|
|
||||||
} else {
|
|
||||||
setting = channelSetting{
|
|
||||||
ExcludeRegex: excludeRegex,
|
|
||||||
IncludeRegex: includeRegex,
|
|
||||||
ChannelType: channelType,
|
|
||||||
}
|
|
||||||
h.Backend.Settings[uid] = setting
|
|
||||||
}
|
}
|
||||||
|
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()
|
h.Backend.Debug()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -54,6 +54,7 @@ type memoryBackend struct {
|
||||||
type channelSetting struct {
|
type channelSetting struct {
|
||||||
ExcludeRegex string
|
ExcludeRegex string
|
||||||
IncludeRegex string
|
IncludeRegex string
|
||||||
|
ExcludeType []string
|
||||||
ChannelType string
|
ChannelType string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -564,6 +565,37 @@ func (b *memoryBackend) channelAddItemWithMatcher(channel string, item microsub.
|
||||||
b.lock.RUnlock()
|
b.lock.RUnlock()
|
||||||
|
|
||||||
for channelKey, setting := range settings {
|
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 != "" {
|
if setting.IncludeRegex != "" {
|
||||||
re, err := regexp.Compile(setting.IncludeRegex)
|
re, err := regexp.Compile(setting.IncludeRegex)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
||||||
|
|
@ -79,6 +79,18 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</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="field">
|
||||||
<div class="control">
|
<div class="control">
|
||||||
<button type="submit" class="button is-primary">Save</button>
|
<button type="submit" class="button is-primary">Save</button>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user