shithub: hell

Download patch

ref: 9e028273a255c6e254a1627ece5a5fcac76b04f5
parent: f0b417480ed5554d0cebb6bd82c7a5c4dea8b002
author: penny <penny@limitedideas.org>
date: Tue Nov 4 16:55:43 EST 2025

yet more ports

--- a/commands.go
+++ b/commands.go
@@ -1062,7 +1062,53 @@
 	return cmd
 }
 
+func (hc *Hellclient) threadcmd() cmder {
+	cmd := &basiccmd{}
+	cmd.hc = hc
+	cmd.bname = "thread"
+	cmd.bflags = free
+	cmd.doer = func(data *cmddata) string {
+		hc.pause(true)
+		hc.page = &Page{disablereverse: true}
+		getter := &ThreadStatusGetter{target: data.status, client: hc.client}
+		hc.page.loader = &StatusPages{hc: hc, getter: getter}
+		return hc.page.String()
+	}
+	return cmd
+}
 
+func (hc *Hellclient) pinnedcmd() cmder {
+	cmd := &basiccmd{}
+	cmd.hc = hc
+	cmd.bname = "pinned"
+	cmd.bflags = account | acc_resolve
+	cmd.doer = func(data *cmddata) string {
+		hc.pause(true)
+		hc.page = &Page{}
+		hc.page.itembuffer = new([]PageItem)
+		getter := &PinnedStatusGetter{client: hc.client, ID: data.account.ID}
+		hc.page.loader = &StatusPages{hc: hc, getter: getter}
+		return hc.page.String()
+	}
+	return cmd
+}
+
+func (hc *Hellclient) accountcmd() cmder {
+	cmd := &basiccmd{}
+	cmd.hc = hc
+	cmd.bname = "account"
+	cmd.bflags = account | acc_resolve
+	cmd.doer = func(data *cmddata) string {
+		hc.pause(true)
+		hc.page = &Page{}
+		hc.page.itembuffer = new([]PageItem)
+		getter := &AccountStatusGetter{client: hc.client, ID: data.account.ID}
+		hc.page.loader = &StatusPages{hc: hc, getter: getter}
+		return hc.page.String()
+	}
+	return cmd
+}
+
 // Commmands are lazy evaluated in this order
 // Single/two letter matches need to match the most common commands
 func (hc *Hellclient) newCmdArray() []cmder {
@@ -1080,17 +1126,19 @@
 		&reloadcmd{hc},
 		&profilecmd{hc, hc.cmdload},
 		hc.publiccmd(),
+		hc.pagecmd(),
 		hc.parentcmd(),
+		hc.pinnedcmd(),
 		&dmcmd{hc},
 		hc.downloadcmd(),
 		&helpcmd{hc},
 		&detachcmd{hc},
+		hc.accountcmd(),
 		&attachcmd{hc},
 		&statscmd{hc},
 		hc.versioncmd(),
 		hc.prevcmd(),
 		hc.nextcmd(),
-		hc.pagecmd(),
 		hc.bookmarkscmd(),
 		hc.readcmd(),
 		hc.noticecmd(),
@@ -1105,6 +1153,7 @@
 		hc.mediacmd("view", &hc.preferences.ImageViewer),
 		hc.mediacmd("import", &hc.preferences.MediaImport),
 		hc.editcmd(),
+		hc.threadcmd(),
 
 	}
 	return cmdarray
--- a/main.go
+++ b/main.go
@@ -6,7 +6,6 @@
 	"strings"
 
 	mastodon "codeberg.org/penny64/hellclient-go-mastodon"
-	"github.com/k3a/html2text"
 )
 
 func main() {
@@ -118,83 +117,6 @@
 
 			//Commands require status indexes
 			switch command {
-			case "edit":
-				if content == "" || content == " " {
-					if (postItem == nil) || postItem.Account.ID != hc.currentuser.ID {
-						fmt.Printf("cannot edit other's statuses!\n")
-						return
-					}
-					fixedHTML, err := prepareForEdit(postItem)
-					if err != nil {
-						fmt.Printf("Error loading post HTML: %s\n", err)
-						return
-					}
-					rl.SetDefault(fmt.Sprintf("/edit %v %v", index, html2text.HTML2TextWithOptions(fixedHTML, html2text.WithUnixLineBreaks())))
-					return
-				}
-				var MediaIDs []mastodon.ID
-				for _, media := range postItem.MediaAttachments {
-					MediaIDs = append(MediaIDs, media.ID)
-				}
-				toot := &mastodon.Toot{
-					Status:      content,
-					MediaIDs:    MediaIDs,
-					Sensitive:   postItem.Sensitive,
-					SpoilerText: postItem.SpoilerText,
-					Visibility:  postItem.Visibility,
-					Language:    postItem.Language,
-				}
-				if postItem.InReplyToID != nil {
-					id := mastodon.ID(postItem.InReplyToID.(string))
-					toot.InReplyToID = id
-				}
-				editfunc := func() {
-					_, err = client.UpdateStatus(context.Background(), toot, postItem.ID)
-					if err != nil {
-						fmt.Println(err)
-						return
-					}
-				}
-				hc.dispatchAnon(editfunc).Wait()
-				return
-			case "thread":
-				hc.pause(true)
-				hc.page = &Page{disablereverse: true}
-				getter := &ThreadStatusGetter{target: postItem, client: hc.client}
-				hc.page.loader = &StatusPages{hc: hc, getter: getter}
-				fmt.Print(hc.page.String())
-				return
-			case "pinned":
-				var account *mastodon.Account
-				if foundindex || index == "" {
-					account = &postItem.Account
-				} else {
-					account = hc.resolveAccount(index)
-					if account == nil {
-						return
-					}
-				}
-
-				hc.pause(true)
-				hc.page = &Page{}
-				hc.page.itembuffer = new([]PageItem)
-				getter := &PinnedStatusGetter{client: hc.client, ID: account.ID}
-				hc.page.loader = &StatusPages{hc: hc, getter: getter}
-				fmt.Print(hc.page.String())
-				return
-			case "account":
-				account := accByNameOrRef()
-				if account == nil {
-					fmt.Printf("Account lookup failed.\n")
-					return
-				}
-				hc.pause(true)
-				hc.page = &Page{}
-				hc.page.itembuffer = new([]PageItem)
-				getter := &AccountStatusGetter{client: hc.client, ID: account.ID}
-				hc.page.loader = &StatusPages{hc: hc, getter: getter}
-				fmt.Print(hc.page.String())
-				return
 			case "unfollow":
 				account := accByNameOrRef()
 				if account == nil {
--