From 1c904641e00118114c8b17359c2640c741a4bd4e Mon Sep 17 00:00:00 2001 From: androiddevkotlin <64539346+androiddevkotlin@users.noreply.github.com> Date: Thu, 28 Jan 2021 18:59:37 +0200 Subject: [PATCH 1/2] Check upload success --- .../UploadPhotoProgressBottomSheet.java | 1 - .../mapcontextmenu/UploadPhotosAsyncTask.java | 23 +++++++++++++------ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/dialogs/UploadPhotoProgressBottomSheet.java b/OsmAnd/src/net/osmand/plus/dialogs/UploadPhotoProgressBottomSheet.java index f1c37a55ee..46483ffc9b 100644 --- a/OsmAnd/src/net/osmand/plus/dialogs/UploadPhotoProgressBottomSheet.java +++ b/OsmAnd/src/net/osmand/plus/dialogs/UploadPhotoProgressBottomSheet.java @@ -87,7 +87,6 @@ public class UploadPhotoProgressBottomSheet extends MenuBottomSheetDialogFragmen @Override public void uploadPhotosFinished() { - updateProgress(maxProgress); if (progress == maxProgress) { uploadedPhotosCounter.setText((getString(R.string.uploaded_count, progress, maxProgress))); setDismissButtonTextId(R.string.shared_string_close); diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/UploadPhotosAsyncTask.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/UploadPhotosAsyncTask.java index 30932e8b42..b47cc51f68 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/UploadPhotosAsyncTask.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/UploadPhotosAsyncTask.java @@ -34,6 +34,7 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.lang.ref.WeakReference; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -45,14 +46,13 @@ public class UploadPhotosAsyncTask extends AsyncTask { private final OsmandApplication app; private final WeakReference activityRef; - private UploadPhotosListener listener; - private final OpenDBAPI openDBAPI = new OpenDBAPI(); private final LatLon latLon; private final List data; private final String[] placeId; private final Map params; private final GetImageCardsListener imageCardListener; + private UploadPhotosListener listener; public UploadPhotosAsyncTask(MapActivity activity, List data, LatLon latLon, String[] placeId, Map params, GetImageCardsListener imageCardListener) { @@ -87,13 +87,16 @@ public class UploadPhotosAsyncTask extends AsyncTask { } protected Void doInBackground(Void... uris) { + List uploadedPhotoUris = new ArrayList<>(); for (int i = 0; i < data.size(); i++) { if (isCancelled()) { break; } Uri uri = data.get(i); - handleSelectedImage(uri); - publishProgress(i + 1); + if (handleSelectedImage(uri)) { + uploadedPhotoUris.add(uri); + publishProgress(uploadedPhotoUris.size()); + } } return null; } @@ -105,12 +108,13 @@ public class UploadPhotosAsyncTask extends AsyncTask { } } - private void handleSelectedImage(final Uri uri) { + private boolean handleSelectedImage(final Uri uri) { + boolean success = false; InputStream inputStream = null; try { inputStream = app.getContentResolver().openInputStream(uri); if (inputStream != null) { - uploadImageToPlace(inputStream); + success = uploadImageToPlace(inputStream); } } catch (Exception e) { LOG.error(e); @@ -118,9 +122,11 @@ public class UploadPhotosAsyncTask extends AsyncTask { } finally { Algorithms.closeStream(inputStream); } + return success; } - private void uploadImageToPlace(InputStream image) { + private boolean uploadImageToPlace(InputStream image) { + boolean success = false; InputStream serverData = new ByteArrayInputStream(compressImageToJpeg(image)); final String baseUrl = OPRConstants.getBaseUrl(app); // all these should be constant @@ -146,6 +152,7 @@ public class UploadPhotosAsyncTask extends AsyncTask { } catch (FailedVerificationException e) { LOG.error(e); checkTokenAndShowScreen(); + } if (res != 200) { //image was uploaded but not added to blockchain @@ -159,10 +166,12 @@ public class UploadPhotosAsyncTask extends AsyncTask { if (activity != null) { MenuBuilder.execute(new GetImageCardsTask(activity, latLon, params, imageCardListener)); } + success = true; } } else { checkTokenAndShowScreen(); } + return success; } //This method runs on non main thread From a70ad01304e2440fd1c8bfca426927afbd528e0e Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Mon, 1 Feb 2021 04:05:51 +0200 Subject: [PATCH 2/2] Minor fixes --- .../UploadPhotoProgressBottomSheet.java | 32 +++++++++---------- .../mapcontextmenu/UploadPhotosAsyncTask.java | 7 ++-- 2 files changed, 18 insertions(+), 21 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/dialogs/UploadPhotoProgressBottomSheet.java b/OsmAnd/src/net/osmand/plus/dialogs/UploadPhotoProgressBottomSheet.java index 46483ffc9b..05e4bcc468 100644 --- a/OsmAnd/src/net/osmand/plus/dialogs/UploadPhotoProgressBottomSheet.java +++ b/OsmAnd/src/net/osmand/plus/dialogs/UploadPhotoProgressBottomSheet.java @@ -33,6 +33,7 @@ public class UploadPhotoProgressBottomSheet extends MenuBottomSheetDialogFragmen private int progress; private int maxProgress; + private boolean uploadingFinished; @Override public void createMenuItems(Bundle savedInstanceState) { @@ -44,17 +45,12 @@ public class UploadPhotoProgressBottomSheet extends MenuBottomSheetDialogFragmen uploadedPhotosCounter = view.findViewById(R.id.description); progressBar = view.findViewById(R.id.progress_bar); progressBar.setMax(maxProgress); - String titleProgress = getString(progress == maxProgress? R.string.upload_photo_completed: R.string.upload_photo); - String descriptionProgress; - if (progress == maxProgress) { - descriptionProgress = getString(R.string.uploaded_count, progress, maxProgress); - } else { - descriptionProgress = getString(R.string.uploading_count, progress, maxProgress); - } + + int descriptionId = uploadingFinished ? R.string.uploaded_count : R.string.uploading_count; BaseBottomSheetItem descriptionItem = new BottomSheetItemWithDescription.Builder() - .setDescription(descriptionProgress) - .setTitle(titleProgress) + .setDescription(getString(descriptionId, progress, maxProgress)) + .setTitle(getString(uploadingFinished ? R.string.upload_photo_completed : R.string.upload_photo)) .setCustomView(view) .create(); items.add(descriptionItem); @@ -74,9 +70,10 @@ public class UploadPhotoProgressBottomSheet extends MenuBottomSheetDialogFragmen } private void updateProgress(int progress) { + int descriptionId = uploadingFinished ? R.string.uploaded_count : R.string.uploading_count; progressBar.setProgress(progress); - uploadedPhotosCounter.setText((getString(R.string.uploading_count, progress, maxProgress))); - uploadedPhotosTitle.setText(progress == maxProgress ? R.string.upload_photo_completed : R.string.upload_photo); + uploadedPhotosCounter.setText(getString(descriptionId, progress, maxProgress)); + uploadedPhotosTitle.setText(uploadingFinished ? R.string.upload_photo_completed : R.string.upload_photo); } @Override @@ -87,11 +84,9 @@ public class UploadPhotoProgressBottomSheet extends MenuBottomSheetDialogFragmen @Override public void uploadPhotosFinished() { - if (progress == maxProgress) { - uploadedPhotosCounter.setText((getString(R.string.uploaded_count, progress, maxProgress))); - setDismissButtonTextId(R.string.shared_string_close); - UiUtilities.setupDialogButton(nightMode, dismissButton, getDismissButtonType(), getDismissButtonTextId()); - } + uploadingFinished = true; + updateProgress(progress); + UiUtilities.setupDialogButton(nightMode, dismissButton, getDismissButtonType(), getDismissButtonTextId()); } @Override @@ -103,6 +98,11 @@ public class UploadPhotoProgressBottomSheet extends MenuBottomSheetDialogFragmen } } + @Override + protected int getDismissButtonTextId() { + return uploadingFinished ? R.string.shared_string_close : R.string.shared_string_cancel; + } + public static UploadPhotosListener showInstance(@NonNull FragmentManager fragmentManager, int maxProgress, OnDismissListener listener) { UploadPhotoProgressBottomSheet fragment = new UploadPhotoProgressBottomSheet(); fragment.setRetainInstance(true); diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/UploadPhotosAsyncTask.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/UploadPhotosAsyncTask.java index 24d70a83dc..afe492af6f 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/UploadPhotosAsyncTask.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/UploadPhotosAsyncTask.java @@ -128,7 +128,7 @@ public class UploadPhotosAsyncTask extends AsyncTask { private boolean uploadImageToPlace(InputStream image) { boolean success = false; InputStream serverData = new ByteArrayInputStream(compressImageToJpeg(image)); - final String baseUrl = OPRConstants.getBaseUrl(app); + String baseUrl = OPRConstants.getBaseUrl(app); // all these should be constant String url = baseUrl + "api/ipfs/image"; String response = NetworkUtils.sendPostDataRequest(url, "file", "compressed.jpeg", serverData); @@ -146,18 +146,16 @@ public class UploadPhotosAsyncTask extends AsyncTask { response, error); if (res != 200) { app.showToastMessage(error.toString()); - } else { - //ok, continue } } catch (FailedVerificationException e) { LOG.error(e); checkTokenAndShowScreen(); - } if (res != 200) { //image was uploaded but not added to blockchain checkTokenAndShowScreen(); } else { + success = true; String str = app.getString(R.string.successfully_uploaded_pattern, 1, 1); app.showToastMessage(str); //refresh the image @@ -166,7 +164,6 @@ public class UploadPhotosAsyncTask extends AsyncTask { if (activity != null) { MenuBuilder.execute(new GetImageCardsTask(activity, latLon, params, imageCardListener)); } - success = true; } } else { checkTokenAndShowScreen();