summaryrefslogtreecommitdiff
path: root/frontend/src/errorboundary-hook.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/src/errorboundary-hook.tsx')
-rw-r--r--frontend/src/errorboundary-hook.tsx11
1 files changed, 9 insertions, 2 deletions
diff --git a/frontend/src/errorboundary-hook.tsx b/frontend/src/errorboundary-hook.tsx
index 8c96d9f4..072c96ca 100644
--- a/frontend/src/errorboundary-hook.tsx
+++ b/frontend/src/errorboundary-hook.tsx
@@ -22,9 +22,7 @@ class ErrorBoundaryHook extends Logger {
this.log('Initialized');
window.__ERRORBOUNDARY_HOOK_INSTANCE?.deinit?.();
window.__ERRORBOUNDARY_HOOK_INSTANCE = this;
- }
- init() {
// valve writes only the sanest of code
const exp = /^\(\)=>\(.\|\|.\(new .\),.\)$/;
const initErrorReportingStore = findModuleExport(
@@ -76,6 +74,11 @@ class ErrorBoundaryHook extends Logger {
}
this.errorBoundaryPatch = replacePatch(ErrorBoundary.prototype, 'render', function (this: any) {
+ if (this.state._deckyForceRerender) {
+ const stateClone = {...this.state, _deckyForceRerender: null};
+ this.setState(stateClone);
+ return null;
+ }
if (this.state.error) {
const store = Object.getPrototypeOf(this)?.constructor?.sm_ErrorReportingStore || errorReportingStore;
return (
@@ -89,6 +92,10 @@ class ErrorBoundaryHook extends Logger {
}
return callOriginal;
});
+ // Small hack that gives us a lot more flexibility to force rerenders.
+ ValveErrorBoundary.prototype._deckyForceRerender = function (this: any) {
+ this.setState({...this.state, _deckyForceRerender: true});
+ }
}
public temporarilyDisableReporting() {