Toggle photo picker switch behaviour and tweak phrases (#5250)

* photo picker: toggle behaviour of switch and adjust phrasing for better UX

The enable state used to trigger the GET_CONTENT intent. Alter the flow
such that the GET_CONTENT intent is triggered when switch is disabled.
Adjust default value and other parts of code naming to reflect this.

The existing phrasing had a lot of tech jargon in it which could
result in the non-technical users being confused. Tweak the phrasing
to avoid such phrases.

The documentation in the website could also use some follow up
improvements.

* Adjust strings to clearly convey that location loss is a "risk"
This commit is contained in:
Kaartic Sivaraam 2023-07-25 14:18:53 +05:30 committed by GitHub
parent 8a9aa962bc
commit a1b6973614
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 25 additions and 24 deletions

View file

@ -79,8 +79,8 @@ public class ContributionController {
*/
private void initiateGalleryUpload(final Activity activity, final boolean allowMultipleUploads) {
setPickerConfiguration(activity, allowMultipleUploads);
boolean isGetContentPickerPreferred = defaultKvStore.getBoolean("getContentPhotoPickerPref");
FilePicker.openGallery(activity, 0, isGetContentPickerPreferred);
boolean openDocumentIntentPreferred = defaultKvStore.getBoolean("openDocumentPhotoPickerPref");
FilePicker.openGallery(activity, 0, openDocumentIntentPreferred);
}
/**

View file

@ -47,10 +47,10 @@ public class FilePicker implements Constants {
}
private static Intent createGalleryIntent(@NonNull Context context, int type,
boolean isGetContentPickerPreferred) {
boolean openDocumentIntentPreferred) {
// storing picked image type to shared preferences
storeType(context, type);
return plainGalleryPickerIntent(isGetContentPickerPreferred)
return plainGalleryPickerIntent(openDocumentIntentPreferred)
.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, configuration(context).allowsMultiplePickingInGallery());
}
@ -106,8 +106,8 @@ public class FilePicker implements Constants {
*
* @param type Custom type of your choice, which will be returned with the images
*/
public static void openGallery(Activity activity, int type, boolean isGetContentPickerPreferred) {
Intent intent = createGalleryIntent(activity, type, isGetContentPickerPreferred);
public static void openGallery(Activity activity, int type, boolean openDocumentIntentPreferred) {
Intent intent = createGalleryIntent(activity, type, openDocumentIntentPreferred);
activity.startActivityForResult(intent, RequestCodes.PICK_PICTURE_FROM_GALLERY);
}
@ -201,8 +201,8 @@ public class FilePicker implements Constants {
return data == null || (data.getData() == null && data.getClipData() == null);
}
private static Intent plainGalleryPickerIntent(boolean isGetContentPickerPreferred) {
/**
private static Intent plainGalleryPickerIntent(boolean openDocumentIntentPreferred) {
/*
* Asking for ACCESS_MEDIA_LOCATION at runtime solved the location-loss issue
* in the custom selector in Contributions fragment.
* Detailed discussion: https://github.com/commons-app/apps-android-commons/issues/5015
@ -217,8 +217,8 @@ public class FilePicker implements Constants {
* Reported on the Google Issue Tracker: https://issuetracker.google.com/issues/243294058
* Status: Won't fix (Intended behaviour)
*
* Switched intent from ACTION_GET_CONTENT to ACTION_OPEN_DOCUMENT
* (based on user's preference) as:
* Switched intent from ACTION_GET_CONTENT to ACTION_OPEN_DOCUMENT (by default; can
* be changed through the Setting page) as:
*
* ACTION_GET_CONTENT opens the 'best application' for choosing that kind of data
* The best application is the new Photo Picker that redacts the location tags
@ -226,14 +226,15 @@ public class FilePicker implements Constants {
* ACTION_OPEN_DOCUMENT, however, displays the various DocumentsProvider instances
* installed on the device, letting the user interactively navigate through them.
*
* So, this allows us to use the traditional file picker that does not redact location tags from EXIF.
* So, this allows us to use the traditional file picker that does not redact location tags
* from EXIF.
*
*/
Intent intent;
if (isGetContentPickerPreferred) {
intent = new Intent(Intent.ACTION_GET_CONTENT);
} else {
if (openDocumentIntentPreferred) {
intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
} else {
intent = new Intent(Intent.ACTION_GET_CONTENT);
}
intent.setType("image/*");
return intent;

View file

@ -153,10 +153,10 @@ public class SettingsFragment extends PreferenceFragmentCompat {
return true;
});
Preference getContentPickerPreference = findPreference("getContentPhotoPickerPref");
getContentPickerPreference.setOnPreferenceChangeListener(
Preference documentBasedPickerPreference = findPreference("openDocumentPhotoPickerPref");
documentBasedPickerPreference.setOnPreferenceChangeListener(
(preference, newValue) -> {
boolean isGetContentPickerTurnedOn = (boolean) newValue;
boolean isGetContentPickerTurnedOn = !(boolean) newValue;
if (isGetContentPickerTurnedOn) {
showLocationLossWarning();
}