From 9d8c80b6393ee23668a18caeca5002f340bc3c4f Mon Sep 17 00:00:00 2001
From: chrisgarrity <chrisg@media.mit.edu>
Date: Thu, 8 Nov 2018 10:56:42 -0500
Subject: [PATCH] Start Gui with Tutorials Library open

Adds `?tutorial=all` as a recognized option. Gui opens without the preview modal, and with the Tutorials Library open.

Back button in the Tutorials Library takes you to the Editor (not back to referrer).
---
 src/lib/app-state-hoc.jsx    | 11 ++++++++---
 src/lib/tutorial-from-url.js |  1 +
 src/reducers/gui.js          | 16 +++++++++++++++-
 3 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/src/lib/app-state-hoc.jsx b/src/lib/app-state-hoc.jsx
index 93d97180e..79d144681 100644
--- a/src/lib/app-state-hoc.jsx
+++ b/src/lib/app-state-hoc.jsx
@@ -52,7 +52,8 @@ const AppStateHOC = function (WrappedComponent, localesOnly) {
                     guiMiddleware,
                     initFullScreen,
                     initPlayer,
-                    initTutorialCard
+                    initTutorialCard,
+                    initTutorialLibrary
                 } = guiRedux;
                 const {ScratchPaintReducer} = require('scratch-paint');
 
@@ -69,8 +70,12 @@ const AppStateHOC = function (WrappedComponent, localesOnly) {
                     if (tutorialId !== null) {
                         // When loading a tutorial from the URL,
                         // load w/o preview modal
-                        // open requested tutorial card
-                        initializedGui = initTutorialCard(initializedGui, tutorialId);
+                        // open requested tutorial card or tutorials mocal for 'all'
+                        if (tutorialId === 'all') {
+                            initializedGui = initTutorialLibrary(initializedGui);
+                        } else {
+                            initializedGui = initTutorialCard(initializedGui, tutorialId);
+                        }
                     }
                 }
                 reducers = {
diff --git a/src/lib/tutorial-from-url.js b/src/lib/tutorial-from-url.js
index 4988d9962..b7d004ab8 100644
--- a/src/lib/tutorial-from-url.js
+++ b/src/lib/tutorial-from-url.js
@@ -40,6 +40,7 @@ const detectTutorialId = () => {
         queryParams.tutorial[0] :
         queryParams.tutorial;
     if (typeof tutorialID === 'undefined') return null;
+    if (tutorialID === 'all') return tutorialID;
     return getDeckIdFromUrlId(tutorialID);
 };
 
diff --git a/src/reducers/gui.js b/src/reducers/gui.js
index 682913f62..b41f72452 100644
--- a/src/reducers/gui.js
+++ b/src/reducers/gui.js
@@ -96,6 +96,19 @@ const initTutorialCard = function (currentState, deckId) {
     );
 };
 
+const initTutorialLibrary = function (currentState) {
+    return Object.assign(
+        {},
+        currentState,
+        {
+            modals: {
+                previewInfo: false,
+                tipsLibrary: true
+            }
+        }
+    );
+};
+
 const guiReducer = combineReducers({
     alerts: alertsReducer,
     assetDrag: assetDragReducer,
@@ -128,5 +141,6 @@ export {
     guiMiddleware,
     initFullScreen,
     initPlayer,
-    initTutorialCard
+    initTutorialCard,
+    initTutorialLibrary
 };
-- 
GitLab