From 97d3f857623350405e22c61b2fad797154669924 Mon Sep 17 00:00:00 2001
From: Paul Kaplan <pkaplan@media.mit.edu>
Date: Mon, 30 Apr 2018 13:59:56 -0400
Subject: [PATCH] Update targets list and editing target at the same time.

Prevent crashes resulting from the editing target not being on the target list.
---
 src/lib/vm-listener-hoc.jsx |  3 +--
 src/reducers/targets.js     | 21 +++++----------------
 2 files changed, 6 insertions(+), 18 deletions(-)

diff --git a/src/lib/vm-listener-hoc.jsx b/src/lib/vm-listener-hoc.jsx
index 3f1453b54..3ea4dccd8 100644
--- a/src/lib/vm-listener-hoc.jsx
+++ b/src/lib/vm-listener-hoc.jsx
@@ -98,8 +98,7 @@ const vmListenerHOC = function (WrappedComponent) {
     });
     const mapDispatchToProps = dispatch => ({
         onTargetsUpdate: data => {
-            dispatch(updateEditingTarget(data.editingTarget));
-            dispatch(updateTargets(data.targetList));
+            dispatch(updateTargets(data.targetList, data.editingTarget));
         },
         onMonitorsUpdate: monitorList => {
             dispatch(updateMonitors(monitorList));
diff --git a/src/reducers/targets.js b/src/reducers/targets.js
index 6df9632d9..883fe4917 100644
--- a/src/reducers/targets.js
+++ b/src/reducers/targets.js
@@ -1,4 +1,3 @@
-const UPDATE_EDITING_TARGET = 'scratch-gui/targets/UPDATE_EDITING_TARGET';
 const UPDATE_TARGET_LIST = 'scratch-gui/targets/UPDATE_TARGET_LIST';
 
 const initialState = {
@@ -21,27 +20,18 @@ const reducer = function (state, action) {
                     {}
                 ),
             stage: action.targets
-                .filter(target => target.isStage)[0] || {}
+                .filter(target => target.isStage)[0] || {},
+            editingTarget: action.editingTarget
         });
-    case UPDATE_EDITING_TARGET:
-        return Object.assign({}, state, {editingTarget: action.target});
     default:
         return state;
     }
 };
-const updateTargets = function (targetList) {
+const updateTargets = function (targetList, editingTarget) {
     return {
         type: UPDATE_TARGET_LIST,
         targets: targetList,
-        meta: {
-            throttle: 30
-        }
-    };
-};
-const updateEditingTarget = function (editingTarget) {
-    return {
-        type: UPDATE_EDITING_TARGET,
-        target: editingTarget,
+        editingTarget: editingTarget,
         meta: {
             throttle: 30
         }
@@ -49,6 +39,5 @@ const updateEditingTarget = function (editingTarget) {
 };
 export {
     reducer as default,
-    updateTargets,
-    updateEditingTarget
+    updateTargets
 };
-- 
GitLab