/* * 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"; import { ChannelStore, GuildMemberStore, useStateFromStores } from "@webpack/common"; export default definePlugin({ name: "DeadMembers", description: "Shows when the sender of a message has left the guild", authors: [Devs.Kyuuhachi], patches: [ { find: '.BADGES=1]="BADGES"', replacement: { match: /(\i)=\{className:\i.username,style:.*?onContextMenu:\i,children:.*?\},/, replace: "$&__dummyvar=($1.children=$self.wrapMessageAuthor(arguments[0],$1.children))," } }, { find: "Messages.FORUM_POST_AUTHOR_A11Y_LABEL", replacement: { match: /(?<=\}=(\i),\{(user:\i,author:\i)\}=.{0,400}?\(\i\.Fragment,{children:)\i(?=}\),)/, replace: "$self.wrapForumAuthor({...$1,$2},$&)" } }, ], wrapMessageAuthor({ message }, text) { const channel = ChannelStore.getChannel(message.channel_id); return message.webhookId ? text : ; }, wrapForumAuthor({ channel, user }, text) { return !user ? text : ; }, }); function DeadIndicator({ channel, userId, text }) { const isMember = useStateFromStores( [GuildMemberStore], () => GuildMemberStore.isMember(channel?.guild_id, userId), ); return channel?.guild_id && !isMember ? {text} : text; }