ViewRaw: Add setting for swapping left/right click (#1263)

Co-authored-by: V <vendicated@riseup.net>
This commit is contained in:
rad 2023-06-12 19:05:04 -04:00 committed by GitHub
parent a4191c9f6c
commit 386dfe363a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 46 additions and 9 deletions

View file

@ -17,13 +17,14 @@
*/ */
import { addButton, removeButton } from "@api/MessagePopover"; import { addButton, removeButton } from "@api/MessagePopover";
import { definePluginSettings } from "@api/Settings";
import ErrorBoundary from "@components/ErrorBoundary"; import ErrorBoundary from "@components/ErrorBoundary";
import { Flex } from "@components/Flex"; import { Flex } from "@components/Flex";
import { Devs } from "@utils/constants"; import { Devs } from "@utils/constants";
import { Margins } from "@utils/margins"; import { Margins } from "@utils/margins";
import { copyWithToast } from "@utils/misc"; import { copyWithToast } from "@utils/misc";
import { closeModal, ModalCloseButton, ModalContent, ModalFooter, ModalHeader, ModalRoot, ModalSize, openModal } from "@utils/modal"; 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 { Button, ChannelStore, Forms, Parser, Text } from "@webpack/common";
import { Message } from "discord-types/general"; 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({ export default definePlugin({
name: "ViewRaw", name: "ViewRaw",
description: "Copy and view the raw content/data of any message.", 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"], dependencies: ["MessagePopoverAPI"],
settings,
start() { start() {
addButton("ViewRaw", msg => { addButton("ViewRaw", msg => {
return { const handleClick = () => {
label: "View Raw (Left Click) / Copy Raw (Right Click)", if (settings.store.clickMethod === "Right") {
icon: CopyIcon, copyWithToast(msg.content);
message: msg, } else {
channel: ChannelStore.getChannel(msg.channel_id), openViewRawModal(msg);
onClick: () => openViewRawModal(msg), }
onContextMenu: e => { };
const handleContextMenu = e => {
if (settings.store.clickMethod === "Left") {
e.preventDefault(); e.preventDefault();
e.stopPropagation(); e.stopPropagation();
copyWithToast(msg.content); 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
};
}); });
}, },

View file

@ -322,6 +322,10 @@ export const Devs = /* #__PURE__*/ Object.freeze({
ImLvna: { ImLvna: {
name: "Luna <3", name: "Luna <3",
id: 174200708818665472n id: 174200708818665472n
},
rad: {
name: "rad",
id: 113027285765885952n
} }
} satisfies Record<string, Dev>); } satisfies Record<string, Dev>);