ref: fe8e263ce4b63f537ede902c98f20557dd54e610
parent: 52ac2366917bffc63f6b3b0f587497d8d9d29f55
author: penny <penny@limitedideas.org>
date: Mon Aug 18 16:22:46 EDT 2025
Unfilter statuses
--- a/commands.go
+++ b/commands.go
@@ -6,7 +6,7 @@
"github.com/google/shlex"
)
-var commands = []string{"examine", "reply", "like", "thread", "open", "preview", "download", "dm", "rt", "parent", "children", "rm", "mark", "unmark", "account", "vim", "import", "pause", "resume", "url", "fpost"}+var commands = []string{"examine", "reply", "like", "thread", "open", "preview", "download", "dm", "rt", "parent", "children", "rm", "mark", "unmark", "account", "vim", "import", "pause", "resume", "url", "fpost", "ufpost"} func processInput(input string) (command string, arguments string) {--- a/filtering.go
+++ b/filtering.go
@@ -3,21 +3,31 @@
import (
"context"
"strconv"
+ "errors"
"github.com/mattn/go-mastodon"
)
-func (hc *Hellclient) getFilterID(title string) (ID int) {+func (hc *Hellclient) getFilterID(title string) (ID int, result *mastodon.FilterV2) {filters, _ := hc.client.GetFiltersV2(context.Background())
for _, filter := range filters { if filter.Title == title {ID, _ = strconv.Atoi(string(filter.ID))
- return ID
+ return ID, filter
}
}
return
}
+func (hc *Hellclient) getFilter(title string) (result *mastodon.FilterV2, err error) {+ ID, result := hc.getFilterID(title)
+ if ID == 0 {+ return nil, errors.New("Filter not found")+ }
+
+ return
+}
+
func (hc *Hellclient) createNewFilter(title string,
filtercontext []string, action string) (result *mastodon.FilterV2, err error) { filter := &mastodon.FilterV2{@@ -34,7 +44,7 @@
func (hc *Hellclient) GetOrCreateFilter(title string,
filtercontext []string, action string) (result *mastodon.FilterV2, err error) {- ID := hc.getFilterID(title)
+ ID, result := hc.getFilterID(title)
if ID == 0 {result, err = hc.createNewFilter(title, filtercontext, action)
@@ -41,11 +51,6 @@
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
@@ -65,3 +70,19 @@
return
}
+
+func (hc *Hellclient) unfilterStatus(status *mastodon.Status) (result *mastodon.FilterV2, err error) {+ result, err = hc.getFilter("hellclient status filter")+
+ if err != nil {+ return
+ }
+
+ for _, resultstatus := range result.Statuses {+ if resultstatus.Status == status.ID {+ result, err = hc.client.FilterRemoveStatus(context.Background(), resultstatus.ID)
+ return
+ }
+ }
+ return nil, errors.New("Post not filtered")+}
\ No newline at end of file
--- a/main.go
+++ b/main.go
@@ -292,7 +292,18 @@
_, err := hc.filterStatus(postItem)
if err != nil { fmt.Printf("Error filtering post: %v\n", err)+ return
}
+ url := fmt.Sprintf("%v/statuses/%v", client.Config.Server, postItem.ID)+ fmt.Printf("Filtered %v\n", url)+ return
+ case "ufpost":
+ _, err := hc.unfilterStatus(postItem)
+ if err != nil {+ fmt.Printf("Error unfiltering post: %v\n", err)+ return
+ }
+ fmt.Println(hc.formatWithPrefix(postItem, index, "Unfiltered:"))
return
}
--
⑨