From a1fabcdf0aa665c7ee0254c1d7f257e5262a954d Mon Sep 17 00:00:00 2001 From: V Date: Fri, 16 Jun 2023 19:28:30 +0200 Subject: UnsuppressEmbeds: Support dms --- src/plugins/UnsuppressEmbeds.tsx | 69 ---------------------------------------- src/plugins/unsuppressEmbeds.tsx | 67 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 69 deletions(-) delete mode 100644 src/plugins/UnsuppressEmbeds.tsx create mode 100644 src/plugins/unsuppressEmbeds.tsx (limited to 'src') diff --git a/src/plugins/UnsuppressEmbeds.tsx b/src/plugins/UnsuppressEmbeds.tsx deleted file mode 100644 index 99735c7..0000000 --- a/src/plugins/UnsuppressEmbeds.tsx +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Vencord, a modification for Discord's desktop app - * Copyright (c) 2022 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, findGroupChildrenByChildId, NavContextMenuPatchCallback, removeContextMenuPatch } from "@api/ContextMenu"; -import { ImageInvisible, ImageVisible } from "@components/Icons"; -import { Devs } from "@utils/constants"; -import definePlugin from "@utils/types"; -import { Menu, PermissionsBits, PermissionStore, RestAPI, UserStore } from "@webpack/common"; - -const EMBED_SUPPRESSED = 1 << 2; - -const messageContextMenuPatch: NavContextMenuPatchCallback = (children, props) => { - const { message: { author, embeds, flags } } = props; - - const isEmbedSuppressed = (flags & EMBED_SUPPRESSED) !== 0; - const hasEmbedPerms = !!(PermissionStore.getChannelPermissions({ id: props.channel.id }) & PermissionsBits.EMBED_LINKS); - - return () => { - if (!isEmbedSuppressed && !embeds.length) return; - if (author.id === UserStore.getCurrentUser().id && !hasEmbedPerms) return; - const menuGroup = findGroupChildrenByChildId("delete", children); - const deleteItem = menuGroup?.findIndex(i => i?.props?.id === "delete"); - if (!deleteItem || !menuGroup) return; - menuGroup.splice(deleteItem - 1, 0, ( - { - RestAPI.patch({ - url: `/channels/${props.channel.id}/messages/${props.message.id}`, - body: { flags: isEmbedSuppressed ? flags & ~EMBED_SUPPRESSED : flags | EMBED_SUPPRESSED } - }); - }} - /> - )); - }; -}; - -export default definePlugin({ - name: "UnsuppressEmbeds", - authors: [Devs.rad, Devs.HypedDomi], - description: "Allows you to unsuppress embeds in messages", - - start() { - addContextMenuPatch("message", messageContextMenuPatch); - }, - - stop() { - removeContextMenuPatch("message", messageContextMenuPatch); - }, -}); diff --git a/src/plugins/unsuppressEmbeds.tsx b/src/plugins/unsuppressEmbeds.tsx new file mode 100644 index 0000000..a219607 --- /dev/null +++ b/src/plugins/unsuppressEmbeds.tsx @@ -0,0 +1,67 @@ +/* + * Vencord, a modification for Discord's desktop app + * Copyright (c) 2022 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, findGroupChildrenByChildId, NavContextMenuPatchCallback, removeContextMenuPatch } from "@api/ContextMenu"; +import { ImageInvisible, ImageVisible } from "@components/Icons"; +import { Devs } from "@utils/constants"; +import definePlugin from "@utils/types"; +import { Menu, PermissionsBits, PermissionStore, RestAPI, UserStore } from "@webpack/common"; + +const EMBED_SUPPRESSED = 1 << 2; + +const messageContextMenuPatch: NavContextMenuPatchCallback = (children, { channel, message: { author, embeds, flags, id: messageId } }) => () => { + const isEmbedSuppressed = (flags & EMBED_SUPPRESSED) !== 0; + if (!isEmbedSuppressed && !embeds.length) return; + + const hasEmbedPerms = channel.isPrivate() || !!(PermissionStore.getChannelPermissions({ id: channel.id }) & PermissionsBits.EMBED_LINKS); + if (author.id === UserStore.getCurrentUser().id && !hasEmbedPerms) return; + + const menuGroup = findGroupChildrenByChildId("delete", children); + const deleteIndex = menuGroup?.findIndex(i => i?.props?.id === "delete"); + if (!deleteIndex || !menuGroup) return; + + menuGroup.splice(deleteIndex - 1, 0, ( + + RestAPI.patch({ + url: `/channels/${channel.id}/messages/${messageId}`, + body: { flags: isEmbedSuppressed ? flags & ~EMBED_SUPPRESSED : flags | EMBED_SUPPRESSED } + }) + } + /> + )); +}; + +export default definePlugin({ + name: "UnsuppressEmbeds", + authors: [Devs.rad, Devs.HypedDomi], + description: "Allows you to unsuppress embeds in messages", + + start() { + addContextMenuPatch("message", messageContextMenuPatch); + }, + + stop() { + removeContextMenuPatch("message", messageContextMenuPatch); + }, +}); -- cgit