aboutsummaryrefslogtreecommitdiffstats
path: root/0003-Experiments-Re-add-isStaff-and-staging-banner.patch
diff options
context:
space:
mode:
Diffstat (limited to '0003-Experiments-Re-add-isStaff-and-staging-banner.patch')
-rw-r--r--0003-Experiments-Re-add-isStaff-and-staging-banner.patch109
1 files changed, 109 insertions, 0 deletions
diff --git a/0003-Experiments-Re-add-isStaff-and-staging-banner.patch b/0003-Experiments-Re-add-isStaff-and-staging-banner.patch
new file mode 100644
index 0000000..de147c7
--- /dev/null
+++ b/0003-Experiments-Re-add-isStaff-and-staging-banner.patch
@@ -0,0 +1,109 @@
+From 3b8d2305b7f49f24b2b82d3bff35ce5aebbcc7fb Mon Sep 17 00:00:00 2001
+From: 1024x2 <2pow11@gmail.com>
+Date: Sat, 8 Jun 2024 23:11:43 +0100
+Subject: [PATCH 3/6] Experiments: Re-add isStaff and staging banner
+
+(it's funny)
+---
+ src/plugins/experiments/index.tsx | 54 +++++++++++++++++++++++++++++--
+ 1 file changed, 52 insertions(+), 2 deletions(-)
+
+diff --git a/src/plugins/experiments/index.tsx b/src/plugins/experiments/index.tsx
+index cf4dbf24..5a01ffad 100644
+--- a/src/plugins/experiments/index.tsx
++++ b/src/plugins/experiments/index.tsx
+@@ -16,19 +16,37 @@
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
++import { definePluginSettings } from "@api/Settings";
+ import { disableStyle, enableStyle } from "@api/Styles";
+ 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 from "@utils/types";
++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";
+
+ import hideBugReport from "./hideBugReport.css?managed";
+
+ const KbdStyles = findByPropsLazy("key", "removeBuildOverride");
+
++const settings = definePluginSettings({
++ enableIsStaff: {
++ description: "Enable isStaff",
++ type: OptionType.BOOLEAN,
++ default: false,
++ restartNeeded: true
++ },
++ forceStagingBanner: {
++ description: "Whether to force Staging banner under user area.",
++ type: OptionType.BOOLEAN,
++ default: false,
++ restartNeeded: true
++ }
++});
++
+ export default definePlugin({
+ name: "Experiments",
+ description: "Enable Access to Experiments & other dev-only features in Discord!",
+@@ -39,6 +57,7 @@ export default definePlugin({
+ Devs.BanTheNons,
+ Devs.Nuckyz
+ ],
++ settings,
+
+ patches: [
+ {
+@@ -69,12 +88,43 @@ export default definePlugin({
+ match: /\i\.isStaff\(\)/,
+ replace: "true"
+ }
++ },
++ {
++ find: '"isStaff",',
++ predicate: () => settings.store.enableIsStaff,
++ replacement: [
++ {
++ match: /(?<=>)(\i)\.hasFlag\((\i\.\i)\.STAFF\)(?=})/,
++ replace: (_, user, flags) => `$self.isStaff(${user},${flags})`
++ },
++ {
++ match: /hasFreePremium\(\){return this.isStaff\(\)\s*?\|\|/,
++ replace: "hasFreePremium(){return ",
++ }
++ ]
++ },
++ {
++ find: ".Messages.DEV_NOTICE_STAGING",
++ predicate: () => settings.store.forceStagingBanner,
++ replacement: {
++ match: /window\.GLOBAL_ENV\.RELEASE_CHANNEL/,
++ replace: "\"staging\""
++ }
+ }
+ ],
+
+ start: () => enableStyle(hideBugReport),
+ stop: () => disableStyle(hideBugReport),
+
++ 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";
+--
+2.45.2
+