diff options
author | 2024-07-12 20:36:03 +0200 | |
---|---|---|
committer | 2024-07-12 20:36:03 +0200 | |
commit | aeb65bceae97611b8931de2e954df18afedd812f (patch) | |
tree | 74e6f7ecb86c8affcfef99994cbf21d9133a2b56 /internal/api/model | |
parent | [feature] support processing of (many) more media types (#3090) (diff) | |
download | gotosocial-aeb65bceae97611b8931de2e954df18afedd812f.tar.xz |
[feature/frontend] Better visual separation between "main" thread and "replies" (#3093)
* [feature/frontend] Better web threading model
* fix test
* bwap
* tweaks
* more tweaks to wording
* typo
* indenting
* adjust wording
* aaa
Diffstat (limited to 'internal/api/model')
-rw-r--r-- | internal/api/model/status.go | 36 | ||||
-rw-r--r-- | internal/api/model/statuscontext.go (renamed from internal/api/model/context.go) | 42 |
2 files changed, 60 insertions, 18 deletions
diff --git a/internal/api/model/status.go b/internal/api/model/status.go index 0d925d211..00be868f1 100644 --- a/internal/api/model/status.go +++ b/internal/api/model/status.go @@ -102,28 +102,34 @@ type Status struct { Text string `json:"text,omitempty"` // A list of filters that matched this status and why they matched, if there are any such filters. Filtered []FilterResult `json:"filtered,omitempty"` +} - // Additional fields not exposed via JSON - // (used only internally for templating etc). +// WebStatus is like *model.Status, but contains +// additional fields used only for HTML templating. +// +// swagger:ignore +type WebStatus struct { + *Status - // Template-ready language tag + string, based - // on *status.Language. Nil for non-web statuses. - // - // swagger:ignore - LanguageTag *language.Language `json:"-"` + // Template-ready language tag and + // string, based on *status.Language. + LanguageTag *language.Language // Template-ready poll options with vote shares // calculated as a percentage of total votes. - // Nil for non-web statuses. - // - // swagger:ignore - WebPollOptions []WebPollOption `json:"-"` + PollOptions []WebPollOption // Status is from a local account. - // Always false for non-web statuses. - // - // swagger:ignore - Local bool `json:"-"` + Local bool + + // Level of indentation at which to + // display this status in the web view. + Indent int + + // This status is the first status after + // the "main" thread, so it and everything + // below it can be considered "replies". + ThreadFirstReply bool } /* diff --git a/internal/api/model/context.go b/internal/api/model/statuscontext.go index 69bbc6345..205672dc8 100644 --- a/internal/api/model/context.go +++ b/internal/api/model/statuscontext.go @@ -17,12 +17,48 @@ package model -// Context models the tree around a given status. +// ThreadContext models the tree or +// "thread" around a given status. // -// swagger:model statusContext -type Context struct { +// swagger:model threadContext +type ThreadContext struct { // Parents in the thread. Ancestors []Status `json:"ancestors"` // Children in the thread. Descendants []Status `json:"descendants"` } + +type WebThreadContext struct { + // Parents in the thread. + Ancestors []*WebStatus `json:"ancestors"` + + // Children in the thread. + Descendants []*WebStatus `json:"descendants"` + + // The status around which the ancestors + // + descendants context was constructed. + Status *WebStatus `json:"-"` + + // Total length of + // the main thread. + ThreadLength int + + // Number of entries in + // the main thread shown. + ThreadShown int + + // Number of statuses hidden + // from the main thread (not + // visible to requester etc). + ThreadHidden int + + // Total number of replies + // in the replies section. + ThreadReplies int + + // Number of replies shown. + ThreadRepliesShown int + + // Number of replies hidden. + ThreadRepliesHidden int +} |