fix audio attachments sending blob

pull/1870/head
audric 4 years ago
parent 68330b42bf
commit f48b57d077

@ -76,6 +76,7 @@ export interface StagedLinkPreviewData {
export interface StagedAttachmentType extends AttachmentType { export interface StagedAttachmentType extends AttachmentType {
file: File; file: File;
path?: string; // a bit hacky, but this is the only way to make our sending audio message be playable, this must be used only for those message
} }
export type SendMessageType = { export type SendMessageType = {
@ -934,18 +935,22 @@ class SessionCompositionBoxInner extends React.Component<Props, State> {
return; return;
} }
const file = new File([audioBlob], 'audio-blob'); const savedAudioFile = await window.Signal.Migrations.processNewAttachment({
data: await audioBlob.arrayBuffer(),
isRaw: true,
url: `session-audio-message-${Date.now()}`,
});
const audioAttachment: StagedAttachmentType = { const audioAttachment: StagedAttachmentType = {
file, file: { ...savedAudioFile, path: savedAudioFile.path },
contentType: MIME.AUDIO_MP3, contentType: MIME.AUDIO_MP3,
size: audioBlob.size, size: audioBlob.size,
fileSize: null, fileSize: null,
screenshot: null, screenshot: null,
fileName: 'audio-message', fileName: 'session-audio-message',
thumbnail: null, thumbnail: null,
url: '', url: '',
isVoiceMessage: true, isVoiceMessage: true,
path: savedAudioFile.path,
}; };
this.props.sendMessage({ this.props.sendMessage({

@ -204,6 +204,7 @@ function _cleanData(data: any): any {
// eslint-disable-next-line no-continue // eslint-disable-next-line no-continue
continue; continue;
} }
// eslint-disable no-param-reassign
if (_.isFunction(value.toNumber)) { if (_.isFunction(value.toNumber)) {
// eslint-disable-next-line no-param-reassign // eslint-disable-next-line no-param-reassign
@ -214,16 +215,12 @@ function _cleanData(data: any): any {
// tslint:disable-next-line: no-dynamic-delete // tslint:disable-next-line: no-dynamic-delete
delete data[key]; delete data[key];
} else if (Array.isArray(value)) { } else if (Array.isArray(value)) {
// eslint-disable-next-line no-param-reassign
data[key] = value.map(_cleanData); data[key] = value.map(_cleanData);
} else if (_.isObject(value) && value instanceof File) { } else if (_.isObject(value) && value instanceof File) {
// eslint-disable-next-line no-param-reassign
data[key] = { name: value.name, path: value.path, size: value.size, type: value.type }; data[key] = { name: value.name, path: value.path, size: value.size, type: value.type };
} else if (_.isObject(value)) { } else if (_.isObject(value)) {
// eslint-disable-next-line no-param-reassign
data[key] = _cleanData(value); data[key] = _cleanData(value);
} else if (_.isBoolean(value)) { } else if (_.isBoolean(value)) {
// eslint-disable-next-line no-param-reassign
data[key] = value ? 1 : 0; data[key] = value ? 1 : 0;
} else if ( } else if (
typeof value !== 'string' && typeof value !== 'string' &&

Loading…
Cancel
Save