diff --git a/Iceshrimp.Backend/Controllers/Web/EmojiController.cs b/Iceshrimp.Backend/Controllers/Web/EmojiController.cs index efe30d7b..45872faa 100644 --- a/Iceshrimp.Backend/Controllers/Web/EmojiController.cs +++ b/Iceshrimp.Backend/Controllers/Web/EmojiController.cs @@ -206,7 +206,7 @@ public class EmojiController( [Authorize("role:moderator")] [Consumes(MediaTypeNames.Application.Json)] [ProducesResults(HttpStatusCode.OK)] - [ProducesErrors(HttpStatusCode.NotFound)] + [ProducesErrors(HttpStatusCode.BadRequest, HttpStatusCode.NotFound)] public async Task UpdateEmoji(string id, UpdateEmojiRequest request) { var emoji = await emojiSvc.UpdateLocalEmojiAsync(id, request.Name, request.Tags, request.Category, diff --git a/Iceshrimp.Backend/Core/Services/EmojiService.cs b/Iceshrimp.Backend/Core/Services/EmojiService.cs index 882300cd..53fdf2ad 100644 --- a/Iceshrimp.Backend/Core/Services/EmojiService.cs +++ b/Iceshrimp.Backend/Core/Services/EmojiService.cs @@ -229,7 +229,19 @@ public partial class EmojiService( { var emoji = await db.Emojis.FirstOrDefaultAsync(p => p.Id == id); if (emoji == null) return null; - if (emoji.Host != null) return null; + + if (emoji.Host != null) + { + // Only allow changing remote emoji sensitive status + if (!sensitive.HasValue) + throw GracefulException.BadRequest("Only sensitive can be updated on remote emojis"); + + emoji.Sensitive = sensitive.Value; + emoji.UpdatedAt = DateTime.UtcNow; + await db.SaveChangesAsync(); + + return emoji; + } emoji.UpdatedAt = DateTime.UtcNow;