Update ImageUtilities.plugin.js
This commit is contained in:
parent
938fd95ac6
commit
181dae5411
|
@ -14,12 +14,15 @@ module.exports = (_ => {
|
|||
"info": {
|
||||
"name": "ImageUtilities",
|
||||
"author": "DevilBro",
|
||||
"version": "4.2.6",
|
||||
"version": "4.2.7",
|
||||
"description": "Add a handful of options for images/emotes/avatars (direct download, reverse image search, zoom, copy image link, copy image to clipboard, gallery mode)"
|
||||
},
|
||||
"changeLog": {
|
||||
"added": {
|
||||
"Videos": "Save as and Copy File Link now also works for videos"
|
||||
"fixed": {
|
||||
"Image as Video": "Fixed issue where images would sometimes be seen as videos"
|
||||
},
|
||||
"improved": {
|
||||
"Discords Native Options": "Hides Discords Native (Save/Copy/Link Copy) options to stop context menus from having duplicates and being huge"
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -523,6 +526,11 @@ module.exports = (_ => {
|
|||
}).filter(n => n);
|
||||
if (!validUrls.length) return;
|
||||
|
||||
let [removeParent, removeIndex] = BDFDB.ContextMenuUtils.findItem(e.returnvalue, {id: "copy-native-link"});
|
||||
if (removeIndex > -1) removeParent.splice(removeIndex, 1);
|
||||
[removeParent, removeIndex] = BDFDB.ContextMenuUtils.findItem(e.returnvalue, {id: "copy-image", group: true});
|
||||
if (removeIndex > -1) removeParent.splice(removeIndex, 1);
|
||||
|
||||
let type = this.isValid(validUrls[0].url, "video") ? BDFDB.LanguageUtils.LanguageStrings.VIDEO : BDFDB.LanguageUtils.LanguageStrings.IMAGE;
|
||||
let [children, index] = BDFDB.ContextMenuUtils.findItem(e.returnvalue, {id: "devmode-copy-id", group: true});
|
||||
children.splice(index > -1 ? index : children.length, 0, BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuGroup, {
|
||||
|
@ -642,11 +650,13 @@ module.exports = (_ => {
|
|||
processImageModal (e) {
|
||||
if (clickedImage) e.instance.props.cachedImage = clickedImage;
|
||||
let url = this.getImageSrc(e.instance.props.cachedImage && e.instance.props.cachedImage.src ? e.instance.props.cachedImage : e.instance.props.src);
|
||||
let isVideo = (typeof e.instance.props.children == "function" && e.instance.props.children(Object.assign({}, e.instance.props, {size: e.instance.props})) || {type: {}}).type.displayName == "Video";
|
||||
url = isVideo ? (typeof e.instance.props.children == "function" && e.instance.props.children(Object.assign({}, e.instance.props, {size: e.instance.props})) || {type: {}}).props.src : url;
|
||||
let messages = this.getMessageGroupOfImage(url);
|
||||
if (e.returnvalue) {
|
||||
let [children, index] = BDFDB.ReactUtils.findParent(e.returnvalue, {props: [["className", BDFDB.disCN.downloadlink]]});
|
||||
if (index > -1) {
|
||||
let type = this.isValid(url, "video") ? BDFDB.LanguageUtils.LanguageStrings.VIDEO : BDFDB.LanguageUtils.LanguageStrings.IMAGE;
|
||||
let type = isVideo ? BDFDB.LanguageUtils.LanguageStrings.VIDEO : BDFDB.LanguageUtils.LanguageStrings.IMAGE;
|
||||
let openContext = event => {
|
||||
BDFDB.ContextMenuUtils.open(this, event, BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuGroup, {
|
||||
children: Object.keys(zoomSettings).map(type => BDFDB.ContextMenuUtils.createItem(BDFDB.LibraryComponents.MenuItems.MenuSliderItem, Object.assign({
|
||||
|
@ -665,12 +675,11 @@ module.exports = (_ => {
|
|||
}, BDFDB.ObjectUtils.extract(this.defaults.zoomSettings[type], "digits", "minValue", "maxValue"))))
|
||||
}));
|
||||
};
|
||||
let isVideo = (typeof e.instance.props.children == "function" && e.instance.props.children(Object.assign({}, e.instance.props, {size: e.instance.props})) || {type: {}}).type.displayName == "Video";
|
||||
children[index] = BDFDB.ReactUtils.createElement("span", {
|
||||
className: BDFDB.disCN._imageutilitiesoperations,
|
||||
children: [
|
||||
children[index],
|
||||
settings.enableSaveImg && !isVideo && [
|
||||
settings.enableSaveImg && [
|
||||
BDFDB.ReactUtils.createElement("span", {
|
||||
className: BDFDB.disCN.downloadlink,
|
||||
children: "|",
|
||||
|
@ -695,7 +704,7 @@ module.exports = (_ => {
|
|||
}
|
||||
})
|
||||
],
|
||||
settings.enableCopyImg && this.isValid(url, "copyable") && !isVideo && [
|
||||
settings.enableCopyImg && this.isValid(url, "copyable") && [
|
||||
BDFDB.ReactUtils.createElement("span", {
|
||||
className: BDFDB.disCN.downloadlink,
|
||||
children: "|",
|
||||
|
@ -743,7 +752,7 @@ module.exports = (_ => {
|
|||
if (settings.addDetails) e.returnvalue.props.children.push(BDFDB.ReactUtils.createElement("div", {
|
||||
className: BDFDB.disCN._imageutilitiesdetailswrapper,
|
||||
children: [
|
||||
{label: "Source", text: e.instance.props.src},
|
||||
{label: "Source", text: url},
|
||||
{label: "Size", text: `${e.instance.props.width}x${e.instance.props.height}px`},
|
||||
{label: "Image", text: `${imageIndex + 1} of ${amount}`}
|
||||
].map(data => BDFDB.ReactUtils.createElement(BDFDB.LibraryComponents.TextElement, {
|
||||
|
@ -786,7 +795,8 @@ module.exports = (_ => {
|
|||
processLazyImage (e) {
|
||||
if (e.node) {
|
||||
if (e.instance.props.resized) e.instance.state.readyState = BDFDB.LibraryComponents.Image.ImageReadyStates.READY;
|
||||
if (settings.enableZoom && !e.node.querySelector("video") && !BDFDB.DOMUtils.containsClass(e.node.parentElement, BDFDB.disCN._imageutilitiessibling) && BDFDB.DOMUtils.getParent(BDFDB.dotCN.imagemodal, e.node)) {
|
||||
let isVideo = (typeof e.instance.props.children == "function" && e.instance.props.children(Object.assign({}, e.instance.props, {size: e.instance.props})) || {type: {}}).type.displayName == "Video";
|
||||
if (settings.enableZoom && !isVideo && !BDFDB.DOMUtils.containsClass(e.node.parentElement, BDFDB.disCN._imageutilitiessibling) && BDFDB.DOMUtils.getParent(BDFDB.dotCN.imagemodal, e.node)) {
|
||||
e.node.addEventListener("mousedown", event => {
|
||||
if (event.which != 1) return;
|
||||
BDFDB.ListenerUtils.stopEvent(event);
|
||||
|
@ -945,7 +955,7 @@ module.exports = (_ => {
|
|||
isValid (url, type) {
|
||||
if (!url) return false;
|
||||
const file = url && (BDFDB.LibraryModules.URLParser.parse(url).pathname || "").toLowerCase();
|
||||
return file && (url.startsWith("https://images-ext-2.discordapp.net/") || !type && Object.keys(fileTypes).some(t => file.endsWith(`.${t}`)) || type && Object.keys(fileTypes).filter(t => fileTypes[t][type]).some(t => file.endsWith(`.${t}`)));
|
||||
return file && (!type && (url.startsWith("https://images-ext-2.discordapp.net/") || Object.keys(fileTypes).some(t => file.endsWith(`/${t}`)) || file.endsWith(`.${t}`)) || type && Object.keys(fileTypes).filter(t => fileTypes[t][type]).some(t => file.endsWith(`/${t}`) || file.endsWith(`.${t}`)));
|
||||
}
|
||||
|
||||
downloadFile (url, path) {
|
||||
|
@ -968,7 +978,7 @@ module.exports = (_ => {
|
|||
let hrefURL = window.URL.createObjectURL(new Blob([body]));
|
||||
let tempLink = document.createElement("a");
|
||||
tempLink.href = hrefURL;
|
||||
tempLink.download = `${url.split("/").pop().split(".").slice(0, -1).join(".")}.${response.headers["content-type"].split("/").pop().split("+")[0]}`;
|
||||
tempLink.download = `${url.split("/").pop().split(".").slice(0, -1).join(".") || "unknown"}.${response.headers["content-type"].split("/").pop().split("+")[0]}`;
|
||||
tempLink.click();
|
||||
window.URL.revokeObjectURL(hrefURL);
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue