diff options
author | 2023-11-22 12:17:42 +0100 | |
---|---|---|
committer | 2023-11-22 12:17:42 +0100 | |
commit | 8c2d94c16853464828cbeba255cff2c69e96da78 (patch) | |
tree | 5a1ad19f206709f9347a9019618068eb06709f92 /internal/api/model | |
parent | [feature] Federate status language in and out (#2366) (diff) | |
download | gotosocial-8c2d94c16853464828cbeba255cff2c69e96da78.tar.xz |
[feature] Poll web view (#2377)
* [feature] Render polls nicely on the web view
* use figure for poll, other small tweaks
* reverse share + count (lines up better)
* poll options list entries
* fix up some remaining things
Diffstat (limited to 'internal/api/model')
-rw-r--r-- | internal/api/model/poll.go | 21 | ||||
-rw-r--r-- | internal/api/model/status.go | 11 |
2 files changed, 31 insertions, 1 deletions
diff --git a/internal/api/model/poll.go b/internal/api/model/poll.go index a9842e7a9..7eddb66ef 100644 --- a/internal/api/model/poll.go +++ b/internal/api/model/poll.go @@ -17,6 +17,8 @@ package model +import "github.com/superseriousbusiness/gotosocial/internal/language" + // Poll represents a poll attached to a status. // // swagger:model poll @@ -104,3 +106,22 @@ type PollVoteRequest struct { // indices. Can be strings or integers. ChoicesI []interface{} `json:"choices"` } + +// WebPollOption models a template-ready poll option entry. +// +// swagger:ignore +type WebPollOption struct { + PollOption + + // Emojis contained on parent poll. + Emojis []Emoji + + // LanguageTag of parent status. + LanguageTag *language.Language + + // Share of total votes as a percentage. + VoteShare float32 + + // String-formatted version of VoteShare. + VoteShareStr string +} diff --git a/internal/api/model/status.go b/internal/api/model/status.go index 1efae9cfc..5c54bfe96 100644 --- a/internal/api/model/status.go +++ b/internal/api/model/status.go @@ -105,8 +105,17 @@ type Status struct { // (used only internally for templating etc). // Template-ready language tag + string, based - // on *status.Language. Nil for non-web statuses + // on *status.Language. Nil for non-web statuses. + // + // swagger:ignore LanguageTag *language.Language `json:"-"` + + // Template-ready poll options with vote shares + // calculated as a percentage of total votes. + // Nil for non-web statuses. + // + // swagger:ignore + WebPollOptions []WebPollOption `json:"-"` } /* |