48 lines
1.3 KiB
JavaScript
48 lines
1.3 KiB
JavaScript
|
const api = require("../api.js");
|
||
|
const uri = require("../util/uri.js");
|
||
|
const AbstractList = require("./abstract_list.js");
|
||
|
const BannedPost = require("./banned_post.js");
|
||
|
|
||
|
class BannedPostList extends AbstractList {
|
||
|
constructor() {
|
||
|
super();
|
||
|
this._deletedBans = [];
|
||
|
this.addEventListener("remove", (e) => this._evtBannedPostDeleted(e));
|
||
|
}
|
||
|
|
||
|
static get() {
|
||
|
return api
|
||
|
.get(uri.formatApiLink("post-ban"))
|
||
|
.then((response) => {
|
||
|
return Promise.resolve(
|
||
|
Object.assign({}, response, {
|
||
|
results: BannedPostList.fromResponse(
|
||
|
response.results
|
||
|
),
|
||
|
})
|
||
|
);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
save() {
|
||
|
let promises = [];
|
||
|
for (let BannedPost of this._deletedBans) {
|
||
|
promises.push(BannedPost.delete());
|
||
|
}
|
||
|
|
||
|
return Promise.all(promises).then((response) => {
|
||
|
this._deletedBans = [];
|
||
|
return Promise.resolve();
|
||
|
});
|
||
|
}
|
||
|
|
||
|
_evtBannedPostDeleted(e) {
|
||
|
this._deletedBans.push(e.detail.BannedPost);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
BannedPostList._itemClass = BannedPost;
|
||
|
BannedPostList._itemName = "bannedPost";
|
||
|
|
||
|
module.exports = BannedPostList;
|