fix: correctly show reposted statuses

Correctly show when a status is actually a reposted status in the
timelines. The ID and created time of the original status is now
displayed instead of the reposted status.
This commit is contained in:
Dan Anglin 2024-05-27 01:05:31 +01:00
parent b89c0358f4
commit 68ce6eed1d
Signed by: dananglin
GPG key ID: 0C1D44CFBEE68638
2 changed files with 41 additions and 31 deletions

View file

@ -8,35 +8,35 @@ import (
) )
type Status struct { type Status struct {
Account Account `json:"account"` Account Account `json:"account"`
Application Application `json:"application"` Application Application `json:"application"`
Bookmarked bool `json:"bookmarked"` Bookmarked bool `json:"bookmarked"`
Card Card `json:"card"` Card Card `json:"card"`
Content string `json:"content"` Content string `json:"content"`
CreatedAt time.Time `json:"created_at"` CreatedAt time.Time `json:"created_at"`
Emojis []Emoji `json:"emojis"` Emojis []Emoji `json:"emojis"`
Favourited bool `json:"favourited"` Favourited bool `json:"favourited"`
FavouritesCount int `json:"favourites_count"` FavouritesCount int `json:"favourites_count"`
ID string `json:"id"` ID string `json:"id"`
InReplyToAccountID string `json:"in_reply_to_account_id"` InReplyToAccountID string `json:"in_reply_to_account_id"`
InReplyToID string `json:"in_reply_to_id"` InReplyToID string `json:"in_reply_to_id"`
Language string `json:"language"` Language string `json:"language"`
MediaAttachments []Attachment `json:"media_attachments"` MediaAttachments []Attachment `json:"media_attachments"`
Mentions []Mention `json:"mentions"` Mentions []Mention `json:"mentions"`
Muted bool `json:"muted"` Muted bool `json:"muted"`
Pinned bool `json:"pinned"` Pinned bool `json:"pinned"`
Poll Poll `json:"poll"` Poll Poll `json:"poll"`
Reblog StatusReblogged `json:"reblog"` Reblog *StatusReblogged `json:"reblog"`
Reblogged bool `json:"reblogged"` Reblogged bool `json:"reblogged"`
ReblogsCount int `json:"reblogs_count"` ReblogsCount int `json:"reblogs_count"`
RepliesCount int `json:"replies_count"` RepliesCount int `json:"replies_count"`
Sensitive bool `json:"sensitive"` Sensitive bool `json:"sensitive"`
SpolierText string `json:"spoiler_text"` SpolierText string `json:"spoiler_text"`
Tags []Tag `json:"tags"` Tags []Tag `json:"tags"`
Text string `json:"text"` Text string `json:"text"`
URI string `json:"uri"` URI string `json:"uri"`
URL string `json:"url"` URL string `json:"url"`
Visibility string `json:"visibility"` Visibility string `json:"visibility"`
} }
type Card struct { type Card struct {

View file

@ -19,9 +19,19 @@ func (t Timeline) String() string {
builder.WriteString(utilities.HeaderFormat(t.Name) + "\n\n") builder.WriteString(utilities.HeaderFormat(t.Name) + "\n\n")
for _, status := range t.Statuses { for _, status := range t.Statuses {
builder.WriteString(utilities.DisplayNameFormat(status.Account.DisplayName) + " (@" + status.Account.Username + ")\n") builder.WriteString(utilities.DisplayNameFormat(status.Account.DisplayName) + " (@" + status.Account.Acct + ")\n")
statusID := status.ID
createdAt := status.CreatedAt
if status.Reblog != nil {
builder.WriteString("reposted this status from " + utilities.DisplayNameFormat(status.Reblog.Account.DisplayName) + " (@" + status.Reblog.Account.Acct + ")\n")
statusID = status.Reblog.ID
createdAt = status.Reblog.CreatedAt
}
builder.WriteString(utilities.WrapLines(utilities.StripHTMLTags(status.Content), "\n", 80) + "\n\n") builder.WriteString(utilities.WrapLines(utilities.StripHTMLTags(status.Content), "\n", 80) + "\n\n")
builder.WriteString(utilities.FieldFormat("ID:") + " " + status.ID + "\t" + utilities.FieldFormat("Created at:") + " " + utilities.FormatTime(status.CreatedAt) + "\n") builder.WriteString(utilities.FieldFormat("ID:") + " " + statusID + "\t" + utilities.FieldFormat("Created at:") + " " + utilities.FormatTime(createdAt) + "\n")
builder.WriteString(separator + "\n") builder.WriteString(separator + "\n")
} }