shithub: hell

Download patch

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
 			}
 
--