From be12263b2a1cab43793d3a00c761cbbdb97132e1 Mon Sep 17 00:00:00 2001
From: Paul Kaplan <pkaplan@media.mit.edu>
Date: Fri, 26 May 2017 08:06:50 -0400
Subject: [PATCH] Use setState callback for rotating costumes

---
 src/containers/sprite-library.jsx | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/src/containers/sprite-library.jsx b/src/containers/sprite-library.jsx
index 6738bacd8..fb9a6ce03 100644
--- a/src/containers/sprite-library.jsx
+++ b/src/containers/sprite-library.jsx
@@ -14,7 +14,9 @@ class SpriteLibrary extends React.Component {
             'handleItemSelect',
             'handleMouseEnter',
             'handleMouseLeave',
-            'rotateCostume'
+            'rotateCostume',
+            'startRotatingCostumes',
+            'stopRotatingCostumes'
         ]);
         this.state = {
             activeSprite: null,
@@ -29,11 +31,17 @@ class SpriteLibrary extends React.Component {
         this.props.vm.addSprite2(JSON.stringify(item.json));
     }
     handleMouseEnter (item) {
-        this.setState({activeSprite: item});
-        if (this.intervalId) clearInterval(this.intervalId);
-        this.intervalId = setInterval(this.rotateCostume, 300);
+        this.stopRotatingCostumes();
+        this.setState({activeSprite: item}, this.startRotatingCostumes);
     }
     handleMouseLeave () {
+        this.stopRotatingCostumes();
+    }
+    startRotatingCostumes () {
+        if (!this.state.activeSprite) return;
+        this.intervalId = setInterval(this.rotateCostume, 300);
+    }
+    stopRotatingCostumes () {
         this.intervalId = clearInterval(this.intervalId);
     }
     rotateCostume () {
-- 
GitLab