mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-06 22:15:48 +01:00
feat: deleting a user upload dissociates from posts, and vice versa
This commit is contained in:
@@ -9,6 +9,7 @@ const validator = require('validator');
|
||||
|
||||
const db = require('../database');
|
||||
const image = require('../image');
|
||||
const user = require('../user');
|
||||
const topics = require('../topics');
|
||||
const file = require('../file');
|
||||
const meta = require('../meta');
|
||||
@@ -123,14 +124,19 @@ module.exports = function (Posts) {
|
||||
db.sortedSetRemoveBulk(bulkRemove),
|
||||
];
|
||||
|
||||
await Promise.all(promises);
|
||||
|
||||
if (!meta.config.preserveOrphanedUploads) {
|
||||
const deletePaths = (await Promise.all(
|
||||
filePaths.map(async filePath => (await Posts.uploads.isOrphan(filePath) ? filePath : false))
|
||||
)).filter(Boolean);
|
||||
promises.push(Posts.uploads.deleteFromDisk(deletePaths));
|
||||
}
|
||||
|
||||
await Promise.all(promises);
|
||||
const uploaderUids = (await db.getObjectsFields(deletePaths.map(path => `upload:${md5(path)}`, ['uid']))).map(o => (o ? o.uid || null : null));
|
||||
await Promise.all(uploaderUids.map((uid, idx) => (
|
||||
uid && isFinite(uid) ? user.deleteUpload(uid, uid, deletePaths[idx]) : null
|
||||
)).filter(Boolean));
|
||||
await Posts.uploads.deleteFromDisk(deletePaths);
|
||||
}
|
||||
};
|
||||
|
||||
Posts.uploads.dissociateAll = async (pid) => {
|
||||
|
||||
Reference in New Issue
Block a user