[backend/masto-client] Parse emoji in display name & fields on local user update (ISH-296)

This commit is contained in:
Laura Hausmann 2024-04-29 00:36:07 +02:00
parent a75fcfa43b
commit fb6e0cf9f3
No known key found for this signature in database
GPG key ID: D044E84C5BE01605
2 changed files with 22 additions and 10 deletions

View file

@ -30,8 +30,7 @@ public class AccountController(
NoteRenderer noteRenderer,
UserService userSvc,
ActivityPub.UserResolver userResolver,
DriveService driveSvc,
EmojiService emojiSvc
DriveService driveSvc
) : ControllerBase
{
[HttpGet("verify_credentials")]
@ -118,14 +117,6 @@ public class AccountController(
user.BannerUrl = banner.Url;
}
user.Emojis = [];
if (user.UserProfile.Description != null)
{
var nodes = MfmParser.Parse(user.UserProfile.Description);
user.Emojis = (await emojiSvc.ResolveEmoji(nodes)).Select(p => p.Id).ToList();
}
user = await userSvc.UpdateLocalUserAsync(user, prevAvatarId, prevBannerId);
var res = await userRenderer.RenderAsync(user, user.UserProfile, source: true);

View file

@ -316,6 +316,27 @@ public class UserService(
user.Tags = ResolveHashtags(user.UserProfile.Description);
user.Emojis = [];
if (user.UserProfile.Description != null)
{
var nodes = MfmParser.Parse(user.UserProfile.Description);
user.Emojis.AddRange((await emojiSvc.ResolveEmoji(nodes)).Select(p => p.Id).ToList());
}
if (user.DisplayName != null)
{
var nodes = MfmParser.Parse(user.DisplayName);
user.Emojis.AddRange((await emojiSvc.ResolveEmoji(nodes)).Select(p => p.Id).ToList());
}
if (user.UserProfile.Fields.Length != 0)
{
var input = user.UserProfile.Fields.Select(p => $"{p.Name} {p.Value}");
var nodes = MfmParser.Parse(string.Join('\n', input));
user.Emojis.AddRange((await emojiSvc.ResolveEmoji(nodes)).Select(p => p.Id).ToList());
}
db.Update(user);
db.Update(user.UserProfile);
await db.SaveChangesAsync();