From 8c2d94c16853464828cbeba255cff2c69e96da78 Mon Sep 17 00:00:00 2001 From: tobi <31960611+tsmethurst@users.noreply.github.com> Date: Wed, 22 Nov 2023 12:17:42 +0100 Subject: [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 --- internal/api/model/poll.go | 21 +++++++++++++++++++++ internal/api/model/status.go | 11 ++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) (limited to 'internal/api') 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:"-"` } /* -- cgit v1.2.3