diff --git a/src/components/PluginSettings/components/BadgeComponent.tsx b/src/components/Badge.tsx similarity index 95% rename from src/components/PluginSettings/components/BadgeComponent.tsx rename to src/components/Badge.tsx index 6acf42a13..0ed45ff81 100644 --- a/src/components/PluginSettings/components/BadgeComponent.tsx +++ b/src/components/Badge.tsx @@ -22,6 +22,8 @@ export function Badge({ text, color }): JSX.Element { backgroundColor: color, justifySelf: "flex-end", marginLeft: "auto" - }}>{text} + }}> + {text} + ); } diff --git a/src/components/PluginSettings/components/index.ts b/src/components/PluginSettings/components/index.ts index 52745ea49..d307b4e68 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 ea6fcc262..a97259a6a 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: () => ( + + + + ) });