summaryrefslogtreecommitdiff
path: root/internal/typeutils/internaltofrontend.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/typeutils/internaltofrontend.go')
-rw-r--r--internal/typeutils/internaltofrontend.go39
1 files changed, 39 insertions, 0 deletions
diff --git a/internal/typeutils/internaltofrontend.go b/internal/typeutils/internaltofrontend.go
index 91c9fea8a..2c662c3bd 100644
--- a/internal/typeutils/internaltofrontend.go
+++ b/internal/typeutils/internaltofrontend.go
@@ -1217,6 +1217,45 @@ func (c *Converter) StatusToWebStatus(
// Mark local.
webStatus.Local = *s.Local
+ // Get edit history for this
+ // status, if it's been edited.
+ if webStatus.EditedAt != nil {
+ // Make sure edits are populated.
+ if len(s.Edits) != len(s.EditIDs) {
+ s.Edits, err = c.state.DB.GetStatusEditsByIDs(ctx, s.EditIDs)
+ if err != nil && !errors.Is(err, db.ErrNoEntries) {
+ err := gtserror.Newf("db error getting status edits: %w", err)
+ return nil, err
+ }
+ }
+
+ // Include each historical entry
+ // (this includes the created date).
+ for _, edit := range s.Edits {
+ webStatus.EditTimeline = append(
+ webStatus.EditTimeline,
+ util.FormatISO8601(edit.CreatedAt),
+ )
+ }
+
+ // Make sure to include latest revision.
+ webStatus.EditTimeline = append(
+ webStatus.EditTimeline,
+ *webStatus.EditedAt,
+ )
+
+ // Sort the slice so it goes from
+ // newest -> oldest, like a timeline.
+ //
+ // It'll look something like:
+ //
+ // - edit3 date (ie., latest version)
+ // - edit2 date (if we have it)
+ // - edit1 date (if we have it)
+ // - created date
+ slices.Reverse(webStatus.EditTimeline)
+ }
+
// Set additional templating
// variables on media attachments.