Changeset View
Changeset View
Standalone View
Standalone View
native/input/input-state-container.react.js
Show First 20 Lines • Show All 645 Lines • ▼ Show 20 Lines | try { | ||||
}); | }); | ||||
} | } | ||||
const { uploadURI, shouldDisposePath, filename, mime } = processedMedia; | const { uploadURI, shouldDisposePath, filename, mime } = processedMedia; | ||||
const { hasWiFi } = this.props; | const { hasWiFi } = this.props; | ||||
const uploadStart = Date.now(); | const uploadStart = Date.now(); | ||||
let uploadExceptionMessage, uploadResult, mediaMissionResult; | let uploadExceptionMessage, | ||||
uploadResult, | |||||
uploadThumbnailResult, | |||||
mediaMissionResult; | |||||
try { | try { | ||||
const uploadPromises = []; | const uploadPromises = []; | ||||
uploadPromises.push( | uploadPromises.push( | ||||
this.props.uploadMultimedia( | this.props.uploadMultimedia( | ||||
{ uri: uploadURI, name: filename, type: mime }, | { uri: uploadURI, name: filename, type: mime }, | ||||
{ | { | ||||
...processedMedia.dimensions, | ...processedMedia.dimensions, | ||||
loop: | loop: | ||||
Show All 27 Lines | try { | ||||
loop: false, | loop: false, | ||||
}, | }, | ||||
{ | { | ||||
uploadBlob: this.uploadBlob, | uploadBlob: this.uploadBlob, | ||||
}, | }, | ||||
), | ), | ||||
); | ); | ||||
} | } | ||||
[uploadResult] = await Promise.all(uploadPromises); | [uploadResult, uploadThumbnailResult] = await Promise.all(uploadPromises); | ||||
mediaMissionResult = { success: true }; | mediaMissionResult = { success: true }; | ||||
} catch (e) { | } catch (e) { | ||||
uploadExceptionMessage = getMessageForException(e); | uploadExceptionMessage = getMessageForException(e); | ||||
onUploadFailed(localMediaID, 'upload failed'); | onUploadFailed(localMediaID, 'upload failed'); | ||||
mediaMissionResult = { | mediaMissionResult = { | ||||
success: false, | success: false, | ||||
reason: 'http_upload_failed', | reason: 'http_upload_failed', | ||||
exceptionMessage: uploadExceptionMessage, | exceptionMessage: uploadExceptionMessage, | ||||
}; | }; | ||||
} | } | ||||
if (uploadResult) { | if ( | ||||
(processedMedia.mediaType === 'photo' && uploadResult) || | |||||
(processedMedia.mediaType === 'video' && | |||||
uploadResult && | |||||
uploadThumbnailResult) | |||||
) { | |||||
const { id, uri, dimensions, loop } = uploadResult; | const { id, uri, dimensions, loop } = uploadResult; | ||||
serverID = id; | serverID = id; | ||||
// When we dispatch this action, it updates Redux and triggers the | |||||
// componentDidUpdate in this class. componentDidUpdate will handle | let updateMediaPayload = { | ||||
// calling dispatchMultimediaMessageAction once all the uploads are | |||||
// complete, and does not wait until this function concludes. | |||||
this.props.dispatch({ | |||||
type: updateMultimediaMessageMediaActionType, | |||||
payload: { | |||||
messageID: localMessageID, | messageID: localMessageID, | ||||
currentMediaID: localMediaID, | currentMediaID: localMediaID, | ||||
mediaUpdate: { | mediaUpdate: { | ||||
id, | id, | ||||
type: uploadResult.mediaType, | type: uploadResult.mediaType, | ||||
uri, | uri, | ||||
dimensions, | dimensions, | ||||
localMediaSelection: undefined, | localMediaSelection: undefined, | ||||
loop: uploadResult.mediaType === 'video' ? loop : undefined, | loop: uploadResult.mediaType === 'video' ? loop : undefined, | ||||
}, | }, | ||||
}; | |||||
if (processedMedia.mediaType === 'video') { | |||||
invariant(uploadThumbnailResult, 'uploadThumbnailResult exists'); | |||||
const { uri: thumbnailURI } = uploadThumbnailResult; | |||||
updateMediaPayload = { | |||||
...updateMediaPayload, | |||||
mediaUpdate: { | |||||
...updateMediaPayload.mediaUpdate, | |||||
thumbnailURI, | |||||
}, | }, | ||||
}; | |||||
} | |||||
// When we dispatch this action, it updates Redux and triggers the | |||||
// componentDidUpdate in this class. componentDidUpdate will handle | |||||
// calling dispatchMultimediaMessageAction once all the uploads are | |||||
// complete, and does not wait until this function concludes. | |||||
this.props.dispatch({ | |||||
type: updateMultimediaMessageMediaActionType, | |||||
payload: updateMediaPayload, | |||||
}); | }); | ||||
userTime = Date.now() - start; | userTime = Date.now() - start; | ||||
} | } | ||||
const processSteps = await reportPromise; | const processSteps = await reportPromise; | ||||
reportPromise = null; | reportPromise = null; | ||||
steps.push(...processSteps); | steps.push(...processSteps); | ||||
steps.push({ | steps.push({ | ||||
▲ Show 20 Lines • Show All 652 Lines • Show Last 20 Lines |