diff --git a/Iceshrimp.Backend/Controllers/Mastodon/AccountController.cs b/Iceshrimp.Backend/Controllers/Mastodon/AccountController.cs index b467dae5..a5faca73 100644 --- a/Iceshrimp.Backend/Controllers/Mastodon/AccountController.cs +++ b/Iceshrimp.Backend/Controllers/Mastodon/AccountController.cs @@ -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); diff --git a/Iceshrimp.Backend/Core/Services/UserService.cs b/Iceshrimp.Backend/Core/Services/UserService.cs index 02d18754..40ad0421 100644 --- a/Iceshrimp.Backend/Core/Services/UserService.cs +++ b/Iceshrimp.Backend/Core/Services/UserService.cs @@ -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();