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

View File

@@ -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();