shithub: hell

ref: 52ac2366917bffc63f6b3b0f587497d8d9d29f55
dir: /filtering.go/

View raw version
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
}