soiz1's picture
Upload 2891 files
6bcb42f verified
// eslint-disable-next-line import/no-unresolved
import soundThumbnail from '!base64-loader!./sound-thumbnail.png';
const soundPayload = sound => {
const assetDataUrl = sound.asset.encodeDataURI();
const assetDataFormat = sound.dataFormat;
const payload = {
type: 'sound',
name: sound.name,
thumbnail: soundThumbnail,
// Params to be filled in below
mime: '',
body: ''
};
switch (assetDataFormat) {
case 'wav':
payload.mime = 'audio/x-wav';
payload.body = assetDataUrl.replace('data:audio/x-wav;base64,', '');
break;
case 'mp3':
payload.mime = 'audio/mp3';
// TODO scratch-storage should be fixed so that encodeDataURI does not
// always prepend the wave format header; Once that is fixed, the following
// line will have to change.
payload.body = assetDataUrl.replace('data:audio/x-wav;base64,', '');
break;
case 'ogg':
payload.mime = 'audio/ogg';
payload.body = assetDataUrl.replace('data:audio/x-wav;base64,', '');
break;
case 'flac':
payload.mime = 'audio/flac';
payload.body = assetDataUrl.replace('data:audio/x-wav;base64,', '');
break;
default:
alert(`Cannot serialize for format: ${assetDataFormat}`); // eslint-disable-line
}
// Return a promise to make it consistent with other payload constructors like costume-payload
return new Promise(resolve => resolve(payload));
};
export {
soundPayload as default,
soundThumbnail
};