stuff
This commit is contained in:
parent
117db39d4b
commit
0c1365aad3
|
@ -2,7 +2,7 @@
|
|||
* @name PinDMs
|
||||
* @author DevilBro
|
||||
* @authorId 278543574059057154
|
||||
* @version 1.8.4
|
||||
* @version 1.8.5
|
||||
* @description Allows you to pin DMs, making them appear at the top of your DMs/ServerList
|
||||
* @invite Jx3TjNS
|
||||
* @donate https://www.paypal.me/MircoWittrien
|
||||
|
@ -17,12 +17,12 @@ module.exports = (_ => {
|
|||
"info": {
|
||||
"name": "PinDMs",
|
||||
"author": "DevilBro",
|
||||
"version": "1.8.4",
|
||||
"version": "1.8.5",
|
||||
"description": "Allows you to pin DMs, making them appear at the top of your DMs/ServerList"
|
||||
},
|
||||
"changeLog": {
|
||||
"fixed": {
|
||||
"Pin to Server List": "Works again"
|
||||
"Canary": "Fixed for Canary"
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -396,17 +396,7 @@ module.exports = (_ => {
|
|||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (typeof e.returnvalue.props.children == "function") {
|
||||
let childrenRender = e.returnvalue.props.children;
|
||||
e.returnvalue.props.children = BDFDB.TimeUtils.suppress((...args) => {
|
||||
let children = childrenRender(...args);
|
||||
this.injectCategories(e.instance, children, categories);
|
||||
return children;
|
||||
}, "", this);
|
||||
}
|
||||
else this.injectCategories(e.instance, e.returnvalue, categories);
|
||||
}
|
||||
else this.injectCategories(e.instance, e.returnvalue, categories);
|
||||
|
||||
let pinnedIds = BDFDB.ObjectUtils.toArray(e.instance.props.pinnedChannelIds).reverse();
|
||||
BDFDB.PatchUtils.unpatch(this, e.instance, "renderDM");
|
||||
|
@ -419,11 +409,11 @@ module.exports = (_ => {
|
|||
key: id,
|
||||
channel: e.instance.props.channels[id],
|
||||
selected: e.instance.props.selectedChannelId == id
|
||||
}, (e.instance.props.navigator || e.instance.props.listNavigator).getItemProps({
|
||||
}, (e.instance.props.navigator || e.instance.props.listNavigator || {getItemProps: (_ => {})}).getItemProps({
|
||||
index: e2.methodArguments[2]
|
||||
}))) : null;
|
||||
|
||||
let category = categories[e2.methodArguments[0] - 1];
|
||||
let category = categories[e2.methodArguments[0] - 1]; // WRONG
|
||||
if (category) {
|
||||
if (!id || (category.collapsed && e.instance.props.selectedChannelId != id) || !this.filterDMs(category.dms, !category.predefined).includes(id) || draggedCategory == category.id || draggedChannel == id) e2.returnValue = null;
|
||||
else if (hoveredCategory == category.id && [].concat(category.dms).reverse()[0] == id) e2.returnValue = [
|
||||
|
@ -448,178 +438,193 @@ module.exports = (_ => {
|
|||
}
|
||||
|
||||
injectCategories (instance, returnvalue, categories) {
|
||||
returnvalue.props.sections = [];
|
||||
returnvalue.props.sections.push(instance.state.preRenderedChildren);
|
||||
let shownPinnedIds = BDFDB.ObjectUtils.toArray(instance.props.pinnedChannelIds).reverse();
|
||||
for (let ids of shownPinnedIds) returnvalue.props.sections.push(ids.length || 1);
|
||||
returnvalue.props.sections.push(instance.props.privateChannelIds.length - shownPinnedIds.flat().length);
|
||||
|
||||
let sectionHeight = returnvalue.props.sectionHeight;
|
||||
let sectionHeightFunc = typeof sectionHeight != "function" ? _ => sectionHeight : sectionHeight;
|
||||
returnvalue.props.sectionHeight = (...args) => {
|
||||
if (args[0] != 0 && args[0] != returnvalue.props.sections.length - 1) {
|
||||
let category = categories[args[0] - 1];
|
||||
if (category) return 40;
|
||||
}
|
||||
return sectionHeightFunc(...args);
|
||||
};
|
||||
|
||||
let rowHeight = returnvalue.props.rowHeight;
|
||||
let rowHeightFunc = typeof rowHeight != "function" ? _ => rowHeight : rowHeight;
|
||||
returnvalue.props.rowHeight = (...args) => {
|
||||
if (args[0] != 0 && args[0] != returnvalue.props.sections.length - 1) {
|
||||
let category = categories[args[0] - 1];
|
||||
if (category && (category.collapsed || category.id == draggedCategory)) return 0;
|
||||
}
|
||||
return rowHeightFunc(...args);
|
||||
};
|
||||
|
||||
let renderRow = returnvalue.props.renderRow;
|
||||
returnvalue.props.renderRow = (...args) => {
|
||||
let row = renderRow(...args);
|
||||
return row && row.key == "no-private-channels" ? null : row;
|
||||
};
|
||||
|
||||
let renderSection = returnvalue.props.renderSection;
|
||||
returnvalue.props.renderSection = (...args) => {
|
||||
if (args[0].section != 0 && args[0].section != returnvalue.props.sections.length - 1) {
|
||||
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, !category.predefined);
|
||||
let unreadAmount = this.settings.general.unreadAmount && BDFDB.ArrayUtils.sum(foundDMs.map(id => BDFDB.LibraryModules.UnreadChannelUtils.getMentionCount(id)));
|
||||
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: category.predefined ? null : event => {
|
||||
event = event.nativeEvent || event;
|
||||
let node = BDFDB.DOMUtils.getParent(BDFDB.dotCN._pindmspinnedchannelsheadercontainer, event.target).cloneNode(true);
|
||||
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("channelList");
|
||||
let dragPreview = this.createDragPreview(node, event2);
|
||||
if (!returnvalue) return;
|
||||
else if (returnvalue && returnvalue.props && BDFDB.ArrayUtils.is(returnvalue.props.sections)) {
|
||||
returnvalue.props.sections = [];
|
||||
returnvalue.props.sections.push(instance.state.preRenderedChildren);
|
||||
let shownPinnedIds = BDFDB.ObjectUtils.toArray(instance.props.pinnedChannelIds).reverse();
|
||||
for (let ids of shownPinnedIds) returnvalue.props.sections.push(ids.length || 1);
|
||||
returnvalue.props.sections.push(instance.props.privateChannelIds.length - shownPinnedIds.flat().length);
|
||||
|
||||
let sectionHeight = returnvalue.props.sectionHeight;
|
||||
let sectionHeightFunc = typeof sectionHeight != "function" ? _ => sectionHeight : sectionHeight;
|
||||
returnvalue.props.sectionHeight = (...args) => {
|
||||
if (args[0] != 0 && args[0] != returnvalue.props.sections.length - 1) {
|
||||
let category = categories[args[0] - 1];
|
||||
if (category) return 40;
|
||||
}
|
||||
return sectionHeightFunc(...args);
|
||||
};
|
||||
|
||||
let rowHeight = returnvalue.props.rowHeight;
|
||||
let rowHeightFunc = typeof rowHeight != "function" ? _ => rowHeight : rowHeight;
|
||||
returnvalue.props.rowHeight = (...args) => {
|
||||
if (args[0] != 0 && args[0] != returnvalue.props.sections.length - 1) {
|
||||
let category = categories[args[0] - 1];
|
||||
if (category && (category.collapsed || category.id == draggedCategory)) return 0;
|
||||
}
|
||||
return rowHeightFunc(...args);
|
||||
};
|
||||
|
||||
let renderRow = returnvalue.props.renderRow;
|
||||
returnvalue.props.renderRow = (...args) => {
|
||||
let row = renderRow(...args);
|
||||
return row && row.key == "no-private-channels" ? null : row;
|
||||
};
|
||||
|
||||
let renderSection = returnvalue.props.renderSection;
|
||||
returnvalue.props.renderSection = (...args) => {
|
||||
if (args[0].section != 0 && args[0].section != returnvalue.props.sections.length - 1) {
|
||||
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, !category.predefined);
|
||||
let unreadAmount = this.settings.general.unreadAmount && BDFDB.ArrayUtils.sum(foundDMs.map(id => BDFDB.LibraryModules.UnreadChannelUtils.getMentionCount(id)));
|
||||
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: category.predefined ? null : event => {
|
||||
event = event.nativeEvent || event;
|
||||
let node = BDFDB.DOMUtils.getParent(BDFDB.dotCN._pindmspinnedchannelsheadercontainer, event.target).cloneNode(true);
|
||||
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("channelList");
|
||||
let dragPreview = this.createDragPreview(node, event2);
|
||||
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 && !this.defaults.preCategories[maybeHoveredCategory]) hoveredCategory = maybeHoveredCategory;
|
||||
else hoveredCategory = null;
|
||||
if (update) this.updateContainer("channelList");
|
||||
};
|
||||
let releasing = event3 => {
|
||||
BDFDB.DOMUtils.remove(dragPreview);
|
||||
if (hoveredCategory) releasedCategory = hoveredCategory;
|
||||
else draggedCategory = null;
|
||||
hoveredCategory = null;
|
||||
this.updateContainer("channelList");
|
||||
document.removeEventListener("mousemove", dragging);
|
||||
document.removeEventListener("mouseup", releasing);
|
||||
};
|
||||
document.addEventListener("mousemove", dragging);
|
||||
document.addEventListener("mouseup", releasing);
|
||||
}
|
||||
};
|
||||
let 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 && !this.defaults.preCategories[maybeHoveredCategory]) hoveredCategory = maybeHoveredCategory;
|
||||
else hoveredCategory = null;
|
||||
if (update) this.updateContainer("channelList");
|
||||
};
|
||||
let releasing = event3 => {
|
||||
BDFDB.DOMUtils.remove(dragPreview);
|
||||
if (hoveredCategory) releasedCategory = hoveredCategory;
|
||||
else draggedCategory = null;
|
||||
hoveredCategory = null;
|
||||
this.updateContainer("channelList");
|
||||
document.removeEventListener("mousemove", dragging);
|
||||
document.removeEventListener("mouseup", releasing);
|
||||
};
|
||||
document.addEventListener("mousemove", dragging);
|
||||
document.addEventListener("mouseup", releasing);
|
||||
}
|
||||
};
|
||||
let mouseUp = _ => {
|
||||
document.removeEventListener("mousemove", mouseMove);
|
||||
document.removeEventListener("mouseup", mouseUp);
|
||||
};
|
||||
document.addEventListener("mousemove", mouseMove);
|
||||
document.addEventListener("mouseup", mouseUp);
|
||||
},
|
||||
onClick: _ => {
|
||||
if (foundDMs.length || !category.collapsed) {
|
||||
category.collapsed = !category.collapsed;
|
||||
if (category.predefined) {
|
||||
this.settings.preCategories[category.id].collapsed = category.collapsed;
|
||||
BDFDB.DataUtils.save(this.settings.preCategories, this, "preCategories");
|
||||
}
|
||||
else this.savePinnedChannels(Object.assign({}, this.getPinnedChannels("channelList"), {[category.id]: category}), "channelList");
|
||||
this.updateContainer("channelList");
|
||||
}
|
||||
},
|
||||
onContextMenu: event => {
|
||||
BDFDB.ContextMenuUtils.open(this, event, BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuGroup, {
|
||||
children: category.predefined ? BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuItem, {
|
||||
label: this.labels.context_disablepredefined,
|
||||
id: BDFDB.ContextMenuUtils.createItemId(this.name, "disable-predefined"),
|
||||
action: _ => {
|
||||
if (!this.settings.preCategories[category.id]) return;
|
||||
this.settings.preCategories[category.id].enabled = false;
|
||||
};
|
||||
document.addEventListener("mousemove", mouseMove);
|
||||
document.addEventListener("mouseup", mouseUp);
|
||||
},
|
||||
onClick: _ => {
|
||||
if (foundDMs.length || !category.collapsed) {
|
||||
category.collapsed = !category.collapsed;
|
||||
if (category.predefined) {
|
||||
this.settings.preCategories[category.id].collapsed = category.collapsed;
|
||||
BDFDB.DataUtils.save(this.settings.preCategories, this, "preCategories");
|
||||
this.updateContainer("channelList");
|
||||
}
|
||||
}) : [
|
||||
BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuItem, {
|
||||
label: BDFDB.LanguageUtils.LanguageStrings.CATEGORY_SETTINGS,
|
||||
id: BDFDB.ContextMenuUtils.createItemId(this.name, "category-settings"),
|
||||
else this.savePinnedChannels(Object.assign({}, this.getPinnedChannels("channelList"), {[category.id]: category}), "channelList");
|
||||
this.updateContainer("channelList");
|
||||
}
|
||||
},
|
||||
onContextMenu: event => {
|
||||
BDFDB.ContextMenuUtils.open(this, event, BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuGroup, {
|
||||
children: category.predefined ? BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuItem, {
|
||||
label: this.labels.context_disablepredefined,
|
||||
id: BDFDB.ContextMenuUtils.createItemId(this.name, "disable-predefined"),
|
||||
action: _ => {
|
||||
this.openCategorySettingsModal(category, "channelList");
|
||||
}
|
||||
}),
|
||||
BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuItem, {
|
||||
label: BDFDB.LanguageUtils.LanguageStrings.DELETE_CATEGORY,
|
||||
id: BDFDB.ContextMenuUtils.createItemId(this.name, "remove-category"),
|
||||
color: BDFDB.LibraryComponents.MenuItems.Colors.DANGER,
|
||||
action: _ => {
|
||||
let newData = this.getPinnedChannels("channelList");
|
||||
delete newData[category.id];
|
||||
this.savePinnedChannels(newData, "channelList");
|
||||
if (!this.settings.preCategories[category.id]) return;
|
||||
this.settings.preCategories[category.id].enabled = false;
|
||||
BDFDB.DataUtils.save(this.settings.preCategories, this, "preCategories");
|
||||
this.updateContainer("channelList");
|
||||
}
|
||||
}) : [
|
||||
BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuItem, {
|
||||
label: BDFDB.LanguageUtils.LanguageStrings.CATEGORY_SETTINGS,
|
||||
id: BDFDB.ContextMenuUtils.createItemId(this.name, "category-settings"),
|
||||
action: _ => {
|
||||
this.openCategorySettingsModal(category, "channelList");
|
||||
}
|
||||
}),
|
||||
BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuItem, {
|
||||
label: BDFDB.LanguageUtils.LanguageStrings.DELETE_CATEGORY,
|
||||
id: BDFDB.ContextMenuUtils.createItemId(this.name, "remove-category"),
|
||||
color: BDFDB.LibraryComponents.MenuItems.Colors.DANGER,
|
||||
action: _ => {
|
||||
let newData = this.getPinnedChannels("channelList");
|
||||
delete newData[category.id];
|
||||
this.savePinnedChannels(newData, "channelList");
|
||||
this.updateContainer("channelList");
|
||||
}
|
||||
})
|
||||
]
|
||||
}));
|
||||
},
|
||||
children: [
|
||||
BDFDB.ObjectUtils.is(color) ? BDFDB.ReactUtils.createElement("span", {
|
||||
className: BDFDB.disCN.dmchannelheadertext,
|
||||
children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TextGradientElement, {
|
||||
gradient: BDFDB.ColorUtils.createGradient(color),
|
||||
children: category.name
|
||||
})
|
||||
}) : BDFDB.ReactUtils.createElement("span", {
|
||||
className: BDFDB.disCN.dmchannelheadertext,
|
||||
style: {color: color},
|
||||
children: category.name,
|
||||
}),
|
||||
unreadAmount ? BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.Badges.NumberBadge, {
|
||||
className: BDFDB.disCN._pindmspinnedchannelsheaderamount,
|
||||
count: unreadAmount
|
||||
}) : null,
|
||||
this.settings.general.channelAmount ? BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.Badges.NumberBadge, {
|
||||
className: BDFDB.disCN._pindmspinnedchannelsheaderamount,
|
||||
count: foundDMs.length,
|
||||
disableColor: true
|
||||
}) : null,
|
||||
BDFDB.ReactUtils.createElement("div", {
|
||||
className: BDFDB.disCNS._pindmspinnedchannelsheaderarrow + BDFDB.disCNS.channelheadericonwrapper + BDFDB.disCN.channelheadericonclickable,
|
||||
children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SvgIcon, {
|
||||
className: BDFDB.disCNS._pindmspinnedchannelsheaderarrow + BDFDB.disCN.channelheadericon,
|
||||
nativeClass: true,
|
||||
iconSVG: `<svg width="24" height="24" viewBox="4 4 16 16"><path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" d="M16.59 8.59004L12 13.17L7.41 8.59004L6 10L12 16L18 10L16.59 8.59004Z"></path></svg>`
|
||||
})
|
||||
]
|
||||
}));
|
||||
},
|
||||
children: [
|
||||
BDFDB.ObjectUtils.is(color) ? BDFDB.ReactUtils.createElement("span", {
|
||||
className: BDFDB.disCN.dmchannelheadertext,
|
||||
children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TextGradientElement, {
|
||||
gradient: BDFDB.ColorUtils.createGradient(color),
|
||||
children: category.name
|
||||
})
|
||||
}) : BDFDB.ReactUtils.createElement("span", {
|
||||
className: BDFDB.disCN.dmchannelheadertext,
|
||||
style: {color: color},
|
||||
children: category.name,
|
||||
}),
|
||||
unreadAmount ? BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.Badges.NumberBadge, {
|
||||
className: BDFDB.disCN._pindmspinnedchannelsheaderamount,
|
||||
count: unreadAmount
|
||||
}) : null,
|
||||
this.settings.general.channelAmount ? BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.Badges.NumberBadge, {
|
||||
className: BDFDB.disCN._pindmspinnedchannelsheaderamount,
|
||||
count: foundDMs.length,
|
||||
disableColor: true
|
||||
}) : null,
|
||||
BDFDB.ReactUtils.createElement("div", {
|
||||
className: BDFDB.disCNS._pindmspinnedchannelsheaderarrow + BDFDB.disCNS.channelheadericonwrapper + BDFDB.disCN.channelheadericonclickable,
|
||||
children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SvgIcon, {
|
||||
className: BDFDB.disCNS._pindmspinnedchannelsheaderarrow + BDFDB.disCN.channelheadericon,
|
||||
nativeClass: true,
|
||||
iconSVG: `<svg width="24" height="24" viewBox="4 4 16 16"><path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" d="M16.59 8.59004L12 13.17L7.41 8.59004L6 10L12 16L18 10L16.59 8.59004Z"></path></svg>`
|
||||
})
|
||||
].filter(n => n)
|
||||
}),
|
||||
hoveredChannel == "header_" + category.id && BDFDB.ReactUtils.createElement("div", {
|
||||
className: BDFDB.disCNS.dmchannel + BDFDB.disCNS._pindmsdmchannelpinned + BDFDB.disCNS._pindmsdmchannelplaceholder + BDFDB.disCN.namecontainernamecontainer,
|
||||
children: BDFDB.ReactUtils.createElement("div", {
|
||||
className: BDFDB.disCN.namecontainerlayout
|
||||
})
|
||||
].filter(n => n)
|
||||
}),
|
||||
hoveredChannel == "header_" + category.id && BDFDB.ReactUtils.createElement("div", {
|
||||
className: BDFDB.disCNS.dmchannel + BDFDB.disCNS._pindmsdmchannelpinned + BDFDB.disCNS._pindmsdmchannelplaceholder + BDFDB.disCN.namecontainernamecontainer,
|
||||
children: BDFDB.ReactUtils.createElement("div", {
|
||||
className: BDFDB.disCN.namecontainerlayout
|
||||
})
|
||||
})
|
||||
].filter(n => n);
|
||||
].filter(n => n);
|
||||
}
|
||||
else return null;
|
||||
}
|
||||
else return null;
|
||||
}
|
||||
else return renderSection(...args);
|
||||
};
|
||||
else return renderSection(...args);
|
||||
};
|
||||
}
|
||||
else if (typeof returnvalue.props.children == "function") {
|
||||
let childrenRender = returnvalue.props.children;
|
||||
returnvalue.props.children = BDFDB.TimeUtils.suppress((...args) => {
|
||||
let children = childrenRender(...args);
|
||||
this.injectCategories(instance, children, categories);
|
||||
return children;
|
||||
}, "", this);
|
||||
}
|
||||
else if (BDFDB.ArrayUtils.is(returnvalue)) {
|
||||
for (let child of returnvalue) this.injectCategories(instance, child, categories);
|
||||
}
|
||||
else this.injectCategories(instance, returnvalue.props.children, categories);
|
||||
}
|
||||
|
||||
processPrivateChannel (e) {
|
||||
|
@ -686,26 +691,40 @@ module.exports = (_ => {
|
|||
e.node.addEventListener("mousedown", e.node.PinDMsMouseDownListener);
|
||||
}
|
||||
}
|
||||
if (e.returnvalue) e.returnvalue.props.children = [
|
||||
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TooltipContainer, {
|
||||
text: BDFDB.LanguageUtils.LanguageStrings.UNPIN,
|
||||
children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.Clickable, {
|
||||
className: BDFDB.disCN._pindmsunpinbutton,
|
||||
onClick: event => {
|
||||
BDFDB.ListenerUtils.stopEvent(event);
|
||||
this.removeFromCategory(e.instance.props.channel.id, category, "channelList");
|
||||
},
|
||||
children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SvgIcon, {
|
||||
className: BDFDB.disCN._pindmsunpinicon,
|
||||
name: BDFDB.LibraryComponents.SvgIcon.Names.PIN
|
||||
})
|
||||
})
|
||||
}),
|
||||
e.returnvalue.props.children
|
||||
].flat(10).filter(n => n);
|
||||
if (e.returnvalue) {
|
||||
if (typeof e.returnvalue.props.children == "function") {
|
||||
let childrenRender = e.returnvalue.props.children;
|
||||
e.returnvalue.props.children = BDFDB.TimeUtils.suppress((...args) => {
|
||||
let children = childrenRender(...args);
|
||||
this._processPrivateChannel(e.instance, children);
|
||||
return children;
|
||||
}, "", this);
|
||||
}
|
||||
else this._processPrivateChannel(e.instance, e.returnvalue);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_processPrivateChannel (instance, returnvalue) {
|
||||
returnvalue.props.children = [
|
||||
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TooltipContainer, {
|
||||
text: BDFDB.LanguageUtils.LanguageStrings.UNPIN,
|
||||
children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.Clickable, {
|
||||
className: BDFDB.disCN._pindmsunpinbutton,
|
||||
onClick: event => {
|
||||
BDFDB.ListenerUtils.stopEvent(event);
|
||||
this.removeFromCategory(instance.props.channel.id, category, "channelList");
|
||||
},
|
||||
children: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.SvgIcon, {
|
||||
className: BDFDB.disCN._pindmsunpinicon,
|
||||
name: BDFDB.LibraryComponents.SvgIcon.Names.PIN
|
||||
})
|
||||
})
|
||||
}),
|
||||
returnvalue.props.children
|
||||
].flat(10).filter(n => n);
|
||||
}
|
||||
|
||||
processDirectMessage (e) {
|
||||
if (e.instance.props.channel) {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* @name ServerHider
|
||||
* @author DevilBro
|
||||
* @authorId 278543574059057154
|
||||
* @version 6.2.1
|
||||
* @version 6.2.2
|
||||
* @description Allows you to hide certain Servers in your Server List
|
||||
* @invite Jx3TjNS
|
||||
* @donate https://www.paypal.me/MircoWittrien
|
||||
|
@ -17,7 +17,7 @@ module.exports = (_ => {
|
|||
"info": {
|
||||
"name": "ServerHider",
|
||||
"author": "DevilBro",
|
||||
"version": "6.2.1",
|
||||
"version": "6.2.2",
|
||||
"description": "Allows you to hide certain Servers in your Server List"
|
||||
}
|
||||
};
|
||||
|
@ -68,6 +68,8 @@ module.exports = (_ => {
|
|||
return template.content.firstElementChild;
|
||||
}
|
||||
} : (([Plugin, BDFDB]) => {
|
||||
let hiddenEles;
|
||||
|
||||
return class ServerHider extends Plugin {
|
||||
onLoad () {
|
||||
this.defaults = {
|
||||
|
@ -84,6 +86,8 @@ module.exports = (_ => {
|
|||
}
|
||||
|
||||
onStart () {
|
||||
hiddenEles = BDFDB.DataUtils.load(this, "hidden");
|
||||
|
||||
BDFDB.PatchUtils.patch(this, BDFDB.LibraryModules.DispatchApiUtils, "dispatch", {after: e => {
|
||||
if (e.methodArguments[0].type == BDFDB.DiscordConstants.ActionTypes.STREAMER_MODE_UPDATE) BDFDB.GuildUtils.rerenderAll(true);
|
||||
}});
|
||||
|
@ -167,16 +171,14 @@ module.exports = (_ => {
|
|||
BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuItem, {
|
||||
label: this.labels.submenu_openhidemenu,
|
||||
id: BDFDB.ContextMenuUtils.createItemId(this.name, "openmenu"),
|
||||
action: _ => {
|
||||
this.showHideModal();
|
||||
}
|
||||
action: _ => this.showHideModal()
|
||||
}),
|
||||
!instance.props.guild && !instance.props.folderId ? null : BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuItem, {
|
||||
label: instance.props.guild ? this.labels.submenu_hideserver : this.labels.submenu_hidefolder,
|
||||
id: BDFDB.ContextMenuUtils.createItemId(this.name, "hide"),
|
||||
action: _ => {
|
||||
if (instance.props.guild) this.toggleItem(BDFDB.DataUtils.load(this, "hidden", "servers") || [], instance.props.guild.id, "servers");
|
||||
else this.toggleItem(BDFDB.DataUtils.load(this, "hidden", "folders") || [], instance.props.folderId, "folders");
|
||||
if (instance.props.guild) this.toggleItem(hiddenEles && hiddenEles.servers || [], instance.props.guild.id, "servers");
|
||||
else this.toggleItem(hiddenEles && hiddenEles.folders || [] || [], instance.props.folderId, "folders");
|
||||
}
|
||||
})
|
||||
].filter(n => n)
|
||||
|
@ -188,31 +190,32 @@ module.exports = (_ => {
|
|||
|
||||
processGuilds (e) {
|
||||
if (this.settings.general.onlyHideInStream && !BDFDB.LibraryModules.StreamerModeStore.enabled) return;
|
||||
let hiddenEles = BDFDB.DataUtils.load(this, "hidden");
|
||||
let hiddenGuildIds = hiddenEles.servers || [];
|
||||
let hiddenFolderIds = hiddenEles.folders || [];
|
||||
if (hiddenGuildIds.length || hiddenFolderIds.length) {
|
||||
let [children, index] = BDFDB.ReactUtils.findParent(e.returnvalue, {props: ["folderId", "guildId"], someProps: true});
|
||||
let [children, index] = BDFDB.ReactUtils.findParent(e.returnvalue, {props: ["folderNode", "guildNode"], someProps: true});
|
||||
if (index > -1) for (let i in children) if (children[i] && children[i].props) {
|
||||
if (children[i].props.folderId) {
|
||||
if (hiddenFolderIds.includes(children[i].props.folderId)) children[i] = null;
|
||||
if (children[i].props.folderNode) {
|
||||
if (hiddenFolderIds.includes(children[i].props.folderNode.id)) children[i] = null;
|
||||
else {
|
||||
let guildIds = [].concat(children[i].props.guildIds.filter(guildId => !hiddenGuildIds.includes(guildId)));
|
||||
if (guildIds.length) {
|
||||
children[i].props.hiddenGuildIds = [].concat(children[i].props.guildIds.filter(guildId => hiddenGuildIds.includes(guildId)));
|
||||
children[i].props.guildIds = guildIds;
|
||||
let guilds = [].concat(children[i].props.folderNode.children.filter(guild => !hiddenGuildIds.includes(guild.id)));
|
||||
if (guilds.length) {
|
||||
children[i].props.hiddenGuildIds = [].concat(children[i].props.folderNode.children.filter(guild => hiddenGuildIds.includes(guild.id)));
|
||||
children[i].props.folderNode = Object.assign({}, children[i].props.folderNode, {children: guilds});
|
||||
}
|
||||
else children[i] = null;
|
||||
}
|
||||
}
|
||||
else if (children[i].props.guildId && hiddenGuildIds.includes(children[i].props.guildId)) children[i] = null;
|
||||
else if (children[i].props.guildNode && hiddenGuildIds.includes(children[i].props.guildNode.id)) children[i] = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
showHideModal () {
|
||||
let hiddenGuildIds = BDFDB.DataUtils.load(this, "hidden", "servers") || [];
|
||||
let hiddenFolderIds = BDFDB.DataUtils.load(this, "hidden", "folders") || [];
|
||||
let switchInstances = {};
|
||||
|
||||
let hiddenGuildIds = hiddenEles && hiddenEles.servers || [];
|
||||
let hiddenFolderIds = hiddenEles && hiddenEles.folders || [];
|
||||
let guilds = BDFDB.LibraryModules.FolderStore.guildFolders.map(n => n.guildIds).flat(10).map(guildId => BDFDB.LibraryModules.GuildStore.getGuild(guildId)).filter(n => n);
|
||||
let folders = BDFDB.LibraryModules.FolderStore.guildFolders.filter(n => n.folderId);
|
||||
let foldersAdded = [];
|
||||
|
@ -223,18 +226,14 @@ module.exports = (_ => {
|
|||
subHeader: "",
|
||||
contentClassName: BDFDB.disCN.listscroller,
|
||||
children: guilds.map((guild, i) => {
|
||||
let folder = folders.find(folder => folder.guildIds.includes(guild.id) && !foldersAdded.includes(folder.folderId));
|
||||
if (folder) foldersAdded.push(folder.folderId);
|
||||
let folder = folders.find(folder => folder.guildIds.includes(guild.id));
|
||||
let firstGuildInFolder = folder && !foldersAdded.includes(folder.folderId);
|
||||
if (firstGuildInFolder) foldersAdded.push(folder.folderId);
|
||||
return [
|
||||
folder ? [
|
||||
folders.indexOf(folder) == 0 ? null : [
|
||||
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormDivider, {
|
||||
className: BDFDB.disCNS.margintop4 + BDFDB.disCN.marginbottom4
|
||||
}),
|
||||
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormDivider, {
|
||||
className: BDFDB.disCNS.margintop8 + BDFDB.disCN.marginbottom4
|
||||
})
|
||||
],
|
||||
firstGuildInFolder ? [
|
||||
!(folders.indexOf(folder) == 0 && i == 0) && BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormDivider, {
|
||||
className: BDFDB.disCNS.margintop4 + BDFDB.disCN.marginbottom4
|
||||
}),
|
||||
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ListRow, {
|
||||
prefix: BDFDB.ReactUtils.createElement("div", {
|
||||
className: BDFDB.disCN.listavatar,
|
||||
|
@ -259,16 +258,16 @@ module.exports = (_ => {
|
|||
}),
|
||||
suffix: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.Switch, {
|
||||
value: !hiddenFolderIds.includes(folder.folderId),
|
||||
onChange: value => {this.toggleItem(hiddenFolderIds, folder.folderId, "folders", value);}
|
||||
onChange: value => this.toggleItem(hiddenFolderIds, folder.folderId, "folders", value)
|
||||
})
|
||||
})
|
||||
] : null,
|
||||
i == 0 && !folder ? null : BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormDivider, {
|
||||
(i > 0 || folder) && BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.FormComponents.FormDivider, {
|
||||
className: BDFDB.disCNS.margintop4 + BDFDB.disCN.marginbottom4
|
||||
}),
|
||||
BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.ListRow, {
|
||||
prefix: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.GuildComponents.Guild, {
|
||||
className: BDFDB.disCN.listavatar,
|
||||
className: BDFDB.DOMUtils.formatClassName(BDFDB.disCN.listavatar, folder && BDFDB.disCN.marginleft8),
|
||||
guild: guild,
|
||||
menu: false,
|
||||
tooltip: false
|
||||
|
@ -277,8 +276,9 @@ module.exports = (_ => {
|
|||
children: guild.name
|
||||
}),
|
||||
suffix: BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.Switch, {
|
||||
ref: instance => {if (instance) switchInstances[guild.id] = instance;},
|
||||
value: !hiddenGuildIds.includes(guild.id),
|
||||
onChange: value => {this.toggleItem(hiddenGuildIds, guild.id, "servers", value);}
|
||||
onChange: value => this.toggleItem(hiddenGuildIds, guild.id, "servers", value)
|
||||
})
|
||||
})
|
||||
];
|
||||
|
@ -294,12 +294,11 @@ module.exports = (_ => {
|
|||
onClick: (modal, instance) => {
|
||||
let enabled = hiddenGuildIds.includes(guilds[0].id);
|
||||
hiddenGuildIds = [].concat(enabled ? [] : guilds.map(n => n.id));
|
||||
BDFDB.DataUtils.save(hiddenGuildIds, this, "hidden", "servers");
|
||||
hiddenFolderIds = [].concat(enabled ? [] : folders.map(n => n.folderId));
|
||||
BDFDB.DataUtils.save(hiddenFolderIds, this, "hidden", "folders");
|
||||
let switchInstances = BDFDB.ReactUtils.findOwner(instance, {name: "BDFDB_Switch", all: true, unlimited: true});
|
||||
for (let switchIns of switchInstances) switchIns.props.value = enabled;
|
||||
BDFDB.ReactUtils.forceUpdate(switchInstances);
|
||||
hiddenEles = {servers: hiddenGuildIds, folders: hiddenFolderIds};
|
||||
BDFDB.DataUtils.save(hiddenEles, this, "hidden");
|
||||
for (let i in switchInstances) switchInstances[i].props.value = enabled;
|
||||
BDFDB.ReactUtils.forceUpdate(BDFDB.ObjectUtils.toArray(switchInstances));
|
||||
BDFDB.GuildUtils.rerenderAll(true);
|
||||
}
|
||||
}]
|
||||
|
@ -310,7 +309,8 @@ module.exports = (_ => {
|
|||
if (!id) return;
|
||||
if (force || (force === undefined && array.includes(id))) BDFDB.ArrayUtils.remove(array, id, true);
|
||||
else array.push(id);
|
||||
BDFDB.DataUtils.save(array, this, "hidden", type);
|
||||
hiddenEles = Object.assign({}, hiddenEles, {[type]: array});
|
||||
BDFDB.DataUtils.save(hiddenEles, this, "hidden");
|
||||
BDFDB.GuildUtils.rerenderAll(true);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue