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()
--
⑨