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

Method appendFiles

web/input/input-state-container.react.js:728–783  ·  view source on GitHub ↗
(
    threadInfo: ThreadInfo,
    files: $ReadOnlyArray<File>,
  )

Source from the content-addressed store, hash-verified

726 }
727
728 async appendFiles(
729 threadInfo: ThreadInfo,
730 files: $ReadOnlyArray<File>,
731 ): Promise<boolean> {
732 const selectionTime = Date.now();
733 const { pushModal } = this.props;
734
735 const appendResults = await Promise.all(
736 files.map(file => this.appendFile(threadInfo, file, selectionTime)),
737 );
738
739 if (appendResults.some(({ result }) => !result.success)) {
740 pushModal(<InvalidUploadModal />);
741
742 const time = Date.now() - selectionTime;
743 const reports = [];
744 for (const appendResult of appendResults) {
745 const { steps } = appendResult;
746 let { result } = appendResult;
747 let uploadLocalID;
748 if (result.success) {
749 uploadLocalID = result.pendingUpload.localID;
750 result = { success: false, reason: 'web_sibling_validation_failed' };
751 }
752 const mediaMission = { steps, result, userTime: time, totalTime: time };
753 reports.push({ mediaMission, uploadLocalID });
754 }
755 this.queueMediaMissionReports(reports);
756
757 return false;
758 }
759
760 const newUploads = appendResults.map(({ result }) => {
761 invariant(result.success, 'any failed validation should be caught above');
762 return result.pendingUpload;
763 });
764
765 const newUploadsObject = _keyBy('localID')(newUploads);
766 this.setState(
767 prevState => {
768 const newThreadID = this.getRealizedOrPendingThreadID(threadInfo.id);
769 const prevUploads = prevState.pendingUploads[newThreadID];
770 const mergedUploads = prevUploads
771 ? { ...prevUploads, ...newUploadsObject }
772 : newUploadsObject;
773 return {
774 pendingUploads: {
775 ...prevState.pendingUploads,
776 [newThreadID]: mergedUploads,
777 },
778 };
779 },
780 () => this.uploadFiles(threadInfo, newUploads),
781 );
782 return true;
783 }
784
785 async appendFile(

Callers 3

InputStateContainerClass · 0.95
ChatInputBarClass · 0.80

Calls 5

appendFileMethod · 0.95
uploadFilesMethod · 0.95
pushMethod · 0.80

Tested by

no test coverage detected