Spaces:
Running
Running
import createThumbnail from './thumbnail'; | |
import getCostumeUrl from '../get-costume-url'; | |
const costumePayload = (costume, vm) => { | |
// TODO is it ok to base64 encode SVGs? What about unicode text inside them? | |
const assetDataUrl = vm.getExportedCostumeBase64(costume); | |
const assetDataFormat = costume.dataFormat; | |
const payload = { | |
type: 'costume', | |
name: costume.name, | |
// Params to be filled in below | |
mime: '', | |
body: '', | |
thumbnail: '' | |
}; | |
switch (assetDataFormat) { | |
case 'svg': | |
payload.mime = 'image/svg+xml'; | |
payload.body = assetDataUrl; | |
break; | |
case 'png': | |
payload.mime = 'image/png'; | |
payload.body = assetDataUrl; | |
break; | |
case 'jpg': | |
payload.mime = 'image/jpeg'; | |
payload.body = assetDataUrl; | |
break; | |
default: | |
alert(`Cannot serialize for format: ${assetDataFormat}`); // eslint-disable-line | |
} | |
// Do not generate the thumbnail from the raw asset. Instead use the getCostumeUrl | |
// utility which inlines the fonts to make the thumbnail show the right fonts. | |
const inlinedFontDataUrl = getCostumeUrl(costume.asset); | |
return createThumbnail(inlinedFontDataUrl).then(thumbnail => { | |
payload.thumbnail = thumbnail; | |
return payload; | |
}); | |
}; | |
export default costumePayload; | |