aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVendicated <vendicated@riseup.net>2022-09-08 22:25:21 +0200
committerVendicated <vendicated@riseup.net>2022-09-08 22:25:21 +0200
commit6099179f0230e3c6eb449a2cd7f6a5c5d79201f2 (patch)
tree78d3eede2c9ca882481989523680de4c317032dd
parente52225304e47d92bf1b84f5a2c8e97ab57bd85a4 (diff)
downloadVencord-6099179f0230e3c6eb449a2cd7f6a5c5d79201f2.tar.gz
Vencord-6099179f0230e3c6eb449a2cd7f6a5c5d79201f2.tar.bz2
Vencord-6099179f0230e3c6eb449a2cd7f6a5c5d79201f2.zip
ViewIcons: Now opens icons in image viewer
-rwxr-xr-xbuild.mjs2
-rw-r--r--src/plugins/viewIcons.tsx (renamed from src/plugins/viewIcons.ts)23
-rw-r--r--src/utils/modal.tsx8
3 files changed, 26 insertions, 7 deletions
diff --git a/build.mjs b/build.mjs
index 6bdeffa..c1ab3cf 100755
--- a/build.mjs
+++ b/build.mjs
@@ -48,7 +48,7 @@ const globPlugins = {
continue;
}
const mod = `__pluginMod${i}`;
- code += `import ${mod} from "./${files[i].replace(".ts", "")}";\n`;
+ code += `import ${mod} from "./${files[i].replace(/.tsx?$/, "")}";\n`;
obj += `[${mod}.name]: ${mod},`;
}
code += `export default {${obj}}`;
diff --git a/src/plugins/viewIcons.ts b/src/plugins/viewIcons.tsx
index a6ba4d4..39c4303 100644
--- a/src/plugins/viewIcons.ts
+++ b/src/plugins/viewIcons.tsx
@@ -1,12 +1,31 @@
import { REACT_GLOBAL } from "../utils/constants";
-import IpcEvents from "../utils/IpcEvents";
+import { Modal, openModal } from "../utils/modal";
import definePlugin from '../utils/types';
+import { filters, waitFor } from "../webpack";
-const OPEN_URL = `VencordNative.ipc.invoke("${IpcEvents.OPEN_EXTERNAL}",`;
+let ImageModal: any;
+let renderMaskedLink: any;
+
+waitFor(filters.byDisplayName("ImageModal"), m => ImageModal = m.default);
+waitFor("renderMaskedLinkComponent", m => renderMaskedLink = m.renderMaskedLinkComponent);
+
+const OPEN_URL = "Vencord.Plugins.plugins.ViewIcons.openImage(";
export default definePlugin({
name: "ViewIcons",
author: "Vendicated",
description: "Makes Avatars/Banners in user profiles clickable, and adds Guild Context Menu Entries to View Banner/Icon. Crashes if you don't have Developer Mode enabled, will fix in the future.",
+
+ openImage(url: string) {
+ openModal(() => (
+ <ImageModal
+ shouldAnimate={true}
+ original={url}
+ src={url}
+ renderLinkComponent={renderMaskedLink}
+ />
+ ), { size: Modal.ModalSize.DYNAMIC });
+ },
+
patches: [
{
find: "UserProfileModalHeader",
diff --git a/src/utils/modal.tsx b/src/utils/modal.tsx
index 5628ebe..63821f3 100644
--- a/src/utils/modal.tsx
+++ b/src/utils/modal.tsx
@@ -1,8 +1,8 @@
import Components from "discord-types/components";
import { waitFor } from "../webpack";
-let Modal: Components.Modal;
-let modals: any;
+export let Modal: Components.Modal;
+export let modals: any;
waitFor("openModalLazy", m => modals = m);
waitFor("ModalRoot", m => Modal = m);
@@ -14,10 +14,10 @@ let modalId = 1337;
* @param Component The component to render in the modal
* @returns The key of this modal. This can be used to close the modal later with closeModal
*/
-export function openModal(Component: React.ComponentType) {
+export function openModal(Component: React.ComponentType, modalProps: Record<string, any>) {
let key = `Vencord${modalId++}`;
modals.openModal(props =>
- <Modal.ModalRoot {...props}>
+ <Modal.ModalRoot {...props} {...modalProps}>
<Component />
</Modal.ModalRoot>
, { modalKey: key });