mirror of
https://github.com/SteamDeckHomebrew/decky-loader.git
synced 2026-06-17 08:47:49 +00:00
don't report errors to valve if we've caused one in the last 30 seconds
This commit is contained in:
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user