From 0a39788aff8a433429210e56695583c8894ec92a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Han=20Seung=20Min=20-=20=ED=95=9C=EC=8A=B9=EB=AF=BC?= Date: Fri, 10 May 2024 02:59:44 +0900 Subject: [PATCH 1/2] initial commit --- src/plugins/youtubeDescription/README.md | 5 +++++ src/plugins/youtubeDescription/index.tsx | 23 +++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 src/plugins/youtubeDescription/README.md create mode 100644 src/plugins/youtubeDescription/index.tsx diff --git a/src/plugins/youtubeDescription/README.md b/src/plugins/youtubeDescription/README.md new file mode 100644 index 000000000..ae0f8a340 --- /dev/null +++ b/src/plugins/youtubeDescription/README.md @@ -0,0 +1,5 @@ +# YoutubeDescription + +Adds descriptions to youtube video embeds + +![demo](https://github.com/Vendicated/Vencord/assets/82430093/a69a48fa-d1a5-490d-a917-5c60e3fc38a8) diff --git a/src/plugins/youtubeDescription/index.tsx b/src/plugins/youtubeDescription/index.tsx new file mode 100644 index 000000000..14ec6351e --- /dev/null +++ b/src/plugins/youtubeDescription/index.tsx @@ -0,0 +1,23 @@ +/* + * Vencord, a Discord client mod + * Copyright (c) 2024 Vendicated and contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import { Devs } from "@utils/constants"; +import definePlugin from "@utils/types"; + +export default definePlugin({ + name: "YoutubeDescription", + description: "Adds descriptions to youtube video embeds", + authors: [Devs.arHSM], + patches: [ + { + find: ".default.Messages.SUPPRESS_ALL_EMBEDS", + replacement: { + match: /case \i\.MessageEmbedTypes\.VIDEO:(case \i\.MessageEmbedTypes\.\i:)*break;default:(\i=this\.renderDescription\(\))\}/, + replace: "$1 break; default: $2 }" + } + } + ] +}); From 5d008b07080ae732268be0363370ca4a6c933a7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Han=20Seung=20Min=20-=20=ED=95=9C=EC=8A=B9=EB=AF=BC?= Date: Sat, 11 May 2024 06:12:23 +0900 Subject: [PATCH 2/2] add toggle --- src/plugins/youtubeDescription/index.tsx | 32 +++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/src/plugins/youtubeDescription/index.tsx b/src/plugins/youtubeDescription/index.tsx index 14ec6351e..17d70a670 100644 --- a/src/plugins/youtubeDescription/index.tsx +++ b/src/plugins/youtubeDescription/index.tsx @@ -5,7 +5,12 @@ */ import { Devs } from "@utils/constants"; +import { isNonNullish } from "@utils/guards"; import definePlugin from "@utils/types"; +import { useState } from "@webpack/common"; +import { Embed } from "discord-types/general"; + +interface ToggleableDescriptionProps { embed: Embed, original: () => any; } export default definePlugin({ name: "YoutubeDescription", @@ -15,9 +20,30 @@ export default definePlugin({ { find: ".default.Messages.SUPPRESS_ALL_EMBEDS", replacement: { - match: /case \i\.MessageEmbedTypes\.VIDEO:(case \i\.MessageEmbedTypes\.\i:)*break;default:(\i=this\.renderDescription\(\))\}/, - replace: "$1 break; default: $2 }" + match: /case (\i\.MessageEmbedTypes\.VIDEO):(case \i\.MessageEmbedTypes\.\i:)*break;default:(\i)=(?:(this\.renderDescription)\(\))\}/, + replace: "$2 break; case $1: $3 = $self.ToggleableDescriptionWrapper({ embed: this.props.embed, original: $4.bind(this) }); break; default: $3 = $4() }" } } - ] + ], + ToggleableDescription({ embed, original }: ToggleableDescriptionProps) { + const [isOpen, setOpen] = useState(false); + + console.warn(embed); + + return !isNonNullish(embed.rawDescription) + ? null + : embed.rawDescription.length > 20 + ?
setOpen(o => !o)} + > + {isOpen + ? original() + : embed.rawDescription.substring(0, 20) + "..."} +
+ : original(); + }, + ToggleableDescriptionWrapper(props: ToggleableDescriptionProps) { + return ; + } });