From 12bec02cfd607f7a842eff097c78fb33d301391c Mon Sep 17 00:00:00 2001 From: Laura Hausmann Date: Mon, 11 Mar 2024 02:41:11 +0100 Subject: [PATCH] [backend/core] Reject like/bookmark/pin/react actions for puree renotes (ISH-167) --- Iceshrimp.Backend/Core/Services/NoteService.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Iceshrimp.Backend/Core/Services/NoteService.cs b/Iceshrimp.Backend/Core/Services/NoteService.cs index 85ef5e7f..9e8956ae 100644 --- a/Iceshrimp.Backend/Core/Services/NoteService.cs +++ b/Iceshrimp.Backend/Core/Services/NoteService.cs @@ -985,6 +985,9 @@ public class NoteService( public async Task LikeNoteAsync(Note note, User user) { + if (note.IsPureRenote) + throw GracefulException.BadRequest("Cannot like a pure renote"); + if (!await db.NoteLikes.AnyAsync(p => p.Note == note && p.User == user)) { var like = new NoteLike @@ -1054,6 +1057,9 @@ public class NoteService( { if (user.Host != null) throw new Exception("This method is only valid for local users"); + if (note.IsPureRenote) + throw GracefulException.BadRequest("Cannot bookmark a pure renote"); + if (!await db.NoteBookmarks.AnyAsync(p => p.Note == note && p.User == user)) { var bookmark = new NoteBookmark @@ -1077,6 +1083,8 @@ public class NoteService( { if (user.Host != null) throw new Exception("This method is only valid for local users"); + if (note.IsPureRenote) + throw GracefulException.BadRequest("Cannot pin a pure renote"); if (note.User != user) throw GracefulException.UnprocessableEntity("Validation failed: Someone else's post cannot be pinned"); @@ -1150,6 +1158,9 @@ public class NoteService( public async Task ReactToNoteAsync(Note note, User user, string name) { + if (note.IsPureRenote) + throw GracefulException.BadRequest("Cannot react to a pure renote"); + name = await emojiSvc.ResolveEmojiName(name, user.Host); if (await db.NoteReactions.AnyAsync(p => p.Note == note && p.User == user && p.Reaction == name)) return null;