From 98fe5b3a544875a4a999e76477a7e7107bfaa744 Mon Sep 17 00:00:00 2001 From: Laura Hausmann Date: Sat, 7 Oct 2023 17:34:22 +0200 Subject: [PATCH] [mastodon-client] Prevent duplicate reblogs --- packages/backend/src/server/api/mastodon/helpers/note.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/backend/src/server/api/mastodon/helpers/note.ts b/packages/backend/src/server/api/mastodon/helpers/note.ts index 17dc5f662..6ceac6817 100644 --- a/packages/backend/src/server/api/mastodon/helpers/note.ts +++ b/packages/backend/src/server/api/mastodon/helpers/note.ts @@ -29,6 +29,7 @@ import { MastoApiError } from "@/server/api/mastodon/middleware/catch-errors.js" import { Cache } from "@/misc/cache.js"; import AsyncLock from "async-lock"; import { IdentifiableError } from "@/misc/identifiable-error.js"; +import { IsNull } from "typeorm"; export class NoteHelpers { public static postIdempotencyCache = new Cache<{ status?: MastodonEntity.Status }>('postIdempotencyCache', 60 * 60); @@ -59,6 +60,12 @@ export class NoteHelpers { } public static async reblogNote(note: Note, user: ILocalUser): Promise { + const existingRenote = await Notes.findOneBy({ + userId: user.id, + renoteId: note.id, + text: IsNull(), + }); + if (existingRenote) return existingRenote; const data = { createdAt: new Date(), files: [],