checkpoint: draw poll contents in status if poll exists
This commit is contained in:
parent
ac2e74cac3
commit
8e59ecf697
1 changed files with 43 additions and 36 deletions
|
@ -5,7 +5,7 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
|
@ -30,7 +30,7 @@ type Status struct {
|
|||
Mentions []Mention `json:"mentions"`
|
||||
Muted bool `json:"muted"`
|
||||
Pinned bool `json:"pinned"`
|
||||
Poll Poll `json:"poll"`
|
||||
Poll *Poll `json:"poll"`
|
||||
Reblog *StatusReblogged `json:"reblog"`
|
||||
Reblogged bool `json:"reblogged"`
|
||||
ReblogsCount int `json:"reblogs_count"`
|
||||
|
@ -158,47 +158,54 @@ type MediaDimensions struct {
|
|||
}
|
||||
|
||||
func (s Status) Display(noColor bool) string {
|
||||
format := `
|
||||
%s
|
||||
var builder strings.Builder
|
||||
|
||||
%s
|
||||
%s
|
||||
%s
|
||||
%s
|
||||
// The account information
|
||||
builder.WriteString(utilities.FullDisplayNameFormat(noColor, s.Account.DisplayName, s.Account.Acct) + "\n\n")
|
||||
|
||||
%s
|
||||
%s
|
||||
// The content of the status.
|
||||
builder.WriteString(utilities.HeaderFormat(noColor, "CONTENT:"))
|
||||
builder.WriteString(utilities.WrapLines(utilities.ConvertHTMLToText(s.Content), "\n ", 80))
|
||||
|
||||
%s
|
||||
Boosts: %d
|
||||
Likes: %d
|
||||
Replies: %d
|
||||
|
||||
%s
|
||||
%s
|
||||
|
||||
%s
|
||||
%s
|
||||
`
|
||||
|
||||
return fmt.Sprintf(
|
||||
format,
|
||||
utilities.FullDisplayNameFormat(noColor, s.Account.DisplayName, s.Account.Acct),
|
||||
utilities.HeaderFormat(noColor, "CONTENT:"),
|
||||
utilities.WrapLines(utilities.ConvertHTMLToText(s.Content), "\n ", 80),
|
||||
utilities.HeaderFormat(noColor, "STATUS ID:"),
|
||||
s.ID,
|
||||
utilities.HeaderFormat(noColor, "CREATED AT:"),
|
||||
utilities.FormatTime(s.CreatedAt),
|
||||
utilities.HeaderFormat(noColor, "STATS:"),
|
||||
s.ReblogsCount,
|
||||
s.FavouritesCount,
|
||||
s.RepliesCount,
|
||||
utilities.HeaderFormat(noColor, "VISIBILITY:"),
|
||||
s.Visibility,
|
||||
utilities.HeaderFormat(noColor, "URL:"),
|
||||
s.URL,
|
||||
// If a poll exists in a status, write the contents to the builder.
|
||||
if s.Poll != nil {
|
||||
for ind, option := range s.Poll.Options {
|
||||
builder.WriteString(
|
||||
"\n\n " + strconv.Itoa(ind) + ". " + option.Title +
|
||||
"\n " + strings.Repeat("\u2580", 80) +
|
||||
"\n " + strconv.Itoa(option.VotesCount) + " votes",
|
||||
)
|
||||
}
|
||||
builder.WriteString("\n")
|
||||
}
|
||||
|
||||
// The ID of the status
|
||||
builder.WriteString("\n" + utilities.HeaderFormat(noColor, "STATUS ID:") + "\n " + s.ID)
|
||||
|
||||
// The ID of the poll if it exists
|
||||
if s.Poll != nil {
|
||||
builder.WriteString("\n\n" + utilities.HeaderFormat(noColor, "POLL ID:") + "\n " + s.Poll.ID)
|
||||
}
|
||||
|
||||
// Status creation time
|
||||
builder.WriteString("\n\n" + utilities.HeaderFormat(noColor, "CREATED AT:") + "\n " + utilities.FormatTime(s.CreatedAt))
|
||||
|
||||
// Status stats
|
||||
builder.WriteString(
|
||||
"\n\n" +
|
||||
utilities.HeaderFormat(noColor, "STATS:") +
|
||||
"\n " + utilities.FieldFormat(noColor, "Boosts: ") + strconv.Itoa(s.ReblogsCount) +
|
||||
"\n " + utilities.FieldFormat(noColor, "Likes: ") + strconv.Itoa(s.FavouritesCount) +
|
||||
"\n " + utilities.FieldFormat(noColor, "Replies: ") + strconv.Itoa(s.RepliesCount),
|
||||
)
|
||||
|
||||
// Status visibility
|
||||
builder.WriteString("\n\n" + utilities.HeaderFormat(noColor, "VISIBILITY:") + "\n " + s.Visibility.String())
|
||||
|
||||
// Status URL
|
||||
builder.WriteString("\n\n" + utilities.HeaderFormat(noColor, "URL:") + "\n " + s.URL)
|
||||
|
||||
return builder.String()
|
||||
}
|
||||
|
||||
type StatusList struct {
|
||||
|
|
Loading…
Reference in a new issue