shithub: hell

Download patch

ref: 16fd80edde8e3928854f8e600c5037459b97163d
parent: 9e3692b4f14d93bd48e458ec2541140a7e2b4de7
author: penny <penny@limitedideas.org>
date: Sat Sep 27 10:14:48 EDT 2025

don't reverse thread pages

--- a/main.go
+++ b/main.go
@@ -331,7 +331,7 @@
 				}
 			case "thread":
 				hc.pause(true)
-				hc.page = &Page{}
+				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())
@@ -338,20 +338,13 @@
 				return
 			case "account":
 				var account *mastodon.Account
-				var accounts []*mastodon.Account
 				if foundindex {
 					account = &postItem.Account
 				} else {
-					accounts, err = hc.client.AccountsSearchResolve(context.Background(), index, 1, true)
-					if err != nil {
-						fmt.Printf("Error resolving account %s: %v\n", index, err)
+					account = hc.resolveAccount(index)
+					if account == nil {
 						return
 					}
-					if len(accounts) < 1 {
-						fmt.Printf("No account matched %s\n", index)
-						return
-					}
-					account = accounts[0]
 				}
 
 				hc.pause(true)
@@ -365,20 +358,13 @@
 				return
 			case "follow":
 				var account *mastodon.Account
-				var accounts []*mastodon.Account
 				if foundindex {
 					account = &postItem.Account
 				} else {
-					accounts, err = hc.client.AccountsSearchResolve(context.Background(), index, 1, true)
-					if err != nil {
-						fmt.Printf("Error resolving account %s: %v\n", index, err)
+					account = hc.resolveAccount(index)
+					if account == nil {
 						return
 					}
-					if len(accounts) < 1 {
-						fmt.Printf("No account matched %s\n", index)
-						return
-					}
-					account = accounts[0]
 				}
 				relationship, err := hc.client.AccountFollow(context.Background(), account.ID)
 				if err != nil {
@@ -393,7 +379,7 @@
 					fmt.Printf("Follow request sent to %s\n", account.Acct)
 					return
 				}
-					
+
 			case "fpost":
 				_, err := hc.filterStatus(postItem)
 				if err != nil {
--- a/mastodon.go
+++ b/mastodon.go
@@ -506,3 +506,16 @@
 	}()
 	return
 }
+
+func (hc *Hellclient) resolveAccount(lookup string) *mastodon.Account {
+	accounts, err := hc.client.AccountsSearchResolve(context.Background(), lookup, 1, true)
+	if err != nil {
+		fmt.Printf("Error resolving account %s: %v\n", lookup, err)
+		return nil
+	}
+	if len(accounts) < 1 {
+		fmt.Printf("No account matched %s\n", lookup)
+		return nil
+	}
+	return accounts[0]
+}
--- a/pages.go
+++ b/pages.go
@@ -28,7 +28,7 @@
 	loaded bool
 }
 
-//The API doesn't take a limit for this so we ignore the limit
+// The API doesn't take a limit for this so we ignore the limit
 func (getter *ThreadStatusGetter) Get(limit int) ([]*mastodon.Status, error) {
 	if getter.loaded {
 		return nil, nil
@@ -35,16 +35,17 @@
 	}
 	context, err := getter.client.GetStatusContext(context.Background(), getter.target.ID)
 	if err == nil {
-		getter.loaded = true	
+		getter.loaded = true
 	}
 	var statuses []*mastodon.Status
-	for _, post := range context.Descendants {
+	for _, post := range context.Ancestors {
 		statuses = append(statuses, post)
 	}
 	statuses = append(statuses, getter.target)
-	for _, post := range context.Ancestors {
+	for _, post := range context.Descendants {
 		statuses = append(statuses, post)
 	}
+
 	return statuses, err
 }
 
@@ -74,7 +75,6 @@
 	return statuses, err
 }
 
-
 type Page struct {
 	loader StatusLoader
 	//Array index for the item buffer
@@ -85,6 +85,8 @@
 	previndexes []int
 	//Semantic page number for the UI
 	page       int
+	//don't flip the order around
+	disablereverse bool
 	itembuffer *[]PageItem
 }
 type NotificationPages struct {
@@ -113,7 +115,7 @@
 	var itemArray []PageItem
 	var statuses []*mastodon.Status
 	var err error
-	statusfunc := func(job *GenericJob) {statuses, err = statusData.getter.Get(limit)}
+	statusfunc := func(job *GenericJob) { statuses, err = statusData.getter.Get(limit) }
 	statusjob := statusData.hc.dispatchFunc(statusfunc)
 	statusjob.Wait()
 	if err != nil {
@@ -217,10 +219,12 @@
 	page.findIndexEnd()
 	var items []PageItem
 	items = (*page.itembuffer)[page.index:page.indexend]
-
-	reverseditems := reverseArray(items)
-	for i, _ := range reverseditems {
-		sb.WriteString(reverseditems[i].itemtext)
+	
+	if !page.disablereverse {
+		items = reverseArray(items)
+	}
+	for i, _ := range items {
+		sb.WriteString(items[i].itemtext)
 	}
 	sb.WriteString(page.pageTitle())
 	return sb.String()
--