diff --git a/.travis.yml b/.travis.yml index c20410a3f3c59002144bc94e9e8a7e0e708cf63c..f51de2590614b70dbcaf091b423a17c334cf0daf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,6 +25,7 @@ before_deploy: if [ -z "$BEFORE_DEPLOY_RAN" ]; then npm --no-git-tag-version version $RELEASE_VERSION if [ "$TRAVIS_BRANCH" == "master" ]; then export NPM_TAG=stable; fi + if [[ "$TRAVIS_BRANCH" == hotfix/* ]]; then export NPM_TAG=hotfix; fi # double brackets are important for matching the wildcard git config --global user.email $(git log --pretty=format:"%ae" -n1) git config --global user.name $(git log --pretty=format:"%an" -n1) export BEFORE_DEPLOY_RAN=true @@ -36,6 +37,7 @@ deploy: - master - develop - smoke + - hotfix/* condition: $TRAVIS_EVENT_TYPE != cron skip_cleanup: true email: $NPM_EMAIL diff --git a/src/containers/backpack.jsx b/src/containers/backpack.jsx index 1a22a185e956db246d371aa8e1a10eb5ca883e6c..b4f33ab43a1eae95ac082767b79fe801f5ee970f 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.payload.asset; break; case DragConstants.SOUND: payloader = soundPayload; + presaveAsset = dragInfo.payload.asset; break; case DragConstants.SPRITE: payloader = spritePayload; @@ -102,6 +105,19 @@ 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.assetType, + presaveAsset.dataFormat, + presaveAsset.data, + presaveAsset.assetId + ).then(() => payload); + } + return payload; + }) .then(payload => saveBackpackObject({ host: this.props.host, token: this.props.token,