summaryrefslogtreecommitdiff
path: root/internal/api
diff options
context:
space:
mode:
Diffstat (limited to 'internal/api')
-rw-r--r--internal/api/client/statuses/statuscontext.go10
-rw-r--r--internal/api/model/status.go36
-rw-r--r--internal/api/model/statuscontext.go (renamed from internal/api/model/context.go)42
-rw-r--r--internal/api/util/opengraph.go2
4 files changed, 66 insertions, 24 deletions
diff --git a/internal/api/client/statuses/statuscontext.go b/internal/api/client/statuses/statuscontext.go
index 6441eb738..0eea50819 100644
--- a/internal/api/client/statuses/statuscontext.go
+++ b/internal/api/client/statuses/statuscontext.go
@@ -27,7 +27,7 @@ import (
"github.com/superseriousbusiness/gotosocial/internal/oauth"
)
-// StatusContextGETHandler swagger:operation GET /api/v1/statuses/{id}/context statusContext
+// StatusContextGETHandler swagger:operation GET /api/v1/statuses/{id}/context threadContext
//
// Return ancestors and descendants of the given status.
//
@@ -55,9 +55,9 @@ import (
// responses:
// '200':
// name: statuses
-// description: Status context object.
+// description: Thread context object.
// schema:
-// "$ref": "#/definitions/statusContext"
+// "$ref": "#/definitions/threadContext"
// '400':
// description: bad request
// '401':
@@ -89,11 +89,11 @@ func (m *Module) StatusContextGETHandler(c *gin.Context) {
return
}
- statusContext, errWithCode := m.processor.Status().ContextGet(c.Request.Context(), authed.Account, targetStatusID)
+ threadContext, errWithCode := m.processor.Status().ContextGet(c.Request.Context(), authed.Account, targetStatusID)
if errWithCode != nil {
apiutil.ErrorHandler(c, errWithCode, m.processor.InstanceGetV1)
return
}
- c.JSON(http.StatusOK, statusContext)
+ c.JSON(http.StatusOK, threadContext)
}
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
+}
diff --git a/internal/api/util/opengraph.go b/internal/api/util/opengraph.go
index 185dc8132..062151836 100644
--- a/internal/api/util/opengraph.go
+++ b/internal/api/util/opengraph.go
@@ -105,7 +105,7 @@ func (og *OGMeta) WithAccount(account *apimodel.Account) *OGMeta {
// WithStatus uses the given status to build an ogMeta
// struct specific to that status. It's suitable for serving
// at status pages.
-func (og *OGMeta) WithStatus(status *apimodel.Status) *OGMeta {
+func (og *OGMeta) WithStatus(status *apimodel.WebStatus) *OGMeta {
og.Title = "Post by " + AccountTitle(status.Account, og.SiteName)
og.Type = "article"
if status.Language != nil {