diff --git a/packages/backend/src/services/note/create.ts b/packages/backend/src/services/note/create.ts index f2ccdca22..5259a57c0 100644 --- a/packages/backend/src/services/note/create.ts +++ b/packages/backend/src/services/note/create.ts @@ -170,6 +170,8 @@ export default async ( ) => // rome-ignore lint/suspicious/noAsyncPromiseExecutor: FIXME new Promise(async (res, rej) => { + const dontFederateInitially = data.localOnly || data.visibility === "hidden"; + // If you reply outside the channel, match the scope of the target. // TODO (I think it's a process that could be done on the client side, but it's server side for now.) if ( @@ -196,6 +198,7 @@ export default async ( if (data.channel != null) data.visibility = "public"; if (data.channel != null) data.visibleUsers = []; if (data.channel != null) data.localOnly = true; + if (data.visibility === "hidden") data.visibility = "public"; // enforce silent clients on server if ( @@ -546,7 +549,7 @@ export default async ( }); //#region AP deliver - if (Users.isLocalUser(user)) { + if (Users.isLocalUser(user) && !dontFederateInitially) { (async () => { const noteActivity = await renderNoteOrRenoteActivity(data, note); const dm = new DeliverManager(user, noteActivity);