From c799541d8ec5a80765392638f235ec52f811adc1 Mon Sep 17 00:00:00 2001
From: Paul Kaplan <pkaplan@media.mit.edu>
Date: Wed, 19 Dec 2018 16:02:31 -0500
Subject: [PATCH] Ignore projectChange updates from the VM when not in editor
 mode

This prevents unnecassary changes that do not matter to the player view because they were made by the project in progress (i.e. made by running the blocks, or by cloud var updates)
---
 src/lib/vm-listener-hoc.jsx | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/lib/vm-listener-hoc.jsx b/src/lib/vm-listener-hoc.jsx
index abd4ce1b2..8c80de40a 100644
--- a/src/lib/vm-listener-hoc.jsx
+++ b/src/lib/vm-listener-hoc.jsx
@@ -74,10 +74,12 @@ const vmListenerHOC = function (WrappedComponent) {
             }
         }
         handleProjectChanged () {
-            this.props.onProjectChanged();
+            if (this.props.shouldEmitUpdates) {
+                this.props.onProjectChanged();
+            }
         }
         handleTargetsUpdate (data) {
-            if (this.props.shouldEmitTargetsUpdate) {
+            if (this.props.shouldEmitUpdates) {
                 this.props.onTargetsUpdate(data);
             }
         }
@@ -115,7 +117,7 @@ const vmListenerHOC = function (WrappedComponent) {
             const {
                 /* eslint-disable no-unused-vars */
                 attachKeyboardEvents,
-                shouldEmitTargetsUpdate,
+                shouldEmitUpdates,
                 onBlockDragUpdate,
                 onGreenFlag,
                 onKeyDown,
@@ -152,7 +154,7 @@ const vmListenerHOC = function (WrappedComponent) {
         onTargetsUpdate: PropTypes.func.isRequired,
         onTurboModeOff: PropTypes.func.isRequired,
         onTurboModeOn: PropTypes.func.isRequired,
-        shouldEmitTargetsUpdate: PropTypes.bool,
+        shouldEmitUpdates: PropTypes.bool,
         username: PropTypes.string,
         vm: PropTypes.instanceOf(VM).isRequired
     };
@@ -161,8 +163,8 @@ const vmListenerHOC = function (WrappedComponent) {
         onGreenFlag: () => ({})
     };
     const mapStateToProps = state => ({
-        // Do not emit target updates in fullscreen or player only mode
-        shouldEmitTargetsUpdate: !state.scratchGui.mode.isFullScreen && !state.scratchGui.mode.isPlayerOnly,
+        // Do not emit target or project updates in fullscreen or player only mode
+        shouldEmitUpdates: !state.scratchGui.mode.isFullScreen && !state.scratchGui.mode.isPlayerOnly,
         vm: state.scratchGui.vm,
         username: state.session && state.session.session && state.session.session.user ?
             state.session.session.user.username : ''
-- 
GitLab