FIX: delete all posts in batches without hijack (#6747)

This commit is contained in:
Maja Komel
2018-12-14 11:04:18 +01:00
committed by Régis Hanol
parent 05104600ea
commit 9f89aadd33
8 changed files with 114 additions and 19 deletions

View File

@ -98,6 +98,7 @@ const AdminUser = Discourse.User.extend({
},
deleteAllPosts() {
let deletedPosts = 0;
const user = this,
message = I18n.messageFormat("admin.user.delete_all_posts_confirm_MF", {
POSTS: user.get("post_count"),
@ -114,13 +115,52 @@ const AdminUser = Discourse.User.extend({
`${iconHTML("exclamation-triangle")} ` +
I18n.t("admin.user.delete_all_posts"),
class: "btn btn-danger",
callback: function() {
ajax("/admin/users/" + user.get("id") + "/delete_all_posts", {
type: "PUT"
}).then(() => user.set("post_count", 0));
callback: () => {
openProgressModal();
performDelete();
}
}
];
],
openProgressModal = () => {
bootbox.dialog(
`<p>${I18n.t(
"admin.user.delete_posts_progress"
)}</p><div class='progress-bar'><span></span></div>`,
[],
{ classes: "delete-posts-progress" }
);
},
performDelete = () => {
let deletedPercentage = 0;
return ajax(`/admin/users/${user.get("id")}/delete_posts_batch`, {
type: "PUT"
})
.then(({ posts_deleted }) => {
if (posts_deleted === 0) {
user.set("post_count", 0);
bootbox.hideAll();
} else {
deletedPosts += posts_deleted;
deletedPercentage = Math.floor(
(deletedPosts * 100) / user.get("post_count")
);
$(".delete-posts-progress .progress-bar > span").css({
width: `${deletedPercentage}%`
});
performDelete();
}
})
.catch(e => {
bootbox.hideAll();
let error;
AdminUser.find(user.get("id")).then(u => user.setProperties(u));
if (e.responseJSON && e.responseJSON.errors) {
error = e.responseJSON.errors[0];
}
error = error || I18n.t("admin.user.delete_posts_failed");
bootbox.alert(error);
});
};
bootbox.dialog(message, buttons, { classes: "delete-all-posts" });
},