diff --git a/.gitignore b/.gitignore index beb0b8df5c..d166410f9b 100644 --- a/.gitignore +++ b/.gitignore @@ -56,10 +56,6 @@ packages/backend/assets/instance.css packages/backend/assets/sounds/None.mp3 packages/backend/assets/LICENSE -!/packages/backend/queue/processors/db -!/packages/backend/src/db -!/packages/backend/src/server/api/endpoints/drive/files - packages/megalodon/lib packages/megalodon/.idea diff --git a/packages/backend/src/misc/post.ts b/packages/backend/src/misc/post.ts index 0b107ed009..7089662168 100644 --- a/packages/backend/src/misc/post.ts +++ b/packages/backend/src/misc/post.ts @@ -1,3 +1,5 @@ +import { noteVisibilities } from "@/types.js"; + export type Post = { text: string | undefined; cw: string | null; @@ -12,7 +14,9 @@ export function parse(acct: any): Post { cw: acct.cw, localOnly: acct.localOnly, createdAt: new Date(acct.createdAt), - visibility: `hidden${acct.visibility || ""}`, + visibility: noteVisibilities.includes(acct.visibility) + ? acct.visibility + : "public", }; } diff --git a/packages/backend/src/queue/processors/db/import-firefish-post.ts b/packages/backend/src/queue/processors/db/import-firefish-post.ts index be412fc490..3678052cc3 100644 --- a/packages/backend/src/queue/processors/db/import-firefish-post.ts +++ b/packages/backend/src/queue/processors/db/import-firefish-post.ts @@ -74,22 +74,27 @@ export async function importCkPost( logger.info(`Note file updated`); } if (!note) { - note = await create(user, { - createdAt: createdAt, - files: files.length == 0 ? undefined : files, - poll: undefined, - text: text || undefined, - reply: post.replyId ? job.data.parent : null, - renote: post.renoteId ? job.data.parent : null, - cw: cw, - localOnly, - visibility: visibility, - visibleUsers: [], - channel: null, - apMentions: new Array(0), - apHashtags: undefined, - apEmojis: undefined, - }); + note = await create( + user, + { + createdAt: createdAt, + files: files.length == 0 ? undefined : files, + poll: undefined, + text: text || undefined, + reply: post.replyId ? job.data.parent : null, + renote: post.renoteId ? job.data.parent : null, + cw: cw, + localOnly, + visibility: visibility, + visibleUsers: [], + channel: null, + apMentions: new Array(0), + apHashtags: undefined, + apEmojis: undefined, + }, + false, + true, + ); logger.info(`Create new note`); } else { logger.info(`Note exist`); diff --git a/packages/backend/src/queue/processors/db/import-masto-post.ts b/packages/backend/src/queue/processors/db/import-masto-post.ts index d8f848d206..2f5695ac1c 100644 --- a/packages/backend/src/queue/processors/db/import-masto-post.ts +++ b/packages/backend/src/queue/processors/db/import-masto-post.ts @@ -100,24 +100,30 @@ export async function importMastoPost( logger.info(`Note file updated`); } if (!note) { - note = await create(user, { - createdAt: isRenote - ? new Date(post.published) - : new Date(post.object.published), - files: files.length == 0 ? undefined : files, - poll: undefined, - text: text || undefined, - reply, - renote, - cw: !isRenote && post.object.sensitive ? post.object.summary : undefined, - localOnly: false, - visibility: "hiddenpublic", - visibleUsers: [], - channel: null, - apMentions: new Array(0), - apHashtags: undefined, - apEmojis: undefined, - }); + note = await create( + user, + { + createdAt: isRenote + ? new Date(post.published) + : new Date(post.object.published), + files: files.length == 0 ? undefined : files, + poll: undefined, + text: text || undefined, + reply, + renote, + cw: + !isRenote && post.object.sensitive ? post.object.summary : undefined, + localOnly: false, + visibility: "public", + visibleUsers: [], + channel: null, + apMentions: new Array(0), + apHashtags: undefined, + apEmojis: undefined, + }, + false, + true, + ); logger.info(`Create new note`); } else { logger.info(`Note exist`); diff --git a/packages/backend/src/services/note/create.ts b/packages/backend/src/services/note/create.ts index 2135847a17..80e76616f4 100644 --- a/packages/backend/src/services/note/create.ts +++ b/packages/backend/src/services/note/create.ts @@ -174,11 +174,12 @@ export default async ( }, data: Option, silent = false, + dontFederateInitially = false, ) => // biome-ignore lint/suspicious/noAsyncPromiseExecutor: FIXME new Promise(async (res, rej) => { - const dontFederateInitially = - data.visibility?.startsWith("hidden") === true; + const dontFederateInitiallyFlag = + data.visibility === "hidden" ? true : dontFederateInitially; // 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.) @@ -212,8 +213,6 @@ 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.startsWith("hidden") && data.visibility !== "hidden") - data.visibility = data.visibility.slice(6); // enforce silent clients on server if ( @@ -476,7 +475,7 @@ export default async ( } } - if (!dontFederateInitially) { + if (!dontFederateInitiallyFlag) { let publishKey: string; let noteToPublish: Note; const relays = await getCachedRelays(); @@ -614,7 +613,7 @@ export default async ( }); //#region AP deliver - if (Users.isLocalUser(user) && !dontFederateInitially) { + if (Users.isLocalUser(user) && !dontFederateInitiallyFlag) { (async () => { const noteActivity = await renderNoteOrRenoteActivity(data, note); const dm = new DeliverManager(user, noteActivity);