From 17e28b2a24e0a387359237f79bef4dd22a7567fe Mon Sep 17 00:00:00 2001 From: Paul Kaplan Date: Thu, 11 Apr 2019 08:29:46 -0400 Subject: [PATCH 1/2] Make sure to save assets before sending them to the backpack This prevents assets from existing in the backpack server without also existing in the asset server. --- src/containers/backpack.jsx | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/containers/backpack.jsx b/src/containers/backpack.jsx index 1a22a185e..a2fe10d09 100644 --- a/src/containers/backpack.jsx +++ b/src/containers/backpack.jsx @@ -83,12 +83,15 @@ class Backpack extends React.Component { } handleDrop (dragInfo) { let payloader = null; + let presaveAsset = null; switch (dragInfo.dragType) { case DragConstants.COSTUME: payloader = costumePayload; + presaveAsset = dragInfo.asset; break; case DragConstants.SOUND: payloader = soundPayload; + presaveAsset = dragInfo.asset; break; case DragConstants.SPRITE: payloader = spritePayload; @@ -102,6 +105,14 @@ class Backpack extends React.Component { // Creating the payload is async, so set loading before starting this.setState({loading: true}, () => { payloader(dragInfo.payload, this.props.vm) + .then(payload => { + // Force the asset to save to the asset server before storing in backpack + // Ensures any asset present in the backpack is also on the asset server + if (presaveAsset && !presaveAsset.clean) { + return storage.store(presaveAsset).then(() => payload); + } + return payload; + }) .then(payload => saveBackpackObject({ host: this.props.host, token: this.props.token, From 308568a3327c09af0621a599ad3a29d1f5dbf07a Mon Sep 17 00:00:00 2001 From: Karishma Chadha Date: Fri, 12 Apr 2019 12:10:49 -0400 Subject: [PATCH 2/2] Fix bugs found while testing related to retrieving and storing asset. --- src/containers/backpack.jsx | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/containers/backpack.jsx b/src/containers/backpack.jsx index a2fe10d09..b4f33ab43 100644 --- a/src/containers/backpack.jsx +++ b/src/containers/backpack.jsx @@ -87,11 +87,11 @@ class Backpack extends React.Component { switch (dragInfo.dragType) { case DragConstants.COSTUME: payloader = costumePayload; - presaveAsset = dragInfo.asset; + presaveAsset = dragInfo.payload.asset; break; case DragConstants.SOUND: payloader = soundPayload; - presaveAsset = dragInfo.asset; + presaveAsset = dragInfo.payload.asset; break; case DragConstants.SPRITE: payloader = spritePayload; @@ -109,7 +109,12 @@ class Backpack extends React.Component { // Force the asset to save to the asset server before storing in backpack // Ensures any asset present in the backpack is also on the asset server if (presaveAsset && !presaveAsset.clean) { - return storage.store(presaveAsset).then(() => payload); + return storage.store( + presaveAsset.assetType, + presaveAsset.dataFormat, + presaveAsset.data, + presaveAsset.assetId + ).then(() => payload); } return payload; })