szurubooru/client/js/models/banned_post_list.js

48 lines
1.3 KiB
JavaScript
Raw Normal View History

2023-05-17 02:04:35 +02:00
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;