From 7322c3af047489e122b59b01825ba5473dc96a62 Mon Sep 17 00:00:00 2001 From: Nuckyz <61953774+Nuckyz@users.noreply.github.com> Date: Mon, 6 Mar 2023 18:54:01 -0300 Subject: [PATCH] Fix Crash Loops and prevent metrics (#580) --- src/plugins/crashHandler.ts | 19 ++++++++++++++++++- src/plugins/noTrack.ts | 13 +++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/plugins/crashHandler.ts b/src/plugins/crashHandler.ts index 6f030b12..79db7820 100644 --- a/src/plugins/crashHandler.ts +++ b/src/plugins/crashHandler.ts @@ -41,6 +41,8 @@ const settings = definePluginSettings({ } }); +let crashCount: number = 0; + export default definePlugin({ name: "CrashHandler", description: "Utility plugin for handling and possibly recovering from Crashes without a restart", @@ -69,8 +71,22 @@ export default definePlugin({ ], handleCrash(_this: ReactElement & { forceUpdate: () => void; }) { + if (++crashCount > 5) { + try { + showNotification({ + color: "#eed202", + title: "Discord has crashed!", + body: "Awn :( Discord has crashed more than five times, not attempting to recover.", + }); + } catch { } + + return false; + } + + setTimeout(() => crashCount--, 60_000); + try { - maybePromptToUpdate("Uh oh, Discord has just crashed... but good news, there is a Vencord update available that might fix this issue! Would you like to update now?", true); + if (crashCount === 1) maybePromptToUpdate("Uh oh, Discord has just crashed... but good news, there is a Vencord update available that might fix this issue! Would you like to update now?", true); if (settings.store.attemptToPreventCrashes) { this.handlePreventCrash(_this); @@ -80,6 +96,7 @@ export default definePlugin({ return false; } catch (err) { CrashHandlerLogger.error("Failed to handle crash", err); + return false; } }, diff --git a/src/plugins/noTrack.ts b/src/plugins/noTrack.ts index 27ff430b..617ab8b4 100644 --- a/src/plugins/noTrack.ts +++ b/src/plugins/noTrack.ts @@ -38,6 +38,19 @@ export default definePlugin({ match: /window\.DiscordSentry=function.+\}\(\)/, replace: "", } + }, + { + find: ".METRICS,", + replacement: [ + { + match: /this\._intervalId.+?12e4\)/, + replace: "" + }, + { + match: /(?<=increment=function\(\i\){)/, + replace: "return;" + } + ] } ] });