diff --git a/components/IscnUploadForm.vue b/components/IscnUploadForm.vue index 5f211519..7467870c 100644 --- a/components/IscnUploadForm.vue +++ b/components/IscnUploadForm.vue @@ -836,40 +836,38 @@ export default class IscnUploadForm extends Vue { if (this.epubMetadataList?.find(epubMetadata => epubMetadata.thumbnailArweaveId)) { return; } - // eslint-disable-next-line no-restricted-syntax - for (const file of this.fileRecords) { - if (IMAGE_MIME_TYPES.includes(file.fileType)) { - const existingData = - this.sentArweaveTransactionInfo.get(file.ipfsHash) || {} - if (existingData.arweaveId) { - this.epubMetadataList.push({ - thumbnailIpfsHash: file.ipfsHash, - thumbnailArweaveId: existingData.arweaveId, - }) - return - } - let {transactionHash} = existingData; - if (!transactionHash) { - // eslint-disable-next-line no-await-in-loop - transactionHash = await this.sendArweaveFeeTx(file); - } - // eslint-disable-next-line no-await-in-loop - const arweaveId = await this.uploadFileAndGetArweaveId( - file, - transactionHash, - ) - if (arweaveId) { - this.epubMetadataList.push({ - thumbnailIpfsHash: file.ipfsHash, - thumbnailArweaveId: arweaveId, - }) - this.sentArweaveTransactionInfo.set(file.ipfsHash, { transactionHash, arweaveId }); - return - } - return + const uploadPromises = this.fileRecords + .filter(file => IMAGE_MIME_TYPES.includes(file.fileType)) + .map(async (file) => { + const existingData = this.sentArweaveTransactionInfo.get(file.ipfsHash) || {}; + + if (existingData.arweaveId) { + return { + thumbnailIpfsHash: file.ipfsHash, + thumbnailArweaveId: existingData.arweaveId, + }; } - } + + let { transactionHash } = existingData; + if (!transactionHash) { + transactionHash = await this.sendArweaveFeeTx(file); + } + + const arweaveId = await this.uploadFileAndGetArweaveId(file, transactionHash); + + if (arweaveId) { + this.sentArweaveTransactionInfo.set(file.ipfsHash, { transactionHash, arweaveId }); + return { + thumbnailIpfsHash: file.ipfsHash, + thumbnailArweaveId: arweaveId, + }; + } + + return false + }); + const results = await Promise.all(uploadPromises); + this.epubMetadataList.push(...results.filter(Boolean)); } async onSubmit() {