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
|
package model
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ type Status struct {
|
||||||
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"`
|
||||||
|
@ -158,47 +158,54 @@ type MediaDimensions struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s Status) Display(noColor bool) string {
|
func (s Status) Display(noColor bool) string {
|
||||||
format := `
|
var builder strings.Builder
|
||||||
%s
|
|
||||||
|
|
||||||
%s
|
// The account information
|
||||||
%s
|
builder.WriteString(utilities.FullDisplayNameFormat(noColor, s.Account.DisplayName, s.Account.Acct) + "\n\n")
|
||||||
%s
|
|
||||||
%s
|
|
||||||
|
|
||||||
%s
|
// The content of the status.
|
||||||
%s
|
builder.WriteString(utilities.HeaderFormat(noColor, "CONTENT:"))
|
||||||
|
builder.WriteString(utilities.WrapLines(utilities.ConvertHTMLToText(s.Content), "\n ", 80))
|
||||||
|
|
||||||
%s
|
// If a poll exists in a status, write the contents to the builder.
|
||||||
Boosts: %d
|
if s.Poll != nil {
|
||||||
Likes: %d
|
for ind, option := range s.Poll.Options {
|
||||||
Replies: %d
|
builder.WriteString(
|
||||||
|
"\n\n " + strconv.Itoa(ind) + ". " + option.Title +
|
||||||
%s
|
"\n " + strings.Repeat("\u2580", 80) +
|
||||||
%s
|
"\n " + strconv.Itoa(option.VotesCount) + " votes",
|
||||||
|
|
||||||
%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,
|
|
||||||
)
|
)
|
||||||
|
}
|
||||||
|
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 {
|
type StatusList struct {
|
||||||
|
|
Loading…
Reference in a new issue