ViewIcons: Now opens icons in image viewer

This commit is contained in:
Vendicated 2022-09-08 22:25:21 +02:00
parent e52225304e
commit 6099179f02
No known key found for this signature in database
GPG key ID: EC781ADFB93EFFA3
3 changed files with 26 additions and 7 deletions

View file

@ -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}}`;

View file

@ -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",

View file

@ -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 });