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

Method appendFiles

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

Source from the content-addressed store, hash-verified

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