diff --git a/Iceshrimp.Backend/Controllers/Web/Renderers/UserRenderer.cs b/Iceshrimp.Backend/Controllers/Web/Renderers/UserRenderer.cs index dfe43eb4..89a4bfb3 100644 --- a/Iceshrimp.Backend/Controllers/Web/Renderers/UserRenderer.cs +++ b/Iceshrimp.Backend/Controllers/Web/Renderers/UserRenderer.cs @@ -20,6 +20,8 @@ public class UserRenderer(IOptions config, DatabaseConte var instanceName = user.IsLocalUser ? config.Value.AccountDomain : instance?.Name; var instanceIcon = user.IsLocalUser ? null : instance?.FaviconUrl; + var emojis = await GetEmojis([user]); + return new UserResponse { Id = user.Id, @@ -30,6 +32,7 @@ public class UserRenderer(IOptions config, DatabaseConte BannerUrl = user.BannerUrl, InstanceName = instanceName, InstanceIconUrl = instanceIcon, + Emojis = emojis, MovedTo = user.MovedToUri }; } @@ -47,6 +50,27 @@ public class UserRenderer(IOptions config, DatabaseConte return await userList.Select(p => RenderOne(p, data)).AwaitAllAsync(); } + private async Task> GetEmojis(IEnumerable users) + { + var ids = users.SelectMany(p => p.Emojis).ToList(); + if (ids.Count == 0) return []; + + return await db.Emojis + .Where(p => ids.Contains(p.Id)) + .Select(p => new EmojiResponse + { + Id = p.Id, + Name = p.Name, + Uri = p.Uri, + Aliases = p.Aliases, + Category = p.Category, + PublicUrl = p.PublicUrl, + License = p.License, + Sensitive = p.Sensitive + }) + .ToListAsync(); + } + public class UserRendererDto { public List? InstanceData; diff --git a/Iceshrimp.Frontend/Pages/Login.razor b/Iceshrimp.Frontend/Pages/Login.razor index 09798f37..fe685e6f 100644 --- a/Iceshrimp.Frontend/Pages/Login.razor +++ b/Iceshrimp.Frontend/Pages/Login.razor @@ -72,6 +72,7 @@ Token = res.Token!, Host = res.User.Host, IsAdmin = res.IsAdmin ?? false, + Emojis = res.User.Emojis, MovedTo = res.User.MovedTo }); SessionService.SetSession(res.User.Id); diff --git a/Iceshrimp.Shared/Schemas/Web/UserResponse.cs b/Iceshrimp.Shared/Schemas/Web/UserResponse.cs index 2c12a43a..e0786e50 100644 --- a/Iceshrimp.Shared/Schemas/Web/UserResponse.cs +++ b/Iceshrimp.Shared/Schemas/Web/UserResponse.cs @@ -14,5 +14,7 @@ public class UserResponse public required string? InstanceName { get; set; } public required string? InstanceIconUrl { get; set; } + public List Emojis { get; set; } = []; + [JI(Condition = WhenWritingNull)] public string? MovedTo { get; set; } } \ No newline at end of file