Skip to content

Commit cb928b8

Browse files
authored
Merge pull request scratchfoundation#4733 from paulkaplan/presave-backpack-asset
Make sure to save assets before sending them to the backpack
2 parents c87560a + 308568a commit cb928b8

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

src/containers/backpack.jsx

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,12 +83,15 @@ class Backpack extends React.Component {
8383
}
8484
handleDrop (dragInfo) {
8585
let payloader = null;
86+
let presaveAsset = null;
8687
switch (dragInfo.dragType) {
8788
case DragConstants.COSTUME:
8889
payloader = costumePayload;
90+
presaveAsset = dragInfo.payload.asset;
8991
break;
9092
case DragConstants.SOUND:
9193
payloader = soundPayload;
94+
presaveAsset = dragInfo.payload.asset;
9295
break;
9396
case DragConstants.SPRITE:
9497
payloader = spritePayload;
@@ -102,6 +105,19 @@ class Backpack extends React.Component {
102105
// Creating the payload is async, so set loading before starting
103106
this.setState({loading: true}, () => {
104107
payloader(dragInfo.payload, this.props.vm)
108+
.then(payload => {
109+
// Force the asset to save to the asset server before storing in backpack
110+
// Ensures any asset present in the backpack is also on the asset server
111+
if (presaveAsset && !presaveAsset.clean) {
112+
return storage.store(
113+
presaveAsset.assetType,
114+
presaveAsset.dataFormat,
115+
presaveAsset.data,
116+
presaveAsset.assetId
117+
).then(() => payload);
118+
}
119+
return payload;
120+
})
105121
.then(payload => saveBackpackObject({
106122
host: this.props.host,
107123
token: this.props.token,

0 commit comments

Comments
 (0)