don't report errors to valve if we've caused one in the last 30 seconds

This commit is contained in:
AAGaming
2024-06-27 00:07:55 -04:00
parent dcff7d146b
commit fc52cf53ee
+15 -2
View File
@@ -14,6 +14,7 @@ class ErrorBoundaryHook extends Logger {
private errorBoundaryPatch?: Patch; private errorBoundaryPatch?: Patch;
private errorCheckPatch?: Patch; private errorCheckPatch?: Patch;
public doNotReportErrors: boolean = false; public doNotReportErrors: boolean = false;
private disableReportingTimer: number = 0;
constructor() { constructor() {
super('ErrorBoundaryHook'); super('ErrorBoundaryHook');
@@ -53,8 +54,9 @@ class ErrorBoundaryHook extends Logger {
errorSource, errorSource,
wasPlugin, wasPlugin,
shouldReport, shouldReport,
skipAllReporting: this.doNotReportErrors, skipAllReporting: this.doNotReportErrors || this.disableReportingTimer,
}); });
if (!shouldReport) this.temporarilyDisableReporting();
// react#15069 workaround. this took 2 hours to figure out. // react#15069 workaround. this took 2 hours to figure out.
if ( if (
args[0]?.message?.[3]?.[0] && args[0]?.message?.[3]?.[0] &&
@@ -64,7 +66,7 @@ class ErrorBoundaryHook extends Logger {
this.debug('ignoring early report caused by react#15069'); this.debug('ignoring early report caused by react#15069');
return true; return true;
} }
if (this.doNotReportErrors) return true; if (this.doNotReportErrors || this.disableReportingTimer) return true;
return shouldReport ? callOriginal : 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() { deinit() {
this.errorCheckPatch?.unpatch(); this.errorCheckPatch?.unpatch();
this.errorBoundaryPatch?.unpatch(); this.errorBoundaryPatch?.unpatch();