This commit is contained in:
Mirco Wittrien 2020-12-15 13:27:07 +01:00
parent aa7a25454b
commit b2c97f92db
2 changed files with 151 additions and 75 deletions

View File

@ -14,12 +14,12 @@ module.exports = (_ => {
"info": {
"name": "PinDMs",
"author": "DevilBro",
"version": "1.7.7",
"version": "1.7.8",
"description": "Allow you to pin DMs, making them appear at the top of your DMs/Server-List"
},
"changeLog": {
"fixed": {
"Works again": "Some of you really need to learn how to be a little bit more patient and give plugin devs some time to fix their stuff if discord breaks it..."
"added": {
"Predefined Categories": "Added the option to enable predefined categories for the channel list in the settings that will automatically add the dms fitting the category topic"
}
}
};
@ -66,7 +66,7 @@ module.exports = (_ => {
var hoveredCategory, draggedCategory, releasedCategory;
var hoveredChannel, draggedChannel, releasedChannel;
var settings = {};
var settings = {}, preCategories = {}, preCollapseStates = {};
return class PinDMs extends Plugin {
onLoad() {
@ -74,9 +74,14 @@ module.exports = (_ => {
settings: {
sortInRecentOrder: {value: false, inner: true, description: "Channel List"},
sortInRecentOrderGuild: {value: false, inner: true, description: "Guild List"},
showPinIcon: {value: true, inner: false, description: "Show a little 'Pin' icon for pinned DMs in the server list: "},
showCategoryUnread: {value: true, inner: false, description: "Show the amount of unread Messages in a category in the channel list: "},
showCategoryAmount: {value: true, inner: false, description: "Show the amount of pinned DMs in a category in the channel list: "}
showPinIcon: {value: true, inner: false, description: "Show a little 'Pin' icon for pinned DMs in the server list: "},
showCategoryUnread: {value: true, inner: false, description: "Show the amount of unread Messages in a category in the channel list: "},
showCategoryAmount: {value: true, inner: false, description: "Show the amount of pinned DMs in a category in the channel list: "}
},
preCategories: {
friends: {value: false, description: "FRIENDS"},
blocked: {value: false, description: "BLOCKED"},
groups: {value: false, description: "GROUPS"}
}
};
@ -177,7 +182,6 @@ module.exports = (_ => {
getSettingsPanel (collapseStates = {}) {
let settingsPanel, settingsItems = [];
for (let key in settings) if (!this.defaults.settings[key].inner) settingsItems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsSaveItem, {
type: "Switch",
plugin: this,
@ -186,7 +190,9 @@ module.exports = (_ => {
value: settings[key]
}));
settingsItems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsPanelList, {
title: "Sort pinned DMs in the recent message order instead of the pinned at order in:",
title: "Sort pinned DMs in the 'recent message' order instead of the 'pinned at' order in:",
dividerTop: true,
dividerBottom: true,
children: Object.keys(settings).map(key => this.defaults.settings[key].inner && BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsSaveItem, {
type: "Switch",
plugin: this,
@ -195,6 +201,17 @@ module.exports = (_ => {
value: settings[key]
}))
}));
settingsItems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsPanelList, {
title: "Add predefined category for:",
dividerBottom: true,
children: Object.keys(preCategories).map(key => BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsSaveItem, {
type: "Switch",
plugin: this,
keys: ["preCategories", key],
label: BDFDB.LanguageUtils.LanguageStrings[this.defaults.preCategories[key].description],
value: preCategories[key]
}))
}));
settingsItems.push(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsItem, {
type: "Button",
color: BDFDB.LibraryComponents.Button.Colors.RED,
@ -220,6 +237,8 @@ module.exports = (_ => {
forceUpdateAll () {
settings = BDFDB.DataUtils.get(this, "settings");
preCategories = BDFDB.DataUtils.get(this, "preCategories");
preCollapseStates = BDFDB.DataUtils.load(this, "preCollapseStates");
BDFDB.ReactUtils.forceUpdate(BDFDB.ReactUtils.findOwner(document.querySelector(BDFDB.dotCN.app), {name: "FluxContainer(PrivateChannels)", all: true, unlimited: true}));
BDFDB.PatchUtils.forceAllUpdates(this);
@ -243,6 +262,7 @@ module.exports = (_ => {
}
injectItem (instance, id, children, index) {
if (!id) return;
let pinnedInGuild = this.isPinned(id, "pinnedRecents");
let categories = this.sortAndUpdateCategories("dmCategories", true);
@ -255,7 +275,11 @@ module.exports = (_ => {
BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuItem, {
label: this.labels.context_pinchannel_text,
id: BDFDB.ContextMenuUtils.createItemId(this.name, "submenu-channelist"),
children: [
children: this.getPredefinedCategory(id) ? BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuItem, {
label: this.labels.context_inpredefined_text,
id: BDFDB.ContextMenuUtils.createItemId(this.name, "in-predefined"),
disabled: true
}) : [
BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuGroup, {
children: currentCategory ? BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuItem, {
label: this.labels.context_unpinchannel_text,
@ -281,7 +305,7 @@ module.exports = (_ => {
})
}),
categories.length ? BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuGroup, {
children: categories.map(category => currentCategory && currentCategory.id == category.id ? null : BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuItem, {
children: categories.map(category => currentCategory && currentCategory.id == category.id || category.predefined ? null : BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuItem, {
label: category.name || this.labels.header_pinneddms_text,
id: BDFDB.ContextMenuUtils.createItemId(this.name, "pin-channellist", category.id),
action: _ => {
@ -301,7 +325,7 @@ module.exports = (_ => {
else this.removePin(id, "pinnedRecents");
}
})
]
].filter(n => n)
}));
}
@ -330,7 +354,7 @@ module.exports = (_ => {
BDFDB.ArrayUtils.remove(categories, maybedDraggedCategory, true);
categories.splice(categories.indexOf(maybedReleasedCategory) + 1, 0, maybedDraggedCategory);
let newCategories = {}, newPos = 0;
for (let category of [].concat(categories).reverse()) newCategories[category.id] = Object.assign(category, {pos: newPos++});
for (let category of [].concat(categories).reverse()) if (!category.predefined) newCategories[category.id] = Object.assign(category, {pos: newPos++});
BDFDB.DataUtils.save(newCategories, this, "dmCategories");
}
draggedCategory = null;
@ -339,7 +363,7 @@ module.exports = (_ => {
e.instance.props.pinnedChannelIds = {};
for (let category of [].concat(categories).reverse()) {
e.instance.props.pinnedChannelIds[category.id] = [];
for (let id of this.sortDMsByTime(this.filterDMs(category.dms), "dmCategories").reverse()) {
for (let id of this.sortDMsByTime(this.filterDMs(category.dms, !category.predefined), "dmCategories").reverse()) {
BDFDB.ArrayUtils.remove(e.instance.props.privateChannelIds, id, true);
if (!category.collapsed || e.instance.props.selectedChannelId == id) {
e.instance.props.privateChannelIds.unshift(id);
@ -438,30 +462,30 @@ module.exports = (_ => {
let category = categories[args[0].section - 1];
if (category && draggedCategory != category.id) {
let color = BDFDB.ColorUtils.convert(category.color, "RGBA");
let foundDMs = this.filterDMs(category.dms);
let foundDMs = this.filterDMs(category.dms, !category.predefined);
let unreadAmount = settings.showCategoryUnread && BDFDB.ArrayUtils.sum(foundDMs.map(id => BDFDB.LibraryModules.UnreadChannelUtils.getMentionCount(id)));
return [
return category.predefined && foundDMs.length < 1 ? null : [
BDFDB.ReactUtils.createElement("h2", {
className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.dmchannelheadercontainer, BDFDB.disCN._pindmspinnedchannelsheadercontainer, category.collapsed && BDFDB.disCN._pindmspinnedchannelsheadercollapsed, color && BDFDB.disCN._pindmspinnedchannelsheadercolored, BDFDB.disCN.namecontainernamecontainer),
categoryId: category.id,
onMouseDown: event => {
onMouseDown: category.predefined ? null : event => {
event = event.nativeEvent || event;
let node = BDFDB.DOMUtils.getParent(BDFDB.dotCN._pindmspinnedchannelsheadercontainer, event.target).cloneNode(true);
let mousemove = event2 => {
let mouseMove = event2 => {
if (Math.sqrt((event.pageX - event2.pageX)**2) > 20 || Math.sqrt((event.pageY - event2.pageY)**2) > 20) {
BDFDB.ListenerUtils.stopEvent(event);
draggedCategory = category.id;
this.updateContainer("dmCategories");
let dragPreview = this.createDragPreview(node, event2);
document.removeEventListener("mousemove", mousemove);
document.removeEventListener("mouseup", mouseup);
document.removeEventListener("mousemove", mouseMove);
document.removeEventListener("mouseup", mouseUp);
let dragging = event3 => {
this.updateDragPreview(dragPreview, event3);
let placeholder = BDFDB.DOMUtils.getParent(BDFDB.dotCN._pindmsdmchannelplaceholder, event3.target);
let categoryNode = BDFDB.DOMUtils.getParent(BDFDB.dotCN._pindmspinnedchannelsheadercontainer, placeholder ? placeholder.previousSibling : event3.target);
let maybeHoveredCategory = categoryNode && categoryNode.getAttribute("categoryId");
let update = maybeHoveredCategory != hoveredCategory;
if (maybeHoveredCategory) hoveredCategory = maybeHoveredCategory;
if (maybeHoveredCategory && !preCategories[maybeHoveredCategory]) hoveredCategory = maybeHoveredCategory;
else hoveredCategory = null;
if (update) this.updateContainer("dmCategories");
};
@ -478,27 +502,39 @@ module.exports = (_ => {
document.addEventListener("mouseup", releasing);
}
};
let mouseup = _ => {
document.removeEventListener("mousemove", mousemove);
document.removeEventListener("mouseup", mouseup);
let mouseUp = _ => {
document.removeEventListener("mousemove", mouseMove);
document.removeEventListener("mouseup", mouseUp);
};
document.addEventListener("mousemove", mousemove);
document.addEventListener("mouseup", mouseup);
document.addEventListener("mousemove", mouseMove);
document.addEventListener("mouseup", mouseUp);
},
onClick: _ => {
if (foundDMs.length || !category.collapsed) {
category.collapsed = !category.collapsed;
BDFDB.DataUtils.save(category, this, "dmCategories", category.id);
if (category.predefined) {
preCollapseStates[category.id] = category.collapsed;
BDFDB.DataUtils.save(category.collapsed, this, "preCollapseStates", category.id);
}
else BDFDB.DataUtils.save(category, this, "dmCategories", category.id);
this.updateContainer("dmCategories");
}
},
onContextMenu: event => {
BDFDB.ContextMenuUtils.open(this, event, BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuGroup, {
children: [
children: category.predefined ? BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuItem, {
label: this.labels.context_disablepredefined_text,
id: BDFDB.ContextMenuUtils.createItemId(this.name, "disable-predefined"),
action: _ => {
preCategories[category.id] = false;
BDFDB.DataUtils.save(preCategories, this, "preCategories");
this.updateContainer("dmCategories");
}
}) : [
BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuItem, {
label: BDFDB.LanguageUtils.LanguageStrings.CATEGORY_SETTINGS,
id: BDFDB.ContextMenuUtils.createItemId(this.name, "category-settings"),
action: event2 => {
action: _ => {
this.openCategorySettingsModal(category, "dmCategories");
}
}),
@ -506,7 +542,7 @@ module.exports = (_ => {
label: BDFDB.LanguageUtils.LanguageStrings.DELETE_CATEGORY,
id: BDFDB.ContextMenuUtils.createItemId(this.name, "remove-category"),
color: BDFDB.LibraryComponents.MenuItems.Colors.DANGER,
action: event2 => {
action: _ => {
BDFDB.DataUtils.remove(this, "dmCategories", category.id);
this.updateContainer("dmCategories");
}
@ -603,7 +639,7 @@ module.exports = (_ => {
}
processPrivateChannel (e) {
if (e.instance.props.channel) {
if (e.instance.props.channel && !this.getPredefinedCategory(e.instance.props.channel.id)) {
let category = this.getCategory(e.instance.props.channel.id, "dmCategories");
if (category) {
if (e.node) {
@ -612,17 +648,17 @@ module.exports = (_ => {
if (!settings.sortInRecentOrder) {
e.node.setAttribute("draggable", false);
e.node.PinDMsMouseDownListener = event => {
if (!BDFDB.BDUtils.isPluginEnabled("PinDMs")) e.node.removeEventListener("mousedown", e.node.PinDMsMouseDownListener);
if (!this.started) e.node.removeEventListener("mousedown", e.node.PinDMsMouseDownListener);
else {
event = event.nativeEvent || event;
let mousemove = event2 => {
let mouseMove = event2 => {
if (Math.sqrt((event.pageX - event2.pageX)**2) > 20 || Math.sqrt((event.pageY - event2.pageY)**2) > 20) {
BDFDB.ListenerUtils.stopEvent(event);
draggedChannel = e.instance.props.channel.id;
this.updateContainer("dmCategories");
let dragPreview = this.createDragPreview(e.node, event2);
document.removeEventListener("mousemove", mousemove);
document.removeEventListener("mouseup", mouseup);
document.removeEventListener("mousemove", mouseMove);
document.removeEventListener("mouseup", mouseUp);
let dragging = event3 => {
this.updateDragPreview(dragPreview, event3);
let maybeHoveredChannel = null;
@ -655,12 +691,12 @@ module.exports = (_ => {
document.addEventListener("mouseup", releasing);
}
};
let mouseup = _ => {
document.removeEventListener("mousemove", mousemove);
document.removeEventListener("mouseup", mouseup);
let mouseUp = _ => {
document.removeEventListener("mousemove", mouseMove);
document.removeEventListener("mouseup", mouseUp);
};
document.addEventListener("mousemove", mousemove);
document.addEventListener("mouseup", mouseup);
document.addEventListener("mousemove", mouseMove);
document.addEventListener("mouseup", mouseUp);
}
};
e.node.addEventListener("mousedown", e.node.PinDMsMouseDownListener);
@ -763,8 +799,8 @@ module.exports = (_ => {
return categories[id] ? this.generateID() : id;
}
filterDMs (dms) {
return dms.filter(id => BDFDB.LibraryModules.ChannelStore.getChannel(id));
filterDMs (dms, removePredefined) {
return dms.filter(id => BDFDB.LibraryModules.ChannelStore.getChannel(id) && !(removePredefined && this.getPredefinedCategory(id)));
}
addToCategory (id, category, type) {
@ -790,6 +826,16 @@ module.exports = (_ => {
for (let catId in categories) if (categories[catId].dms.includes(id)) return categories[catId];
return null;
}
getPredefinedCategory (id) {
if (!id) return "";
let channel = BDFDB.LibraryModules.ChannelStore.getChannel(id);
if (!channel) return "";
else if (preCategories.friends && channel.isDM() && BDFDB.LibraryModules.FriendUtils.isFriend(channel.recipients[0])) return "friends";
else if (preCategories.blocked && channel.isDM() && BDFDB.LibraryModules.FriendUtils.isBlocked(channel.recipients[0])) return "blocked";
else if (preCategories.groups && channel.isGroupDM()) return "groups";
return "";
}
sortAndUpdateCategories (type, reverse) {
let data = BDFDB.ObjectUtils.sort(BDFDB.DataUtils.load(this, type), "pos"), newData = {};
@ -805,6 +851,24 @@ module.exports = (_ => {
};
for (let id in data) sort(id);
if (!BDFDB.equals(data, newData)) BDFDB.DataUtils.save(newData, this, type);
if (type == "dmCategories" && Object.keys(preCategories).some(type => preCategories[type])) {
let predefinedDMs = {};
for (let channelId of BDFDB.LibraryModules.DirectMessageStore.getPrivateChannelIds()) {
let category = this.getPredefinedCategory(channelId);
if (category) {
if (!predefinedDMs[category]) predefinedDMs[category] = [];
predefinedDMs[category].push(channelId);
}
}
for (let type in predefinedDMs) if (predefinedDMs[type].length) sorted.unshift({
predefined: true,
collapsed: preCollapseStates[type],
color: null,
dms: predefinedDMs[type],
id: type,
name: BDFDB.LanguageUtils.LanguageStrings[this.defaults.preCategories[type].description]
});
}
return (reverse ? sorted.reverse() : sorted).filter(n => n);
}
@ -943,6 +1007,8 @@ module.exports = (_ => {
case "hr": //croatian
return {
context_pindm_text: "Prikljucite Izravnu Poruku",
context_disablepredefined_text: "Onemogući unaprijed definiranu kategoriju",
context_inpredefined_text: "Prikvačeno u unaprijed definiranoj kategoriji",
context_pinchannel_text: "Priložite popisu kanala",
context_unpinchannel_text: "Ukloni s popisa kanala",
context_addtonewcategory_text: "Dodavanje u novu kategoriju",
@ -954,6 +1020,8 @@ module.exports = (_ => {
case "da": //danish
return {
context_pindm_text: "Fastgør PB",
context_disablepredefined_text: "Deaktiver foruddefineret kategori",
context_inpredefined_text: "Fastgjort i foruddefineret kategori",
context_pinchannel_text: "Vedhæft til kanalliste",
context_unpinchannel_text: "Fjern fra kanalliste",
context_addtonewcategory_text: "Føj til ny kategori",
@ -965,6 +1033,8 @@ module.exports = (_ => {
case "de": //german
return {
context_pindm_text: "Direktnachricht anheften",
context_disablepredefined_text: "Vordefinierte Kategorie deaktivieren",
context_inpredefined_text: "In vordefinierter Kategorie angeheftet",
context_pinchannel_text: "An Kanalliste anheften",
context_unpinchannel_text: "Von Kanalliste loslösen",
context_addtonewcategory_text: "Zur neuen Kategorie hinzufügen",
@ -976,6 +1046,8 @@ module.exports = (_ => {
case "es": //spanish
return {
context_pindm_text: "Anclar MD",
context_disablepredefined_text: "Deshabilitar categoría predefinida",
context_inpredefined_text: "Anclado en una categoría predefinida",
context_pinchannel_text: "Adjuntar a la lista de canales",
context_unpinchannel_text: "Deshazte de la lista de canales",
context_addtonewcategory_text: "Agregar a nueva categoría",
@ -987,6 +1059,8 @@ module.exports = (_ => {
case "fr": //french
return {
context_pindm_text: "Épingler MP",
context_disablepredefined_text: "Désactiver la catégorie prédéfinie",
context_inpredefined_text: "Épinglé dans une catégorie prédéfinie",
context_pinchannel_text: "Épingler à la liste des salons",
context_unpinchannel_text: "Détacher de la liste des salons",
context_addtonewcategory_text: "Ajouter à une nouvelle catégorie",
@ -998,6 +1072,8 @@ module.exports = (_ => {
case "it": //italian
return {
context_pindm_text: "Fissa il messaggio diretto",
context_disablepredefined_text: "Disabilita la categoria predefinita",
context_inpredefined_text: "Bloccato in una categoria predefinita",
context_pinchannel_text: "Allega alla lista dei canali",
context_unpinchannel_text: "Rimuovi dalla lista dei canali",
context_addtonewcategory_text: "Aggiungi a nuova categoria",
@ -1009,6 +1085,8 @@ module.exports = (_ => {
case "nl": //dutch
return {
context_pindm_text: "PB pinnen",
context_disablepredefined_text: "Schakel voorgedefinieerde categorie uit",
context_inpredefined_text: "Vastgemaakt in vooraf gedefinieerde categorie",
context_pinchannel_text: "Pin naar de kanalenlijst",
context_unpinchannel_text: "Losmaken van kanalenlijst",
context_addtonewcategory_text: "Toevoegen aan nieuwe categorie",
@ -1020,6 +1098,8 @@ module.exports = (_ => {
case "no": //norwegian
return {
context_pindm_text: "Fest DM",
context_disablepredefined_text: "Deaktiver forhåndsdefinert kategori",
context_inpredefined_text: "Festet i forhåndsdefinert kategori",
context_pinchannel_text: "Fest på kanalliste",
context_unpinchannel_text: "Fjern fra kanalliste",
context_addtonewcategory_text: "Legg til i ny kategori",
@ -1031,6 +1111,8 @@ module.exports = (_ => {
case "pl": //polish
return {
context_pindm_text: "Przypnij PW",
context_disablepredefined_text: "Wyłącz wstępnie zdefiniowaną kategorię",
context_inpredefined_text: "Przypięty w predefiniowanej kategorii",
context_pinchannel_text: "Dołącz do listy kanałów",
context_unpinchannel_text: "Usuń z listy kanałów",
context_addtonewcategory_text: "Dodaj do nowej kategorii",
@ -1042,6 +1124,8 @@ module.exports = (_ => {
case "pt-BR": //portuguese (brazil)
return {
context_pindm_text: "Fixar MD",
context_disablepredefined_text: "Desativar categoria predefinida",
context_inpredefined_text: "Fixado na categoria predefinida",
context_pinchannel_text: "Anexar à lista de canais",
context_unpinchannel_text: "Remover da lista de canais",
context_addtonewcategory_text: "Adicionar à nova categoria",
@ -1053,6 +1137,8 @@ module.exports = (_ => {
case "fi": //finnish
return {
context_pindm_text: "Kiinnitä yksityisviestit",
context_disablepredefined_text: "Poista ennalta määritetty luokka käytöstä",
context_inpredefined_text: "Kiinnitetty ennalta määritettyyn luokkaan",
context_pinchannel_text: "Liitä kanavaluetteloon",
context_unpinchannel_text: "Poista kanavaluettelosta",
context_addtonewcategory_text: "Lisää uuteen luokkaan",
@ -1064,6 +1150,8 @@ module.exports = (_ => {
case "sv": //swedish
return {
context_pindm_text: "Fäst DM",
context_disablepredefined_text: "Inaktivera fördefinierad kategori",
context_inpredefined_text: "Fäst i fördefinierad kategori",
context_pinchannel_text: "Fäst till kanallista",
context_unpinchannel_text: "Ta bort från kanallistan",
context_addtonewcategory_text: "Lägg till i ny kategori",
@ -1075,6 +1163,8 @@ module.exports = (_ => {
case "tr": //turkish
return {
context_pindm_text: "DM'yi Sabitle",
context_disablepredefined_text: "Önceden tanımlanmış kategoriyi devre dışı bırakın",
context_inpredefined_text: "Önceden tanımlanmış kategoriye sabitlendi",
context_pinchannel_text: "Kanal listesine ekle",
context_unpinchannel_text: "Kanal listesinden kaldır",
context_addtonewcategory_text: "Yeni kategoriye ekle",
@ -1086,6 +1176,8 @@ module.exports = (_ => {
case "cs": //czech
return {
context_pindm_text: "Připnout PZ",
context_disablepredefined_text: "Zakázat předdefinovanou kategorii",
context_inpredefined_text: "Připnuto v předdefinované kategorii",
context_pinchannel_text: "Připojení k seznamu kanálů",
context_unpinchannel_text: "Odstranit ze seznamu kanálů",
context_addtonewcategory_text: "Přidat do nové kategorie",
@ -1097,6 +1189,8 @@ module.exports = (_ => {
case "bg": //bulgarian
return {
context_pindm_text: "Закачени ДС",
context_disablepredefined_text: "Деактивирайте предварително дефинираната категория",
context_inpredefined_text: "Фиксирано в предварително дефинирана категория",
context_pinchannel_text: "Прикачете към списъка с канали",
context_unpinchannel_text: "Премахване от списъка с канали",
context_addtonewcategory_text: "Добавяне към нова категория",
@ -1108,6 +1202,8 @@ module.exports = (_ => {
case "ru": //russian
return {
context_pindm_text: "Закрепить ЛС",
context_disablepredefined_text: "Отключить предопределенную категорию",
context_inpredefined_text: "Закреплено в предопределенной категории",
context_pinchannel_text: "Прикрепить к списку каналов",
context_unpinchannel_text: "Удалить из списка каналов",
context_addtonewcategory_text: "Добавить в новую категорию",
@ -1119,6 +1215,8 @@ module.exports = (_ => {
case "uk": //ukrainian
return {
context_pindm_text: "Закріпити ОП",
context_disablepredefined_text: "Вимкнути заздалегідь визначену категорію",
context_inpredefined_text: "Закріплено в наперед визначеній категорії",
context_pinchannel_text: "Додайте до списку каналів",
context_unpinchannel_text: "Видалити зі списку каналів",
context_addtonewcategory_text: "Додати до нової категорії",
@ -1130,6 +1228,8 @@ module.exports = (_ => {
case "ja": //japanese
return {
context_pindm_text: "DMピン",
context_disablepredefined_text: "事前定義されたカテゴリを無効にする",
context_inpredefined_text: "事前定義されたカテゴリに固定",
context_pinchannel_text: "チャンネルリストに添付",
context_unpinchannel_text: "チャンネルリストから削除",
context_addtonewcategory_text: "新しいカテゴリに追加",
@ -1141,6 +1241,8 @@ module.exports = (_ => {
case "zh-TW": //chinese (traditional)
return {
context_pindm_text: "引腳直接留言",
context_disablepredefined_text: "禁用預定義類別",
context_inpredefined_text: "固定在預定義的類別中",
context_pinchannel_text: "附加到頻道列表",
context_unpinchannel_text: "從頻道列表中刪除",
context_addtonewcategory_text: "添加到新類別",
@ -1152,6 +1254,8 @@ module.exports = (_ => {
case "ko": //korean
return {
context_pindm_text: "비공개 메시지 고정",
context_disablepredefined_text: "사전 정의 된 카테고리 비활성화",
context_inpredefined_text: "사전 정의 된 카테고리에 고정됨",
context_pinchannel_text: "채널 목록에 첨부",
context_unpinchannel_text: "채널 목록에서 삭제",
context_addtonewcategory_text: "새 카테고리에 추가",
@ -1163,6 +1267,8 @@ module.exports = (_ => {
default: //default: english
return {
context_pindm_text: "Pin DM",
context_disablepredefined_text: "Disable predefined Category",
context_inpredefined_text: "Pinned in predefined Category",
context_pinchannel_text: "Pin to Channellist",
context_unpinchannel_text: "Unpin from Channellist",
context_addtonewcategory_text: "Add to new Category",

View File

@ -14,13 +14,8 @@ module.exports = (_ => {
"info": {
"name": "ReadAllNotificationsButton",
"author": "DevilBro",
"version": "1.6.3",
"version": "1.6.4",
"description": "Add a button to clear all notifications"
},
"changeLog": {
"fixed": {
"Clear Mentions": "Works again"
}
}
};
@ -139,6 +134,8 @@ module.exports = (_ => {
value: settings[key]
})).concat(BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsPanelList, {
title: "When left clicking the 'read all' button mark following Elements as read:",
first: false,
last: true,
children: Object.keys(settings).filter(key => this.defaults.settings[key].inner).map(key => BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SettingsSaveItem, {
type: "Switch",
plugin: this,
@ -196,33 +193,6 @@ module.exports = (_ => {
BDFDB.PatchUtils.forceAllUpdates(this);
}
onUserContextMenu (e) {
if (e.instance.props.channel && e.type == "DMUserContextMenu") {
let [children, index] = BDFDB.ReactUtils.findParent(e.returnvalue, {name: BDFDB.LibraryComponents.MenuItems.MenuGroup});
if (index > -1) this.injectItem(children, e.instance.props.channel.id);
}
}
onGroupDMContextMenu (e) {
if (e.instance.props.channel) {
let [children, index] = BDFDB.ReactUtils.findParent(e.returnvalue, {name: BDFDB.LibraryComponents.MenuItems.MenuGroup});
if (index > -1) this.injectItem(children, e.instance.props.channel.id);
}
}
injectItem (children, channelId) {
children.unshift(BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuGroup, {
children: BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuItem, {
label: BDFDB.LanguageUtils.LanguageStrings.MARK_AS_READ,
id: "mark-dm-read",
disabled: !BDFDB.LibraryModules.DirectMessageUnreadStore.getUnreadPrivateChannelIds().includes(channelId),
action: _ => {
BDFDB.DMUtils.markAsRead(channelId);
}
})
}));
}
processGuilds (e) {
if (typeof e.returnvalue.props.children == "function") {