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