Use image picker to pick images for upload (#2278)

* Use image picker to pick images for upload

* Consolidate storage permissions in Upload activity

* With proper request codes for image upload

* Use constants for upload limits

* Check for request code while handling requests

* Let fragment initiate the camera/gallery instead of activity

* Delete unused external storage utils
This commit is contained in:
Vivek Maskara 2019-01-08 21:56:46 +05:30 committed by Josephine Lim
parent b05b302e65
commit 164ef9bcac
17 changed files with 339 additions and 637 deletions

View file

@ -2,7 +2,6 @@ package fr.free.nrw.commons.bookmarks.locations;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
@ -15,6 +14,8 @@ import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.esafirm.imagepicker.features.ImagePicker;
import com.esafirm.imagepicker.model.Image;
import com.pedrogomez.renderers.RVRendererAdapter;
import java.util.ArrayList;
@ -30,12 +31,8 @@ import fr.free.nrw.commons.R;
import fr.free.nrw.commons.contributions.ContributionController;
import fr.free.nrw.commons.nearby.NearbyAdapterFactory;
import fr.free.nrw.commons.nearby.Place;
import timber.log.Timber;
import static android.app.Activity.RESULT_OK;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
import static fr.free.nrw.commons.wikidata.WikidataConstants.WIKIDATA_ENTITY_ID_PREF;
import static fr.free.nrw.commons.wikidata.WikidataConstants.WIKIDATA_ITEM_LOCATION;
import fr.free.nrw.commons.utils.ImageUtils;
import fr.free.nrw.commons.utils.IntentUtils;
public class BookmarkLocationsFragment extends DaggerFragment {
@ -44,12 +41,11 @@ public class BookmarkLocationsFragment extends DaggerFragment {
@BindView(R.id.listView) RecyclerView recyclerView;
@BindView(R.id.parentLayout) RelativeLayout parentLayout;
@Inject
BookmarkLocationsController controller;
@Inject BookmarkLocationsController controller;
@Inject @Named("direct_nearby_upload_prefs") SharedPreferences directPrefs;
@Inject @Named("default_preferences") SharedPreferences defaultPrefs;
private NearbyAdapterFactory adapterFactory;
private ContributionController contributionController;
@Inject ContributionController contributionController;
/**
* Create an instance of the fragment with the right bundle parameters
@ -67,7 +63,6 @@ public class BookmarkLocationsFragment extends DaggerFragment {
) {
View v = inflater.inflate(R.layout.fragment_bookmarks_locations, container, false);
ButterKnife.bind(this, v);
contributionController = new ContributionController(this, defaultPrefs);
adapterFactory = new NearbyAdapterFactory(this, contributionController);
return v;
}
@ -103,23 +98,12 @@ public class BookmarkLocationsFragment extends DaggerFragment {
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
Timber.d("OnActivityResult() parameters: Req code: %d Result code: %d Data: %s",
requestCode, resultCode, data);
String wikidataEntityId = directPrefs.getString(WIKIDATA_ENTITY_ID_PREF, null);
String wikidataItemLocation = directPrefs.getString(WIKIDATA_ITEM_LOCATION, null);
if (requestCode == ContributionController.SELECT_FROM_CAMERA) {
// If coming from camera, pass null as uri. Because camera photos get saved to a
// fixed directory
contributionController.handleImagePicked(requestCode, null, true, wikidataEntityId, wikidataItemLocation);
} else {
contributionController.handleImagePicked(requestCode, data.getData(), true, wikidataEntityId, wikidataItemLocation);
}
if (IntentUtils.shouldBookmarksHandle(requestCode, resultCode, data)) {
List<Image> images = ImagePicker.getImages(data);
Intent shareIntent = contributionController.handleImagesPicked(ImageUtils.getUriListFromImages(images), requestCode);
startActivity(shareIntent);
} else {
Timber.e("OnActivityResult() parameters: Req code: %d Result code: %d Data: %s",
requestCode, resultCode, data);
super.onActivityResult(requestCode, resultCode, data);
}
}
}