[feature] Show + federate emojis in accounts (#837)

* Start adding account emoji

* get emojis serialized + deserialized nicely

* update tests

* set / retrieve emojis on accounts

* show account emojis in web view

* fetch emojis from db based on ids

* fix typo in test

* lint

* fix pg migration

* update tests

* update emoji checking logic

* update comment

* clarify comments + add some spacing

* tidy up loops a lil (thanks kim)
This commit is contained in:
tobi
2022-09-26 11:56:01 +02:00
committed by GitHub
parent 15a67b7bef
commit c4a08292ee
34 changed files with 934 additions and 127 deletions

View File

@ -159,8 +159,29 @@ func (c *converter) AccountToAPIAccountPublic(ctx context.Context, a *gtsmodel.A
fields = append(fields, mField)
}
// account emojis
emojis := []model.Emoji{}
// TODO: account emojis
gtsEmojis := a.Emojis
if len(a.EmojiIDs) > len(gtsEmojis) {
gtsEmojis = []*gtsmodel.Emoji{}
for _, emojiID := range a.EmojiIDs {
emoji, err := c.db.GetEmojiByID(ctx, emojiID)
if err != nil {
return nil, fmt.Errorf("AccountToAPIAccountPublic: error getting emoji %s from database: %s", emojiID, err)
}
gtsEmojis = append(gtsEmojis, emoji)
}
}
for _, emoji := range gtsEmojis {
if *emoji.Disabled {
continue
}
apiEmoji, err := c.EmojiToAPIEmoji(ctx, emoji)
if err != nil {
return nil, fmt.Errorf("AccountToAPIAccountPublic: error converting emoji to api emoji: %s", err)
}
emojis = append(emojis, apiEmoji)
}
var acct string
if a.Domain != "" {
@ -194,7 +215,7 @@ func (c *converter) AccountToAPIAccountPublic(ctx context.Context, a *gtsmodel.A
FollowingCount: followingCount,
StatusesCount: statusesCount,
LastStatusAt: lastStatusAt,
Emojis: emojis, // TODO: implement this
Emojis: emojis,
Fields: fields,
Suspended: suspended,
CustomCSS: a.CustomCSS,