diff options
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/copyUserURLs.tsx | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/plugins/copyUserURLs.tsx b/src/plugins/copyUserURLs.tsx new file mode 100644 index 0000000..e3c336f --- /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 <https://www.gnu.org/licenses/>. +*/ + +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( + <Menu.MenuItem + id="vc-copy-user-url" + label="Copy User URL" + action={() => Clipboard.copy(`<https://discord.com/users/${user.id}>`)} + 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); + }, +}); |