Changeset View
Changeset View
Standalone View
Standalone View
native/input/input-state-container.react.js
Show All 16 Lines | |||||
import { queueReportsActionType } from 'lib/actions/report-actions'; | import { queueReportsActionType } from 'lib/actions/report-actions'; | ||||
import { newThread } from 'lib/actions/thread-actions'; | import { newThread } from 'lib/actions/thread-actions'; | ||||
import { | import { | ||||
uploadMultimedia, | uploadMultimedia, | ||||
updateMultimediaMessageMediaActionType, | updateMultimediaMessageMediaActionType, | ||||
type MultimediaUploadCallbacks, | type MultimediaUploadCallbacks, | ||||
type MultimediaUploadExtras, | type MultimediaUploadExtras, | ||||
} from 'lib/actions/upload-actions'; | } from 'lib/actions/upload-actions'; | ||||
import { pathFromURI } from 'lib/media/file-utils'; | import { pathFromURI, replaceExtension } from 'lib/media/file-utils'; | ||||
import { isLocalUploadID, getNextLocalUploadID } from 'lib/media/media-utils'; | import { isLocalUploadID, getNextLocalUploadID } from 'lib/media/media-utils'; | ||||
import { videoDurationLimit } from 'lib/media/video-utils'; | import { videoDurationLimit } from 'lib/media/video-utils'; | ||||
import { | import { | ||||
createLoadingStatusSelector, | createLoadingStatusSelector, | ||||
combineLoadingStatuses, | combineLoadingStatuses, | ||||
} from 'lib/selectors/loading-selectors'; | } from 'lib/selectors/loading-selectors'; | ||||
import { | import { | ||||
createMediaMessageInfo, | createMediaMessageInfo, | ||||
▲ Show 20 Lines • Show All 614 Lines • ▼ Show 20 Lines | ): Promise<?string> { | ||||
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, mediaMissionResult; | ||||
try { | try { | ||||
const loop = | const uploadPromises = []; | ||||
processedMedia.mediaType === 'video' ? processedMedia.loop : undefined; | uploadPromises.push( | ||||
uploadResult = await this.props.uploadMultimedia( | this.props.uploadMultimedia( | ||||
{ uri: uploadURI, name: filename, type: mime }, | { uri: uploadURI, name: filename, type: mime }, | ||||
{ ...processedMedia.dimensions, loop }, | { | ||||
...processedMedia.dimensions, | |||||
loop: | |||||
processedMedia.mediaType === 'video' | |||||
? processedMedia.loop | |||||
: undefined, | |||||
}, | |||||
{ | { | ||||
onProgress: (percent: number) => | onProgress: (percent: number) => | ||||
this.setProgress( | this.setProgress( | ||||
localMessageID, | localMessageID, | ||||
localMediaID, | localMediaID, | ||||
'uploading', | 'uploading', | ||||
percent, | percent, | ||||
), | ), | ||||
uploadBlob: this.uploadBlob, | uploadBlob: this.uploadBlob, | ||||
}, | }, | ||||
), | |||||
); | |||||
if (processedMedia.mediaType === 'video') { | |||||
uploadPromises.push( | |||||
this.props.uploadMultimedia( | |||||
{ | |||||
uri: processedMedia.uploadThumbnailURI, | |||||
name: replaceExtension(`thumb${filename}`, 'jpg'), | |||||
type: 'image/jpeg', | |||||
}, | |||||
{ | |||||
...processedMedia.dimensions, | |||||
loop: false, | |||||
}, | |||||
{ | |||||
uploadBlob: this.uploadBlob, | |||||
}, | |||||
), | |||||
); | ); | ||||
} | |||||
[uploadResult] = 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, | ||||
▲ Show 20 Lines • Show All 684 Lines • Show Last 20 Lines |