From 80b738ff3e9418aa950027a503aaa7672d83677b Mon Sep 17 00:00:00 2001 From: Nuckyz <61953774+Nuckyz@users.noreply.github.com> Date: Sat, 4 May 2024 21:15:14 -0300 Subject: [PATCH] Future proof FakeNitro and Experiments to not brick Discord startup --- src/plugins/experiments/index.tsx | 17 +++++++++--- src/plugins/fakeNitro/index.tsx | 44 +++++++++++++++++-------------- 2 files changed, 38 insertions(+), 23 deletions(-) diff --git a/src/plugins/experiments/index.tsx b/src/plugins/experiments/index.tsx index 344638828..50b9521f9 100644 --- a/src/plugins/experiments/index.tsx +++ b/src/plugins/experiments/index.tsx @@ -20,10 +20,12 @@ import { definePluginSettings } from "@api/Settings"; import ErrorBoundary from "@components/ErrorBoundary"; import { ErrorCard } from "@components/ErrorCard"; import { Devs } from "@utils/constants"; +import { Logger } from "@utils/Logger"; import { Margins } from "@utils/margins"; import definePlugin, { OptionType } from "@utils/types"; import { findByPropsLazy } from "@webpack"; -import { Forms, React } from "@webpack/common"; +import { Forms, React, UserStore } from "@webpack/common"; +import { User } from "discord-types/general"; const KbdStyles = findByPropsLazy("key", "removeBuildOverride"); @@ -68,8 +70,8 @@ export default definePlugin({ predicate: () => settings.store.enableIsStaff, replacement: [ { - match: /=>*?(\i)\.hasFlag\((\i\.\i)\.STAFF\)}/, - replace: (_, user, flags) => `=>Vencord.Webpack.Common.UserStore.getCurrentUser()?.id===${user}.id||${user}.hasFlag(${flags}.STAFF)}` + match: /(?<=>)(\i)\.hasFlag\((\i\.\i)\.STAFF\)(?=})/, + replace: (_, user, flags) => `$self.isStaff(${user},${flags})` }, { match: /hasFreePremium\(\){return this.isStaff\(\)\s*?\|\|/, @@ -86,6 +88,15 @@ export default definePlugin({ } ], + isStaff(user: User, flags: any) { + try { + return UserStore.getCurrentUser()?.id === user.id || user.hasFlag(flags.STAFF); + } catch (err) { + new Logger("Experiments").error(err); + return user.hasFlag(flags.STAFF); + } + }, + settingsAboutComponent: () => { const isMacOS = navigator.platform.includes("Mac"); const modKey = isMacOS ? "cmd" : "ctrl"; diff --git a/src/plugins/fakeNitro/index.tsx b/src/plugins/fakeNitro/index.tsx index adf1f70fb..90ce10f62 100644 --- a/src/plugins/fakeNitro/index.tsx +++ b/src/plugins/fakeNitro/index.tsx @@ -413,31 +413,35 @@ export default definePlugin({ }, handleProtoChange(proto: any, user: any) { - if (proto == null || typeof proto === "string" || !UserSettingsProtoStore || !PreloadedUserSettingsActionCreators || !AppearanceSettingsActionCreators || !ClientThemeSettingsActionsCreators) return; + try { + if (proto == null || typeof proto === "string") return; - const premiumType: number = user?.premium_type ?? UserStore?.getCurrentUser()?.premiumType ?? 0; + const premiumType: number = user?.premium_type ?? UserStore?.getCurrentUser()?.premiumType ?? 0; - if (premiumType !== 2) { - proto.appearance ??= AppearanceSettingsActionCreators.create(); + if (premiumType !== 2) { + proto.appearance ??= AppearanceSettingsActionCreators.create(); - if (UserSettingsProtoStore.settings.appearance?.theme != null) { - const appearanceSettingsDummy = AppearanceSettingsActionCreators.create({ - theme: UserSettingsProtoStore.settings.appearance.theme - }); + if (UserSettingsProtoStore.settings.appearance?.theme != null) { + const appearanceSettingsDummy = AppearanceSettingsActionCreators.create({ + theme: UserSettingsProtoStore.settings.appearance.theme + }); - proto.appearance.theme = appearanceSettingsDummy.theme; - } - - if (UserSettingsProtoStore.settings.appearance?.clientThemeSettings?.backgroundGradientPresetId?.value != null) { - const clientThemeSettingsDummy = ClientThemeSettingsActionsCreators.create({ - backgroundGradientPresetId: { - value: UserSettingsProtoStore.settings.appearance.clientThemeSettings.backgroundGradientPresetId.value - } - }); - - proto.appearance.clientThemeSettings ??= clientThemeSettingsDummy; - proto.appearance.clientThemeSettings.backgroundGradientPresetId = clientThemeSettingsDummy.backgroundGradientPresetId; + proto.appearance.theme = appearanceSettingsDummy.theme; + } + + if (UserSettingsProtoStore.settings.appearance?.clientThemeSettings?.backgroundGradientPresetId?.value != null) { + const clientThemeSettingsDummy = ClientThemeSettingsActionsCreators.create({ + backgroundGradientPresetId: { + value: UserSettingsProtoStore.settings.appearance.clientThemeSettings.backgroundGradientPresetId.value + } + }); + + proto.appearance.clientThemeSettings ??= clientThemeSettingsDummy; + proto.appearance.clientThemeSettings.backgroundGradientPresetId = clientThemeSettingsDummy.backgroundGradientPresetId; + } } + } catch (err) { + new Logger("FakeNitro").error(err); } },