From fc52cf53ee674a11e4e68c880c93c8b2c07652da Mon Sep 17 00:00:00 2001 From: AAGaming Date: Thu, 27 Jun 2024 00:07:55 -0400 Subject: don't report errors to valve if we've caused one in the last 30 seconds --- frontend/src/errorboundary-hook.tsx | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'frontend') diff --git a/frontend/src/errorboundary-hook.tsx b/frontend/src/errorboundary-hook.tsx index 4fb9b4e8..f7aadcbd 100644 --- a/frontend/src/errorboundary-hook.tsx +++ b/frontend/src/errorboundary-hook.tsx @@ -14,6 +14,7 @@ class ErrorBoundaryHook extends Logger { private errorBoundaryPatch?: Patch; private errorCheckPatch?: Patch; public doNotReportErrors: boolean = false; + private disableReportingTimer: number = 0; constructor() { super('ErrorBoundaryHook'); @@ -53,8 +54,9 @@ class ErrorBoundaryHook extends Logger { errorSource, wasPlugin, shouldReport, - skipAllReporting: this.doNotReportErrors, + skipAllReporting: this.doNotReportErrors || this.disableReportingTimer, }); + if (!shouldReport) this.temporarilyDisableReporting(); // react#15069 workaround. this took 2 hours to figure out. if ( args[0]?.message?.[3]?.[0] && @@ -64,7 +66,7 @@ class ErrorBoundaryHook extends Logger { this.debug('ignoring early report caused by react#15069'); return true; } - if (this.doNotReportErrors) return true; + if (this.doNotReportErrors || this.disableReportingTimer) return true; return shouldReport ? callOriginal : true; }); @@ -92,6 +94,17 @@ class ErrorBoundaryHook extends Logger { }); } + public temporarilyDisableReporting() { + this.debug("Reporting disabled for 30s due to a non-steam error."); + if (this.disableReportingTimer) { + clearTimeout(this.disableReportingTimer); + } + this.disableReportingTimer = setTimeout(() => { + this.debug("Reporting re-enabled after 30s timeout."); + this.disableReportingTimer = 0; + }, 30000) + } + deinit() { this.errorCheckPatch?.unpatch(); this.errorBoundaryPatch?.unpatch(); -- cgit v1.2.3