aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/plugins/viewIcons.tsx (renamed from src/plugins/viewIcons.ts)23
-rw-r--r--src/utils/modal.tsx8
2 files changed, 25 insertions, 6 deletions
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 });