From 7478e880a8920479f6a7026d90c3a1b93ddd8a70 Mon Sep 17 00:00:00 2001 From: Vendicated Date: Sat, 14 Jan 2023 23:00:29 +0100 Subject: ShowHiddenChannels: Use Lock as ChannelIcon --- src/components/Badge.tsx | 29 ++++++++++++++++ .../PluginSettings/components/BadgeComponent.tsx | 27 --------------- src/components/PluginSettings/components/index.ts | 2 +- src/plugins/showHiddenChannels.tsx | 40 +++++++++++++++------- 4 files changed, 57 insertions(+), 41 deletions(-) create mode 100644 src/components/Badge.tsx delete mode 100644 src/components/PluginSettings/components/BadgeComponent.tsx diff --git a/src/components/Badge.tsx b/src/components/Badge.tsx new file mode 100644 index 0000000..0ed45ff --- /dev/null +++ b/src/components/Badge.tsx @@ -0,0 +1,29 @@ +/* + * 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 . +*/ + +export function Badge({ text, color }): JSX.Element { + return ( +
+ {text} +
+ ); +} diff --git a/src/components/PluginSettings/components/BadgeComponent.tsx b/src/components/PluginSettings/components/BadgeComponent.tsx deleted file mode 100644 index 6acf42a..0000000 --- a/src/components/PluginSettings/components/BadgeComponent.tsx +++ /dev/null @@ -1,27 +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 . -*/ - -export function Badge({ text, color }): JSX.Element { - return ( -
{text}
- ); -} diff --git a/src/components/PluginSettings/components/index.ts b/src/components/PluginSettings/components/index.ts index 52745ea..d307b4e 100644 --- a/src/components/PluginSettings/components/index.ts +++ b/src/components/PluginSettings/components/index.ts @@ -30,7 +30,7 @@ export interface ISettingElementProps { definedSettings?: DefinedSettings; } -export * from "./BadgeComponent"; +export * from "../../Badge"; export * from "./SettingBooleanComponent"; export * from "./SettingCustomComponent"; export * from "./SettingNumericComponent"; diff --git a/src/plugins/showHiddenChannels.tsx b/src/plugins/showHiddenChannels.tsx index ea6fcc2..a97259a 100644 --- a/src/plugins/showHiddenChannels.tsx +++ b/src/plugins/showHiddenChannels.tsx @@ -18,23 +18,20 @@ import { Settings } from "@api/settings"; +import { Badge } from "@components/Badge"; import { Flex } from "@components/Flex"; import { Devs } from "@utils/constants"; import { ModalContent, ModalFooter, ModalHeader, ModalRoot, ModalSize, openModal } from "@utils/modal"; import definePlugin, { OptionType } from "@utils/types"; -import { waitFor } from "@webpack"; -import { Button, ChannelStore, SnowflakeUtils, Text } from "@webpack/common"; +import { Button, ChannelStore, PermissionStore, SnowflakeUtils, Text } from "@webpack/common"; const CONNECT = 1048576n; const VIEW_CHANNEL = 1024n; -let can = (permission, channel) => true; -waitFor(m => m.can && m.initialize, m => ({ can } = m)); - export default definePlugin({ name: "ShowHiddenChannels", description: "Show hidden channels", - authors: [Devs.BigDuck, Devs.AverageReactEnjoyer, Devs.D3SOX], + authors: [Devs.BigDuck, Devs.AverageReactEnjoyer, Devs.D3SOX, Devs.Ven], options: { hideUnreads: { description: "Hide unreads", @@ -84,8 +81,17 @@ export default definePlugin({ match: /((.)\.getGuildId\(\))(&&\(!\(.\.isThread.{1,100}\.hasRelevantUnread\()/, replace: "$1&&!$2._isHiddenChannel$3" } + }, + // Lock Icon + { + find: ".rulesChannelId))", + replacement: { + match: /(\.locked.{0,400})(switch\((\i)\.type\))/, + replace: "$1 if($3._isHiddenChannel)return $self.LockIcon;$2" + } } ], + shouldShow(channel, category, isMuted) { if (!this.isHiddenChannel(channel)) return false; if (!category) return false; @@ -93,6 +99,7 @@ export default definePlugin({ return !category.isCollapsed; }, + isHiddenChannel(channel) { if (!channel) return false; if (channel.channelId) @@ -101,9 +108,10 @@ export default definePlugin({ return false; // check for disallowed voice channels too so that they get hidden when collapsing the category - channel._isHiddenChannel = !can(VIEW_CHANNEL, channel) || (channel.type === 2 && !can(CONNECT, channel)); + channel._isHiddenChannel = !PermissionStore.can(VIEW_CHANNEL, channel) || (channel.type === 2 && !PermissionStore.can(CONNECT, channel)); return channel._isHiddenChannel; }, + channelSelected(channel) { if (!channel) return false; const isHidden = this.isHiddenChannel(channel); @@ -115,11 +123,7 @@ export default definePlugin({ {channel.name} - {(channel.isNSFW() && ( - - NSFW - - ))} + {channel.isNSFW() && } @@ -156,5 +160,15 @@ export default definePlugin({ )); } return isHidden; - } + }, + + LockIcon: () => ( + + + + ) }); -- cgit