diff --git a/src/components/settings/tabs/plugins/index.tsx b/src/components/settings/tabs/plugins/index.tsx index c4c313b27..ef4309d9b 100644 --- a/src/components/settings/tabs/plugins/index.tsx +++ b/src/components/settings/tabs/plugins/index.tsx @@ -314,7 +314,7 @@ export default function PluginSettings() { const totalPlugins = Object.keys(Plugins).filter(p => !isApiPlugin(p)); const enabledPlugins = Object.keys(Plugins).filter(p => Vencord.Plugins.isPluginEnabled(p) && !isApiPlugin(p)); - const totalStockPlugins = totalPlugins.filter(p => !PluginMeta[p].userPlugin).length; + const totalStockPlugins = totalPlugins.filter(p => !PluginMeta[p].userPlugin && !Plugins[p].hidden).length; const totalUserPlugins = totalPlugins.filter(p => PluginMeta[p].userPlugin).length; const enabledStockPlugins = enabledPlugins.filter(p => !PluginMeta[p].userPlugin).length; const enabledUserPlugins = enabledPlugins.filter(p => PluginMeta[p].userPlugin).length; diff --git a/src/equicordplugins/betterInvites/index.tsx b/src/equicordplugins/betterInvites/index.tsx index eaeca3262..e3d7e357e 100644 --- a/src/equicordplugins/betterInvites/index.tsx +++ b/src/equicordplugins/betterInvites/index.tsx @@ -6,13 +6,13 @@ import "./style.css"; +import { InfoIcon } from "@components/Icons"; import { EquicordDevs } from "@utils/constants"; import { openUserProfile } from "@utils/discord"; import { classes } from "@utils/misc"; import definePlugin, { StartAt } from "@utils/types"; import { findByPropsLazy } from "@webpack"; -import { Parser } from "@webpack/common"; - +import { Parser, Tooltip, UserStore } from "@webpack/common"; const AvatarStyles = findByPropsLazy("avatar", "zalgo"); const GuildManager = findByPropsLazy("joinGuild"); @@ -37,36 +37,77 @@ export default definePlugin({ authors: [EquicordDevs.iamme], patches: [ { - find: "#{intl::HUB_INVITE_ANOTHER_SCHOOL_LINK}", + find: ".hideDetailsButtonContainer,", replacement: [ { - match: /,(\i)&&(\(.{0,50}asContainer.+)(\i\.\i\.string\(\i\.\i#{intl::GUEST_MEMBERSHIP_EXPLANATION}\))/, - replace: ",($1||((!$1)&&arguments[0].invite.expires_at)) && $2$self.RenderTip($1, $3, arguments[0].invite.expires_at)" - }, - { - match: /(\.jsx\)\(\i.\i.Info,{.+onClick:\i)/, - replace: "$& || $self.Lurkable(arguments[0].invite.guild.id, arguments[0].invite.guild.features)" - }, - { - match: /(\.jsx\)\(\i\.\i\.Header,\{)text:(\i)/, - replace: "$1text: $self.Header(arguments[0].currentUserId, arguments[0].invite.inviter, $2)" + match: /banner\}\),.{0,25}profile:\i\}\),.{0,15}profile:\i/, + replace: "$&,invite:arguments[0].invite" } ] - } + }, + { + find: '"disableGuildNameClick"', + replacement: [ + { + match: /(?=children:\i\.name\}\)\):)/, + replace: "onClick:$self.Lurkable(arguments[0].invite.guild.id,arguments[0].invite.guild.features)," + }, + { + match: /\),\{profile:\i,disableGuildNameClick:\i/, + replace: "$&,invite:arguments[0].invite" + }, + { + match: /\}\)\)\}\),\i/, + replace: "$&,$self.RenderTip(arguments[0].invite.expires_at)" + }, + { + match: /(?<=text:(\i\.name).*?\]\}\))/, + replace: "$&,$self.Header(arguments[0].invite.inviter,$1)" + } + ] + }, ], - RenderTip(isGuest: boolean, message: string, expires_at: string) { - return <>This invite will expire {Parser.parse(``)}{isGuest ? ". " + message : ""}; + RenderTip(expires_at: string) { + const timestamp = <>{Parser.parse(``)}; + const tooltipText = ( + <> + This invite will {expires_at ? <>expire {timestamp} : <>not expire} + + ); + + + return ( + + {({ onMouseEnter, onMouseLeave }) => ( +
+ +
+ )} +
+ ); }, - Header(currentUserId: string, inviter: User | undefined, defaultMessage: string) { - return
- {(inviter && (currentUserId !== inviter.id)) ? <> + Header(inviter: User | undefined, guildName: string) { + const currentUserId = UserStore.getCurrentUser().id; + if (!inviter || currentUserId === inviter.id) return null; + return ( +
openUserProfile(inviter.id)} - src={inviter.avatar ? `https://cdn.discordapp.com/avatars/${inviter.id}/${inviter.avatar}.webp?size=80` : "/assets/1f0bfc0865d324c2587920a7d80c609b.png?size=128"} - /> {inviter.global_name ? inviter.global_name.toUpperCase() : inviter.username.toUpperCase()} HAS INVITED YOU TO JOIN - : defaultMessage}
; + src={inviter.avatar + ? `https://cdn.discordapp.com/avatars/${inviter.id}/${inviter.avatar}.webp?size=80` + : "/assets/1f0bfc0865d324c2587920a7d80c609b.png?size=128"} + /> +
+ {inviter.username} invited you to {guildName} +
+
+ ); }, Lurkable: (id: string, features: Iterable | undefined) => { return new Set(features).has("DISCOVERABLE") ? () => lurk(id) : null; diff --git a/src/equicordplugins/betterInvites/style.css b/src/equicordplugins/betterInvites/style.css index 0e9eaa4c0..9865996dd 100644 --- a/src/equicordplugins/betterInvites/style.css +++ b/src/equicordplugins/betterInvites/style.css @@ -5,14 +5,30 @@ h3[class^="h5"]:has([class="vc-bi-header-inner"]) { .vc-bi-inviter-avatar { margin: 0; - margin-right: 5px; - height: 16px; - width: 16px; + height: 14px; + width: 14px; position: static; + flex-shrink: 0; } .vc-bi-header-inner { display: flex; + flex-wrap: wrap; + align-items: center; + gap: 8px; margin: 0; margin-bottom: 5px; + font-size: 12px; } + +.vc-bi-header-text { + flex: 1; + white-space: normal; + color: var(--text-secondary); +} + +.vc-bi-tooltip-icon { + color: var(--text-muted); + width: 16px; + height: 16px; +} \ No newline at end of file diff --git a/src/equicordplugins/betterQuickReact/index.tsx b/src/equicordplugins/betterQuickReact/index.tsx index 055ccff65..bf3a49fc3 100644 --- a/src/equicordplugins/betterQuickReact/index.tsx +++ b/src/equicordplugins/betterQuickReact/index.tsx @@ -63,6 +63,10 @@ export default definePlugin({ find: "#{intl::ADD_REACTION_NAMED}", group: true, replacement: [ + { + match: /isEmojiPremiumLocked\(\{.{0,25}channel:(\i),/, + replace: "$&guild_id:$1?.guild_id??null," + }, // Override limit of emojis to display with offset hook. { match: /(\i)\.length>4&&\((\i)\.length=4\);/, diff --git a/src/equicordplugins/findReply/styles.css b/src/equicordplugins/findReply/styles.css index cae65d268..5dc8938c4 100644 --- a/src/equicordplugins/findReply/styles.css +++ b/src/equicordplugins/findReply/styles.css @@ -8,8 +8,11 @@ } .vc-findreply-div { - background-color: var(--background-base-lower); + background-color: var(--background-base-lowest); + display: flex; flex-direction: row; align-items: center; - width: 270px; + width: fit-content; + padding: 10px; + gap: 10px; } \ No newline at end of file diff --git a/src/equicordplugins/platformSpoofer/index.tsx b/src/equicordplugins/platformSpoofer/index.tsx index 0ba07c5fa..47e736e6f 100644 --- a/src/equicordplugins/platformSpoofer/index.tsx +++ b/src/equicordplugins/platformSpoofer/index.tsx @@ -21,12 +21,10 @@ const settings = definePluginSettings({ label: "Desktop", value: "desktop", default: true, - hidden: IS_DISCORD_DESKTOP }, { label: "Web", value: "web", - hidden: IS_WEB }, { label: "Xbox",