diff options
author | Adrian Castro <adrifcastr@gmail.com> | 2023-08-25 14:24:58 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-25 14:24:58 +0200 |
commit | eca4af829f5e900fc6308a9f81f16b6c0e2cc5d5 (patch) | |
tree | f66fdea652d7a82729abc9be83828f30ce25e903 /src | |
parent | 60458cdf1fdd4c4a1728177e2b98f9932467d3ad (diff) | |
download | Vencord-eca4af829f5e900fc6308a9f81f16b6c0e2cc5d5.tar.gz Vencord-eca4af829f5e900fc6308a9f81f16b6c0e2cc5d5.tar.bz2 Vencord-eca4af829f5e900fc6308a9f81f16b6c0e2cc5d5.zip |
feat: add copyUserURLs plugin (#1683)
Co-authored-by: V <vendicated@riseup.net>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/copyUserURLs.tsx | 55 | ||||
-rw-r--r-- | src/utils/constants.ts | 4 |
2 files changed, 59 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); + }, +}); diff --git a/src/utils/constants.ts b/src/utils/constants.ts index 9e2b2fe..9c90e4b 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 |