diff --git a/src/components/UploadButton.js b/src/components/UploadButton.js index 62c6bc3..612311c 100644 --- a/src/components/UploadButton.js +++ b/src/components/UploadButton.js @@ -86,6 +86,8 @@ export default function UploadButton({ ); return; } + setState((prevState) => ({ ...prevState, value: "Uploading" })); + const accessToken = await getAccessToken(); const googleDrive = new GDrive(); googleDrive.accessToken = accessToken; @@ -93,6 +95,7 @@ export default function UploadButton({ const file = await selectFile(); if (file == null) { + setState((prevState) => ({ ...prevState, value: null })); return; } const fileData = await fs.readFile(file.uri, "base64"); @@ -146,6 +149,18 @@ export default function UploadButton({ alertError("Error uploading file: " + error); } setFileName("Upload failed"); + setState((prevState) => ({ ...prevState, value: null })); + return; + } + + if (file.size > 104857600) { + // 100 MB + Alert.alert( + "File size too large", + `Your file ${file.name} has a size of ${file.size} bytes. Please compress your file and upload a smaller version.`, + ); + setFileName("Upload too large"); + setState((prevState) => ({ ...prevState, value: null })); return; } @@ -153,7 +168,7 @@ export default function UploadButton({ setState((prevState) => ({ ...prevState, - value: [`https://drive.google.com/open?id=${id}`, file.size], + value: `https://drive.google.com/open?id=${id}`, })); }} > diff --git a/src/utils/forms/LibraryMusicHour.js b/src/utils/forms/LibraryMusicHour.js index 6a6af36..aeb7d5a 100644 --- a/src/utils/forms/LibraryMusicHour.js +++ b/src/utils/forms/LibraryMusicHour.js @@ -261,11 +261,7 @@ export default class LibraryMusicHour extends Form { navigation={this.navigation} /> ), - // Only PDF files can be uploaded - // Optional - validate: () => - this.pianoAccompaniment[0].value == null || - this.pianoAccompaniment[0].value[1] <= 104857600, // There are 104,857,600 bytes in 100 MB + validate: () => this.pianoAccompaniment[0].value != "Uploading", }), this.title == "Library Music Hour" @@ -285,11 +281,9 @@ export default class LibraryMusicHour extends Form { isVisible: () => this.performanceType[0].value?.includes("Ensemble"), - // Only PDF files can be uploaded - // Required only if visible (selected ensemble option) validate: () => this.ensembleProfile[0].value != null && - this.ensembleProfile[0].value[1] <= 104857600, // There are 104,857,600 bytes in 100 MB + this.ensembleProfile[0].value != "Uploading", }) : null,