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

Method uploadFile

web/input/input-state-container.react.js:901–1163  ·  view source on GitHub ↗
(threadInfo: ThreadInfo, upload: PendingMultimediaUpload)

Source from the content-addressed store, hash-verified

899 }
900
901 async uploadFile(threadInfo: ThreadInfo, upload: PendingMultimediaUpload) {
902 const { selectTime, localID, encryptionKey } = upload;
903 const threadID = threadInfo.id;
904 const uploadMultimediaMetadataToKeyserver =
905 threadSpecs[threadInfo.type].protocol()
906 .uploadMultimediaMetadataToKeyserver;
907 const isEncrypted =
908 !!encryptionKey &&
909 (upload.mediaType === 'encrypted_photo' ||
910 upload.mediaType === 'encrypted_video');
911
912 const steps = [...upload.steps];
913 let userTime;
914
915 const { identityContext } = this.props;
916 invariant(identityContext, 'Identity context should be set');
917
918 const sendReport = (missionResult: MediaMissionResult) => {
919 const newThreadID = this.getRealizedOrPendingThreadID(threadID);
920 const latestUpload = this.state.pendingUploads[newThreadID][localID];
921 invariant(
922 latestUpload,
923 `pendingUpload ${localID} for ${newThreadID} missing in sendReport`,
924 );
925 const { serverID, messageID } = latestUpload;
926 const totalTime = Date.now() - selectTime;
927 userTime = userTime ? userTime : totalTime;
928 const mission = { steps, result: missionResult, totalTime, userTime };
929 this.queueMediaMissionReports([
930 {
931 mediaMission: mission,
932 uploadLocalID: localID,
933 uploadServerID: serverID,
934 messageLocalID: messageID,
935 },
936 ]);
937 };
938
939 let uploadResult, uploadExceptionMessage;
940 const uploadStart = Date.now();
941 try {
942 const callbacks = {
943 onProgress: (percent: number) =>
944 this.setProgress(threadID, localID, percent),
945 abortHandler: (abort: () => void) =>
946 this.handleAbortCallback(threadID, localID, abort),
947 };
948
949 const supportsEncryptedMultimedia =
950 threadSpecs[threadInfo.type].protocol().supportsEncryptedMultimedia;
951
952 if (supportsEncryptedMultimedia) {
953 const { mediaType, blobHash, dimensions, thumbHash } = upload;
954 invariant(
955 mediaType === 'encrypted_photo' || mediaType === 'encrypted_video',
956 'uploaded media should be encrypted',
957 );
958 invariant(

Callers 1

uploadFilesMethod · 0.95

Calls 9

setProgressMethod · 0.95
handleAbortCallbackMethod · 0.95
handleUploadFailureMethod · 0.95
getMessageForExceptionFunction · 0.90
preloadMediaResourceFunction · 0.90
preloadImageFunction · 0.90
sendReportFunction · 0.85
pushMethod · 0.80

Tested by

no test coverage detected