Update ReadAllNotificationsButton.plugin.js

This commit is contained in:
Mirco Wittrien 2020-04-19 20:39:58 +02:00
parent a3bd0cbdbc
commit 6b46a3906e
1 changed files with 52 additions and 33 deletions

View File

@ -1,28 +1,39 @@
//META{"name":"ReadAllNotificationsButton","authorId":"278543574059057154","invite":"Jx3TjNS","donate":"https://www.paypal.me/MircoWittrien","patreon":"https://www.patreon.com/MircoWittrien","website":"https://github.com/mwittrien/BetterDiscordAddons/tree/master/Plugins/ReadAllNotificationsButton","source":"https://raw.githubusercontent.com/mwittrien/BetterDiscordAddons/master/Plugins/ReadAllNotificationsButton/ReadAllNotificationsButton.plugin.js"}*//
var ReadAllNotificationsButton = (_ => {
var blacklist;
var blacklist, clearing;
return class ReadAllNotificationsButton {
getName () {return "ReadAllNotificationsButton";}
getVersion () {return "1.5.7";}
getVersion () {return "1.5.8";}
getAuthor () {return "DevilBro";}
getDescription () {return "Adds a button to clear all notifications.";}
constructor () {
this.changelog = {
"fixed":[["Clear All Mentions","Fixed for new recent mentions popout style"]]
};
this.patchedModules = {
after: {
Guilds: "render",
MessagesPopout: "render"
MessagesPopout: "render",
RecentsHeader: "default"
}
};
}
initConstructor () {
this.css = `
${BDFDB.dotCN.messagespopouttabbar}) {
flex: 1 0 auto;
}
${BDFDB.dotCN.messagespopouttabbar} ~ * {
margin-left: 10px;
}
${BDFDB.dotCN._readallnotificationsbuttonframe} {
margin-bottom: 10px;
}
@ -260,39 +271,47 @@ var ReadAllNotificationsButton = (_ => {
}
processMessagesPopout (e) {
if (e.instance.props.className == BDFDB.disCN.recentmentionspopout && BDFDB.DataUtils.get(this, "settings", "addClearButton")) {
let [children, index] = BDFDB.ReactUtils.findChildren(e.returnvalue, {name: "RecentMentionsHeader"});
if (index > -1) children.splice(index, 0, BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.Button, {
look: BDFDB.LibraryComponents.Button.Looks.OUTLINED,
color: BDFDB.LibraryComponents.Button.Colors.GREY,
hover: BDFDB.LibraryComponents.Button.Hovers.RED,
size: BDFDB.LibraryComponents.Button.Sizes.MIN,
children: BDFDB.LanguageUtils.LanguageStrings.REMOVE,
onClick: (event, buttoninstance) => {
let clear = _ => {
this.clearMentions(e.instance, BDFDB.DOMUtils.getParent(BDFDB.dotCN.messagespopoutwrap, BDFDB.ReactUtils.findDOMNode(buttoninstance)));
};
if (!BDFDB.DataUtils.get(this, "settings", "confirmClear")) clear();
else BDFDB.ModalUtils.confirm(this, `Are you sure you want to mark all Mentions as read?`, clear);
},
style: {
position: "absolute",
top: 14,
right: 16,
zIndex: 2001
}
}));
if (e.instance.props.className == BDFDB.disCN.recentmentionspopout && e.returnvalue.props.children && e.returnvalue.props.children[0]) {
e.returnvalue.props.children[0].props.messages = e.instance.props.messages;
}
}
clearMentions (instance, wrapper) {
if (!instance || !Node.prototype.isPrototypeOf(wrapper) || !document.contains(wrapper)) return;
let closebuttons = wrapper.querySelectorAll(BDFDB.dotCN.messagespopoutclosebutton);
for (let btn of closebuttons) btn.click();
if (closebuttons.length) {
instance.props.loadMore();
BDFDB.TimeUtils.timeout(_ => {this.clearMentions(instance, wrapper);},3000);
}
processRecentsHeader (e) {
let settings = BDFDB.DataUtils.get(this, "settings");
if (settings.addClearButton) e.returnvalue.props.children.push(BDFDB.ReactUtils.createElement("div", {
children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TooltipContainer, {
text: `${BDFDB.LanguageUtils.LanguageStrings.CLOSE} (${BDFDB.LanguageUtils.LanguageStrings.FORM_LABEL_ALL})`,
children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.Clickable, {
className: BDFDB.disCNS.messagespopoutbutton + BDFDB.disCN.messagespopoutbuttonsecondary,
children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SvgIcon, {
nativeClass: true,
name: BDFDB.LibraryComponents.SvgIcon.Names.CLOSE,
width: 16,
height: 16
}),
onClick: _ => {
let clear = _ => {
if (clearing) return BDFDB.NotificationUtils.toast("Already clearing some recent mentions, please wait...", {type: "error"});
let messages = [].concat(e.instance.props.messages);
if (messages.length) {
clearing = true;
let toast = BDFDB.NotificationUtils.toast("Clearing all recent mentions, please wait...", {timeout:0});
for (let i = 0; i < messages.length; i++) BDFDB.TimeUtils.timeout(_ => {
BDFDB.LibraryModules.RecentMentionUtils.deleteRecentMention(messages[i].id);
if (i == messages.length - 1) {
clearing = false;
toast.close();
BDFDB.NotificationUtils.toast("Cleared all recent mentions.", {type: "success"});
}
}, i * 1000);
}
};
if (settings.confirmClear) BDFDB.ModalUtils.confirm(this, `Are you sure you want to mark all mentions as read?`, clear);
else clear();
}
})
})
}));
}
markGuildsAsRead (guilds) {