penguinmod-editor / src /lib /backpack /costume-payload.js
soiz1's picture
Upload 1525 files
f2bee8a verified
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;