summaryrefslogtreecommitdiff
path: root/src/services/drive/delete-file.ts
diff options
context:
space:
mode:
authorDW <36347199+chocological00@users.noreply.github.com>2020-05-16 11:49:46 -0400
committerGitHub <noreply@github.com>2020-05-17 00:49:46 +0900
commitf6cfa5cbb4b7a28f3fe2e1417d5ac0771f772e12 (patch)
tree5b1dac990de76bfc8b0a77b5d44cbcc09aef059c /src/services/drive/delete-file.ts
parentMerge branch 'develop' of https://github.com/syuilo/misskey into develop (diff)
downloadsharkey-f6cfa5cbb4b7a28f3fe2e1417d5ac0771f772e12.tar.gz
sharkey-f6cfa5cbb4b7a28f3fe2e1417d5ac0771f772e12.tar.bz2
sharkey-f6cfa5cbb4b7a28f3fe2e1417d5ac0771f772e12.zip
Fix CASCADE-related problems (#6374)
* Fix renotes remaining on remote when CASCADE is invoked * Fix CASCADE-invoked deletion not being federated to relays Co-authored-by: DW <chocological00@gitlab.com>
Diffstat (limited to 'src/services/drive/delete-file.ts')
-rw-r--r--src/services/drive/delete-file.ts8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/services/drive/delete-file.ts b/src/services/drive/delete-file.ts
index 5f691bd6b4..f9141ebaac 100644
--- a/src/services/drive/delete-file.ts
+++ b/src/services/drive/delete-file.ts
@@ -12,6 +12,8 @@ import renderDelete from '../../remote/activitypub/renderer/delete';
import renderTombstone from '../../remote/activitypub/renderer/tombstone';
import config from '../../config';
import { deliverToFollowers } from '../../remote/activitypub/deliver-manager';
+import { Brackets } from 'typeorm';
+import { deliverToRelays } from '../relay';
export async function deleteFile(file: DriveFile, isExpired = false) {
if (file.storedInternal) {
@@ -95,11 +97,13 @@ async function postProcess(file: DriveFile, isExpired = false) {
if (!Users.isLocalUser(cascadingNote.user)) continue;
const content = renderActivity(renderDelete(renderTombstone(`${config.url}/notes/${cascadingNote.id}`), cascadingNote.user));
deliverToFollowers(cascadingNote.user, content); // federate delete msg
+ deliverToRelays(cascadingNote.user, content);
}
if (!relatedNote.user) continue;
if (Users.isLocalUser(relatedNote.user)) {
const content = renderActivity(renderDelete(renderTombstone(`${config.url}/notes/${relatedNote.id}`), relatedNote.user));
deliverToFollowers(relatedNote.user, content);
+ deliverToRelays(relatedNote.user, content);
}
}
Notes.createQueryBuilder().delete()
@@ -145,6 +149,10 @@ async function findCascadingNotes(note: Note) {
const recursive = async (noteId: string) => {
const query = Notes.createQueryBuilder('note')
.where('note.replyId = :noteId', { noteId })
+ .orWhere(new Brackets(q => {
+ q.where('note.renoteId = :noteId', { noteId })
+ .andWhere('note.text IS NOT NULL');
+ }))
.leftJoinAndSelect('note.user', 'user');
const replies = await query.getMany();
for (const reply of replies) {