From 386dfe363a484ac0cd492cf6f61a717d90a454ca Mon Sep 17 00:00:00 2001 From: rad Date: Mon, 12 Jun 2023 19:05:04 -0400 Subject: [PATCH] ViewRaw: Add setting for swapping left/right click (#1263) Co-authored-by: V --- src/plugins/viewRaw.tsx | 51 +++++++++++++++++++++++++++++++++-------- src/utils/constants.ts | 4 ++++ 2 files changed, 46 insertions(+), 9 deletions(-) diff --git a/src/plugins/viewRaw.tsx b/src/plugins/viewRaw.tsx index d1ef7174e..eb0c35281 100644 --- a/src/plugins/viewRaw.tsx +++ b/src/plugins/viewRaw.tsx @@ -17,13 +17,14 @@ */ import { addButton, removeButton } from "@api/MessagePopover"; +import { definePluginSettings } from "@api/Settings"; import ErrorBoundary from "@components/ErrorBoundary"; import { Flex } from "@components/Flex"; import { Devs } from "@utils/constants"; import { Margins } from "@utils/margins"; import { copyWithToast } from "@utils/misc"; import { closeModal, ModalCloseButton, ModalContent, ModalFooter, ModalHeader, ModalRoot, ModalSize, openModal } from "@utils/modal"; -import definePlugin from "@utils/types"; +import definePlugin, { OptionType } from "@utils/types"; import { Button, ChannelStore, Forms, Parser, Text } from "@webpack/common"; import { Message } from "discord-types/general"; @@ -116,26 +117,58 @@ function openViewRawModal(msg: Message) { )); } +const settings = definePluginSettings({ + clickMethod: { + description: "Change the button to view the raw content/data of any message.", + type: OptionType.SELECT, + options: [ + { label: "Left Click to view the raw content.", value: "Left", default: true }, + { label: "Right click to view the raw content.", value: "Right" } + ] + } +}); + export default definePlugin({ name: "ViewRaw", description: "Copy and view the raw content/data of any message.", - authors: [Devs.KingFish, Devs.Ven], + authors: [Devs.KingFish, Devs.Ven, Devs.rad], dependencies: ["MessagePopoverAPI"], + settings, start() { addButton("ViewRaw", msg => { - return { - label: "View Raw (Left Click) / Copy Raw (Right Click)", - icon: CopyIcon, - message: msg, - channel: ChannelStore.getChannel(msg.channel_id), - onClick: () => openViewRawModal(msg), - onContextMenu: e => { + const handleClick = () => { + if (settings.store.clickMethod === "Right") { + copyWithToast(msg.content); + } else { + openViewRawModal(msg); + } + }; + + const handleContextMenu = e => { + if (settings.store.clickMethod === "Left") { e.preventDefault(); e.stopPropagation(); copyWithToast(msg.content); + } else { + e.preventDefault(); + e.stopPropagation(); + openViewRawModal(msg); } }; + + const label = settings.store.clickMethod === "Right" + ? "Copy Raw (Left Click) / View Raw (Right Click)" + : "View Raw (Left Click) / Copy Raw (Right Click)"; + + return { + label, + icon: CopyIcon, + message: msg, + channel: ChannelStore.getChannel(msg.channel_id), + onClick: handleClick, + onContextMenu: handleContextMenu + }; }); }, diff --git a/src/utils/constants.ts b/src/utils/constants.ts index 01a4485ac..24eafff96 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -322,6 +322,10 @@ export const Devs = /* #__PURE__*/ Object.freeze({ ImLvna: { name: "Luna <3", id: 174200708818665472n + }, + rad: { + name: "rad", + id: 113027285765885952n } } satisfies Record);