Spaces:
Running
Running
File size: 1,574 Bytes
6bcb42f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
// 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
};
|