[backend/federation] Don't register misskey reactions as likes

This commit is contained in:
Laura Hausmann 2024-04-17 00:09:46 +02:00
parent 40296b02f0
commit 7529ebea72
No known key found for this signature in database
GPG key ID: D044E84C5BE01605
2 changed files with 10 additions and 8 deletions

View file

@ -145,9 +145,10 @@ public class ActivityHandlerService(
await UnfollowAsync(followee, resolvedActor); await UnfollowAsync(followee, resolvedActor);
return; return;
case ASLike { Object: ASNote note } like: case ASLike { Object: ASNote note } like:
var dbNote = await noteSvc.UnlikeNoteAsync(note, resolvedActor);
if (like.MisskeyReaction != null) if (like.MisskeyReaction != null)
await noteSvc.RemoveReactionFromNoteAsync(dbNote, resolvedActor, like.MisskeyReaction); await noteSvc.RemoveReactionFromNoteAsync(note, resolvedActor, like.MisskeyReaction);
else
await noteSvc.UnlikeNoteAsync(note, resolvedActor);
return; return;
case ASAnnounce { Object: ASNote note }: case ASAnnounce { Object: ASNote note }:
await noteSvc.UndoAnnounceAsync(note, resolvedActor); await noteSvc.UndoAnnounceAsync(note, resolvedActor);
@ -167,12 +168,15 @@ public class ActivityHandlerService(
{ {
if (activity.Object is not ASNote note) if (activity.Object is not ASNote note)
throw GracefulException.UnprocessableEntity("Like activity object is invalid"); throw GracefulException.UnprocessableEntity("Like activity object is invalid");
var dbNote = await noteSvc.LikeNoteAsync(note, resolvedActor);
if (like.MisskeyReaction != null) if (like.MisskeyReaction != null)
{ {
await emojiSvc.ProcessEmojiAsync(like.Tags?.OfType<ASEmoji>().ToList(), resolvedActor.Host); await emojiSvc.ProcessEmojiAsync(like.Tags?.OfType<ASEmoji>().ToList(), resolvedActor.Host);
await noteSvc.ReactToNoteAsync(dbNote, resolvedActor, like.MisskeyReaction); await noteSvc.ReactToNoteAsync(note, resolvedActor, like.MisskeyReaction);
}
else
{
await noteSvc.LikeNoteAsync(note, resolvedActor);
} }
return; return;

View file

@ -1135,18 +1135,16 @@ public class NoteService(
return true; return true;
} }
public async Task<Note> LikeNoteAsync(ASNote note, User actor) public async Task LikeNoteAsync(ASNote note, User actor)
{ {
var dbNote = await ResolveNoteAsync(note) ?? throw new Exception("Cannot register like for unknown note"); var dbNote = await ResolveNoteAsync(note) ?? throw new Exception("Cannot register like for unknown note");
await LikeNoteAsync(dbNote, actor); await LikeNoteAsync(dbNote, actor);
return dbNote;
} }
public async Task<Note> UnlikeNoteAsync(ASNote note, User user) public async Task UnlikeNoteAsync(ASNote note, User user)
{ {
var dbNote = await ResolveNoteAsync(note) ?? throw new Exception("Cannot unregister like for unknown note"); var dbNote = await ResolveNoteAsync(note) ?? throw new Exception("Cannot unregister like for unknown note");
await UnlikeNoteAsync(dbNote, user); await UnlikeNoteAsync(dbNote, user);
return dbNote;
} }
public async Task BookmarkNoteAsync(Note note, User user) public async Task BookmarkNoteAsync(Note note, User user)