From 4d0983a4556075be562b46ddd33eb7f93991fe91 Mon Sep 17 00:00:00 2001
From: Paul Kaplan <pkaplan@media.mit.edu>
Date: Tue, 11 Dec 2018 15:06:58 -0500
Subject: [PATCH] Show error screen when project cannot be loaded

---
 src/lib/project-fetcher-hoc.jsx          | 4 ++++
 test/integration/project-loading.test.js | 5 +++++
 2 files changed, 9 insertions(+)

diff --git a/src/lib/project-fetcher-hoc.jsx b/src/lib/project-fetcher-hoc.jsx
index 1879d69e5..8a7128aaf 100644
--- a/src/lib/project-fetcher-hoc.jsx
+++ b/src/lib/project-fetcher-hoc.jsx
@@ -66,6 +66,10 @@ const ProjectFetcherHOC = function (WrappedComponent) {
                 .then(projectAsset => {
                     if (projectAsset) {
                         this.props.onFetchedProjectData(projectAsset.data, loadingState);
+                    } else {
+                        // Treat failure to load as an error
+                        // Throw to be caught by catch later on
+                        throw new Error('Could not find project');
                     }
                 })
                 .then(() => {
diff --git a/test/integration/project-loading.test.js b/test/integration/project-loading.test.js
index 09023632e..447e2c05b 100644
--- a/test/integration/project-loading.test.js
+++ b/test/integration/project-loading.test.js
@@ -47,6 +47,11 @@ describe('Loading scratch gui', () => {
             await expect(logs).toEqual([]);
         });
 
+        test('Nonexistent projects show error screen', async () => {
+            await loadUri(`${uri}#999999999999999999999`);
+            await clickText('Oops! Something went wrong.');
+        });
+
         test('Invalid url when loading project through modal lets you try again', async () => {
             await loadUri(uri);
             await clickText('View 2.0 Project');
-- 
GitLab