From 537c0bf4b6096431a319559ef3ec3a4fd35d52aa Mon Sep 17 00:00:00 2001 From: Jed Fox <git@jedfox.com> Date: Fri, 3 Feb 2023 15:51:23 -0500 Subject: [PATCH] Add a warning when SharedArrayBuffer is not available (#600) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update index.js * Switch to hard error when SharedArrayBuffer is unavailable * Remove “Server misconfiguration alert!†--- packages/desktop-client/src/browser-server.js | 8 ++++++++ .../desktop-client/src/components/FatalError.js | 14 ++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/packages/desktop-client/src/browser-server.js b/packages/desktop-client/src/browser-server.js index eb19fc558..98159b3dd 100644 --- a/packages/desktop-client/src/browser-server.js +++ b/packages/desktop-client/src/browser-server.js @@ -10,6 +10,14 @@ self.addEventListener('message', e => { let version = msg.version; let hash = msg.hash; + if (!self.SharedArrayBuffer) { + self.postMessage({ + type: 'app-init-failure', + SharedArrayBufferMissing: true + }); + return; + } + // eslint-disable-next-line importScripts(`${process.env.PUBLIC_URL}/kcab/kcab.worker.${hash}.js`); diff --git a/packages/desktop-client/src/components/FatalError.js b/packages/desktop-client/src/components/FatalError.js index 2b038ffb1..025d9a7f5 100644 --- a/packages/desktop-client/src/components/FatalError.js +++ b/packages/desktop-client/src/components/FatalError.js @@ -27,6 +27,20 @@ class FatalError extends React.Component { private browsing. </Text> ); + } else if (error.SharedArrayBufferMissing) { + // SharedArrayBuffer isn't available + msg = ( + <Text> + Actual requires access to <code>SharedArrayBuffer</code> in order to + function properly. If you’re seeing this error, either your browser + does not support <code>SharedArrayBuffer</code>, or your server is not + sending the appropriate headers, or you are not using HTTPS. See{' '} + <a href="https://actualbudget.github.io/docs/Troubleshooting/SharedArrayBuffer"> + our troubleshooting documentation + </a>{' '} + for more information. + </Text> + ); } else { // This indicates the backend failed to initialize. Show the // user something at least so they aren't looking at a blank -- GitLab