From eca4af829f5e900fc6308a9f81f16b6c0e2cc5d5 Mon Sep 17 00:00:00 2001 From: Adrian Castro Date: Fri, 25 Aug 2023 14:24:58 +0200 Subject: [PATCH] feat: add copyUserURLs plugin (#1683) Co-authored-by: V --- src/plugins/copyUserURLs.tsx | 55 ++++++++++++++++++++++++++++++++++++ src/utils/constants.ts | 4 +++ 2 files changed, 59 insertions(+) create mode 100644 src/plugins/copyUserURLs.tsx diff --git a/src/plugins/copyUserURLs.tsx b/src/plugins/copyUserURLs.tsx new file mode 100644 index 00000000..e3c336fb --- /dev/null +++ b/src/plugins/copyUserURLs.tsx @@ -0,0 +1,55 @@ +/* + * Vencord, a modification for Discord's desktop app + * Copyright (c) 2023 Vendicated and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . +*/ + +import { addContextMenuPatch, NavContextMenuPatchCallback, removeContextMenuPatch } from "@api/ContextMenu"; +import { LinkIcon } from "@components/Icons"; +import { Devs } from "@utils/constants"; +import definePlugin from "@utils/types"; +import { Clipboard, Menu } from "@webpack/common"; +import type { Channel, User } from "discord-types/general"; + +interface UserContextProps { + channel: Channel; + guildId?: string; + user: User; +} + +const UserContextMenuPatch: NavContextMenuPatchCallback = (children, { user }: UserContextProps) => () => { + children.push( + Clipboard.copy(``)} + icon={LinkIcon} + /> + ); +}; + +export default definePlugin({ + name: "CopyUserURLs", + authors: [Devs.castdrian], + description: "Adds a 'Copy User URL' option to the user context menu.", + + start() { + addContextMenuPatch("user-context", UserContextMenuPatch); + }, + + stop() { + removeContextMenuPatch("user-context", UserContextMenuPatch); + }, +}); diff --git a/src/utils/constants.ts b/src/utils/constants.ts index 9e2b2fe7..9c90e4b9 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -343,6 +343,10 @@ export const Devs = /* #__PURE__*/ Object.freeze({ name: "Rini", id: 1079479184478441643n }, + castdrian: { + name: "castdrian", + id: 224617799434108928n + }, Arrow: { name: "arrow", id: 958158495302176778n