ref: 52ac2366917bffc63f6b3b0f587497d8d9d29f55
dir: /filtering.go/
package main
import (
"context"
"strconv"
"github.com/mattn/go-mastodon"
)
func (hc *Hellclient) getFilterID(title string) (ID int) {
filters, _ := hc.client.GetFiltersV2(context.Background())
for _, filter := range filters {
if filter.Title == title {
ID, _ = strconv.Atoi(string(filter.ID))
return ID
}
}
return
}
func (hc *Hellclient) createNewFilter(title string,
filtercontext []string, action string) (result *mastodon.FilterV2, err error) {
filter := &mastodon.FilterV2{
Title: title,
Context: filtercontext,
Action: action,
}
result, err = hc.client.CreateFilterV2(context.Background(), filter)
if err != nil {
return nil, err
}
return
}
func (hc *Hellclient) GetOrCreateFilter(title string,
filtercontext []string, action string) (result *mastodon.FilterV2, err error) {
ID := hc.getFilterID(title)
if ID == 0 {
result, err = hc.createNewFilter(title, filtercontext, action)
if err == nil {
ID, _ = strconv.Atoi(string(result.ID))
}
} else {
MID := mastodon.ID(strconv.Itoa(ID))
result = &mastodon.FilterV2{
ID: MID,
}
}
if err != nil {
return
}
return
}
func (hc *Hellclient) filterStatus(status *mastodon.Status) (result *mastodon.FilterV2, err error) {
result, err = hc.GetOrCreateFilter("hellclient status filter", []string{"notifications", "public", "thread", "account"}, "hide")
if err != nil {
return
}
result, err = hc.client.FilterAddStatus(context.Background(), status.ID, result)
return
}