MCPcopy Create free account
hub / github.com/CommE2E/comm / uploadFile

Method uploadFile

native/input/input-state-container.react.js:773–1169  ·  view source on GitHub ↗
(
    localMessageID: string,
    uploadFileInput: UploadFileInput,
    threadInfo: ThreadInfo,
  )

Source from the content-addressed store, hash-verified

771 }
772
773 async uploadFile(
774 localMessageID: string,
775 uploadFileInput: UploadFileInput,
776 threadInfo: ThreadInfo,
777 ): Promise<?string> {
778 const { ids, selection } = uploadFileInput;
779 const { localMediaID, localThumbnailID } = ids;
780 const start = selection.sendTime;
781 const steps: Array<MediaMissionStep> = [selection];
782 let encryptionSteps: $ReadOnlyArray<MediaMissionStep> = [];
783 let serverID;
784 let userTime;
785 let errorMessage;
786 let reportPromise: ?Promise<$ReadOnlyArray<MediaMissionStep>>;
787 const fileURIsToDispose = [];
788
789 const onUploadFinished = async (result: MediaMissionResult) => {
790 if (!this.props.mediaReportsEnabled) {
791 return errorMessage;
792 }
793 if (reportPromise) {
794 const finalSteps = await reportPromise;
795 steps.push(...finalSteps);
796 steps.push(...encryptionSteps);
797 }
798 const totalTime = Date.now() - start;
799 userTime = userTime ? userTime : totalTime;
800 this.queueMediaMissionReport(
801 { localID: localMediaID, localMessageID, serverID },
802 { steps, result, totalTime, userTime },
803 );
804 return errorMessage;
805 };
806 const onUploadFailed = (message: string) => {
807 errorMessage = message;
808 this.handleUploadFailure(localMessageID, localMediaID, localThumbnailID);
809 userTime = Date.now() - start;
810 };
811
812 const onTranscodingProgress = (percent: number) => {
813 this.setProgress(localMessageID, localMediaID, 'transcoding', percent);
814 };
815
816 let processedMedia;
817 const processingStart = Date.now();
818 try {
819 const processMediaReturn = processMedia(selection, {
820 hasWiFi: this.props.hasWiFi,
821 finalFileHeaderCheck: this.props.staffCanSee,
822 onTranscodingProgress,
823 });
824 reportPromise = processMediaReturn.reportPromise;
825 const processResult = await processMediaReturn.resultPromise;
826 if (!processResult.success) {
827 const message =
828 processResult.reason === 'video_too_long'
829 ? `can't do vids longer than ${videoDurationLimit}min`
830 : 'processing failed';

Callers 1

uploadFilesMethod · 0.95

Calls 9

setProgressMethod · 0.95
processMediaFunction · 0.90
getMessageForExceptionFunction · 0.90
encryptMediaFunction · 0.90
replaceExtensionFunction · 0.90
disposeTempFileFunction · 0.90
pushMethod · 0.80
forEachMethod · 0.65

Tested by

no test coverage detected