From 19af2d7a7ba3b582fd321bd202701d07d2e12f03 Mon Sep 17 00:00:00 2001 From: syuilo Date: Tue, 23 Oct 2018 07:04:00 +0900 Subject: Implement #2983 --- src/services/note/create.ts | 13 ++++++++++++- src/services/note/delete.ts | 12 ++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) (limited to 'src/services') diff --git a/src/services/note/create.ts b/src/services/note/create.ts index ac6cc8651d..401543b48a 100644 --- a/src/services/note/create.ts +++ b/src/services/note/create.ts @@ -8,7 +8,7 @@ import renderNote from '../../remote/activitypub/renderer/note'; import renderCreate from '../../remote/activitypub/renderer/create'; import renderAnnounce from '../../remote/activitypub/renderer/announce'; import packAp from '../../remote/activitypub/renderer'; -import { IDriveFile } from '../../models/drive-file'; +import DriveFile, { IDriveFile } from '../../models/drive-file'; import notify from '../../notify'; import NoteWatching from '../../models/note-watching'; import watch from './watch'; @@ -173,6 +173,17 @@ export default async (user: IUser, data: Option, silent = false) => new Promise< // ハッシュタグ登録 tags.map(tag => registerHashtag(user, tag)); + // ファイルが添付されていた場合ドライブのファイルの「このファイルが添付された投稿一覧」プロパティにこの投稿を追加 + if (data.files) { + data.files.forEach(file => { + DriveFile.update({ _id: file._id }, { + $push: { + 'metadata.attachedNoteIds': note._id + } + }); + }); + } + // Increment notes count incNotesCount(user); diff --git a/src/services/note/delete.ts b/src/services/note/delete.ts index d86ca6e506..599525ac8c 100644 --- a/src/services/note/delete.ts +++ b/src/services/note/delete.ts @@ -11,6 +11,7 @@ import perUserNotesChart from '../../chart/per-user-notes'; import config from '../../config'; import NoteUnread from '../../models/note-unread'; import read from './read'; +import DriveFile from '../../models/drive-file'; /** * 投稿を削除します。 @@ -48,6 +49,17 @@ export default async function(user: IUser, note: INote) { }); }); + // ファイルが添付されていた場合ドライブのファイルの「このファイルが添付された投稿一覧」プロパティからこの投稿を削除 + if (note.fileIds) { + note.fileIds.forEach(fileId => { + DriveFile.update({ _id: fileId }, { + $pull: { + 'metadata.attachedNoteIds': note._id + } + }); + }); + } + //#region ローカルの投稿なら削除アクティビティを配送 if (isLocalUser(user)) { const content = pack(renderDelete(renderTombstone(`${config.url}/notes/${note._id}`), user)); -- cgit v1.2.3-freya