summaryrefslogtreecommitdiff
path: root/frontend
diff options
context:
space:
mode:
Diffstat (limited to 'frontend')
-rw-r--r--frontend/src/errorboundary-hook.tsx17
1 files changed, 15 insertions, 2 deletions
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();