diff --git a/app/build.gradle b/app/build.gradle index c69bf37..8c41653 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,7 +9,7 @@ android { applicationId "asgardius.page.s3manager" minSdk 23 targetSdk 33 - versionCode 56 + versionCode 57 versionName "0.6.0" setProperty("archivesBaseName", "s3-manager-$versionName") diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index fa500ad..a8e59e1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -52,8 +52,7 @@ + android:exported="false" /> + android:exported="false" /> fileindex = new ArrayList(); fileindex.add(0); - for (int i = 0; i < filelist.length; i++) { + for (int i = 0; i < filelist.length && !cancel; i++) { filepath.add(filelist[i].getName()); if(filelist[i].isDirectory()) { treelevel++; fileindex.add(0); document = filelist[i]; filelist = document.listFiles(); - while (treelevel >= 1 && fileindex.get(treelevel) < filelist.length+1) { + while (treelevel >= 1 && fileindex.get(treelevel) < filelist.length+1 && !cancel) { if(fileindex.get(treelevel) == filelist.length) { fileindex.remove(treelevel); document = document.getParentFile(); @@ -214,9 +222,13 @@ public class Uploader extends AppCompatActivity { mWakeLock.release(); //System.out.println("WakeLock released"); } - simpleProgressBar.setProgress(100); + if(!cancel) { + simpleProgressBar.setProgress(100); + } //simpleProgressBar.setVisibility(View.INVISIBLE); - if (isfolder) { + if (cancel) { + fileUpload.setText(getResources().getString(R.string.upload_canceled)); + } else if (isfolder) { fileUpload.setText(getResources().getString(R.string.batch_upload_success)); } else { fileUpload.setText(getResources().getString(R.string.upload_success)); @@ -431,32 +443,40 @@ public class Uploader extends AppCompatActivity { // Upload the file parts. long fileOffset = 0; - for (int partNumber = 1; fileOffset < contentLength; ++partNumber) { - // Because the last part could be less than 5 MB, adjust the part size as needed. - partSize = Math.min(partSize, (contentLength - fileOffset)); + try{ + for (int partNumber = 1; fileOffset < contentLength && !cancel; ++partNumber) { + // Because the last part could be less than 5 MB, adjust the part size as needed. + partSize = Math.min(partSize, (contentLength - fileOffset)); - // Create the request to upload a part. - UploadPartRequest uploadRequest = new UploadPartRequest() - .withBucketName(bucket) - .withKey(objectKey) - .withUploadId(initResponse.getUploadId()) - .withPartNumber(partNumber) - .withFileOffset(fileOffset) - .withFile(file) - .withPartSize(partSize); + // Create the request to upload a part. + UploadPartRequest uploadRequest = new UploadPartRequest() + .withBucketName(bucket) + .withKey(objectKey) + .withUploadId(initResponse.getUploadId()) + .withPartNumber(partNumber) + .withFileOffset(fileOffset) + .withFile(file) + .withPartSize(partSize); - // Upload the part and add the response's ETag to our list. - UploadPartResult uploadResult = s3client.uploadPart(uploadRequest); - //LOGGER.info("Uploading part {} of Object s3://{}/{}", partNumber, bucket, objectKey); - partETags.add(uploadResult.getPartETag()); + // Upload the part and add the response's ETag to our list. + UploadPartResult uploadResult = s3client.uploadPart(uploadRequest); + //LOGGER.info("Uploading part {} of Object s3://{}/{}", partNumber, bucket, objectKey); + partETags.add(uploadResult.getPartETag()); - fileOffset += partSize; - transfered++; + fileOffset += partSize; + transfered++; + } + + // Complete the multipart upload. + CompleteMultipartUploadRequest compRequest = new CompleteMultipartUploadRequest(bucket, objectKey, initResponse.getUploadId(), partETags); + s3client.completeMultipartUpload(compRequest); + } catch (AbortedException | AmazonS3Exception e) { + e.printStackTrace(); + AbortMultipartUploadRequest abort = new AbortMultipartUploadRequest(bucket, objectKey, initResponse.getUploadId()); + s3client.abortMultipartUpload(abort); + //Toast.makeText(getApplicationContext(),getResources().getString(R.string.media_list_fail), Toast.LENGTH_SHORT).show(); + //finish(); } - - // Complete the multipart upload. - CompleteMultipartUploadRequest compRequest = new CompleteMultipartUploadRequest(bucket, objectKey, initResponse.getUploadId(), partETags); - s3client.completeMultipartUpload(compRequest); } private void calculateSize() { diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 302ec5e..aeac116 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -11,6 +11,7 @@ Se requiere un nombre para el bucket Compartir archivo Descargar archivo + Descargar archivos Cancelar descarga Archivo descargado exitosamente Subir archivo en este bucket diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5995c05..c6e9a6d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -24,6 +24,7 @@ Share file Open in Download file + Download files Download bucket content Download folder content Cancel download diff --git a/fastlane/metadata/android/en-US/changelogs/56.txt b/fastlane/metadata/android/en-US/changelogs/57.txt similarity index 100% rename from fastlane/metadata/android/en-US/changelogs/56.txt rename to fastlane/metadata/android/en-US/changelogs/57.txt