diff options
author | 2022-09-15 11:29:05 +0200 | |
---|---|---|
committer | 2022-09-15 11:29:05 +0200 | |
commit | 11493106734102e4011f85e231433623b73f9cce (patch) | |
tree | 83a60818c7b44cc25a3e89f42b22d8c0610d9458 /internal/typeutils/internaltoas.go | |
parent | [docs] Swagger document `/api/v1/custom_emojis` (#824) (diff) | |
download | gotosocial-11493106734102e4011f85e231433623b73f9cce.tar.xz |
[bugfix] Fix emojis, attachments, and mentions not being serialized correctly sometimes via AP (#829)v0.5.0-rc2
Diffstat (limited to 'internal/typeutils/internaltoas.go')
-rw-r--r-- | internal/typeutils/internaltoas.go | 41 |
1 files changed, 37 insertions, 4 deletions
diff --git a/internal/typeutils/internaltoas.go b/internal/typeutils/internaltoas.go index cf0e23ca6..6d8a22cab 100644 --- a/internal/typeutils/internaltoas.go +++ b/internal/typeutils/internaltoas.go @@ -430,7 +430,18 @@ func (c *converter) StatusToAS(ctx context.Context, s *gtsmodel.Status) (vocab.A tagProp := streams.NewActivityStreamsTagProperty() // tag -- mentions - for _, m := range s.Mentions { + mentions := s.Mentions + if len(s.MentionIDs) > len(mentions) { + mentions = []*gtsmodel.Mention{} + for _, mentionID := range s.MentionIDs { + mention, err := c.db.GetMention(ctx, mentionID) + if err != nil { + return nil, fmt.Errorf("StatusToAS: error getting mention %s from database: %s", mentionID, err) + } + mentions = append(mentions, mention) + } + } + for _, m := range mentions { asMention, err := c.MentionToAS(ctx, m) if err != nil { return nil, fmt.Errorf("StatusToAS: error converting mention to AS mention: %s", err) @@ -439,7 +450,18 @@ func (c *converter) StatusToAS(ctx context.Context, s *gtsmodel.Status) (vocab.A } // tag -- emojis - for _, emoji := range s.Emojis { + emojis := s.Emojis + if len(s.EmojiIDs) > len(emojis) { + emojis = []*gtsmodel.Emoji{} + for _, emojiID := range s.EmojiIDs { + emoji, err := c.db.GetEmojiByID(ctx, emojiID) + if err != nil { + return nil, fmt.Errorf("StatusToAS: error getting emoji %s from database: %s", emojiID, err) + } + emojis = append(emojis, emoji) + } + } + for _, emoji := range emojis { asMention, err := c.EmojiToAS(ctx, emoji) if err != nil { return nil, fmt.Errorf("StatusToAS: error converting emoji to AS emoji: %s", err) @@ -522,9 +544,20 @@ func (c *converter) StatusToAS(ctx context.Context, s *gtsmodel.Status) (vocab.A contentProp.AppendXMLSchemaString(s.Content) status.SetActivityStreamsContent(contentProp) - // attachment + // attachments attachmentProp := streams.NewActivityStreamsAttachmentProperty() - for _, a := range s.Attachments { + attachments := s.Attachments + if len(s.AttachmentIDs) > len(attachments) { + attachments = []*gtsmodel.MediaAttachment{} + for _, attachmentID := range s.AttachmentIDs { + attachment, err := c.db.GetAttachmentByID(ctx, attachmentID) + if err != nil { + return nil, fmt.Errorf("StatusToAS: error getting attachment %s from database: %s", attachmentID, err) + } + attachments = append(attachments, attachment) + } + } + for _, a := range attachments { doc, err := c.AttachmentToAS(ctx, a) if err != nil { return nil, fmt.Errorf("StatusToAS: error converting attachment: %s", err) |