diff --git a/src/common/errors.js b/src/common/errors.js
index 68a0489..2036ded 100644
--- a/src/common/errors.js
+++ b/src/common/errors.js
@@ -18,3 +18,7 @@ export class UnknownNetworkError extends Error {
this.url = url;
}
}
+
+export class OutdatedPackagerError extends Error {
+
+}
diff --git a/src/locales/en.json b/src/locales/en.json
index 044ec05..84a4c20 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -29,9 +29,17 @@
"string": "Couldn't download {url}. Make sure you're connected to the internet and try disabling any browser extensions.",
"context": "Error displayed when an attempt to download a file failed for an unknown reason."
},
+ "outdated": {
+ "string": "This version of the packager appears to be outdated. Please refresh and try again.",
+ "context": "Error displayed when the packager detects that you are using an old version and that you must refresh to continue."
+ },
"close": {
"string": "Close"
},
+ "refresh": {
+ "string": "Refresh",
+ "context": "Button in some error messages that refreshes the page"
+ },
"reportBug": {
"string": "Report Bug"
},
diff --git a/src/p4/Modals.svelte b/src/p4/Modals.svelte
index f01ad2a..e8f8181 100644
--- a/src/p4/Modals.svelte
+++ b/src/p4/Modals.svelte
@@ -1,7 +1,7 @@
- {:else} + {:else if $error instanceof OutdatedPackagerError} +
{$_('p4.outdated')}
+{$error}
- {$_('p4.errorMessage').replace('{error}', $error)} + +
+ {:else} +{$_('p4.errorMessage').replace('{error}', $error)}
{$_('p4.reportBug')} diff --git a/src/packager/packager.js b/src/packager/packager.js index d9ebaa9..e9ccba7 100644 --- a/src/packager/packager.js +++ b/src/packager/packager.js @@ -8,6 +8,7 @@ import {buildId, verifyBuildId} from './build-id'; import {encode, decode} from './base85'; import {parsePlist, generatePlist} from './plist'; import {APP_NAME, WEBSITE, COPYRIGHT_NOTICE, ACCENT_COLOR} from './brand'; +import {OutdatedPackagerError} from '../common/errors'; const PROGRESS_LOADED_SCRIPTS = 0.1; @@ -182,7 +183,7 @@ class Packager extends EventTarget { }); } if (asset.useBuildId && !verifyBuildId(buildId, result)) { - throw new Error('Detected an outdated version of the packager; please refresh and try again.'); + throw new OutdatedPackagerError('Build ID does not match.'); } if (asset.sha256) { const hash = await sha256(result);