Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixed Grey empty screen at Upload wizard #5356

Merged
merged 8 commits into from
Nov 2, 2023
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions .idea/codeStyles/Project.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

32 changes: 28 additions & 4 deletions app/src/main/java/fr/free/nrw/commons/upload/UploadActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import static fr.free.nrw.commons.contributions.ContributionController.ACTION_INTERNAL_UPLOADS;
import static fr.free.nrw.commons.utils.PermissionUtils.PERMISSIONS_STORAGE;
import static fr.free.nrw.commons.utils.PermissionUtils.checkPermissionsAndPerformAction;
import static fr.free.nrw.commons.wikidata.WikidataConstants.PLACE_OBJECT;
import static fr.free.nrw.commons.wikidata.WikidataConstants.SELECTED_NEARBY_PLACE;
import static fr.free.nrw.commons.wikidata.WikidataConstants.SELECTED_NEARBY_PLACE_CATEGORY;
Expand All @@ -19,11 +20,13 @@
import android.os.Bundle;
import android.provider.Settings;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.View;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.cardview.widget.CardView;
import androidx.fragment.app.Fragment;
Expand Down Expand Up @@ -143,6 +146,7 @@ public class UploadActivity extends BaseActivity implements UploadContract.View,
*/
public static HashMap<Place,Boolean> nearbyPopupAnswers;

public boolean hasAllPermissions = true;
kanahia1 marked this conversation as resolved.
Show resolved Hide resolved
@SuppressLint("CheckResult")
@Override
protected void onCreate(Bundle savedInstanceState) {
Expand All @@ -166,7 +170,6 @@ protected void onCreate(Bundle savedInstanceState) {
}
locationManager.requestLocationUpdatesFromProvider(LocationManager.GPS_PROVIDER);
locationManager.requestLocationUpdatesFromProvider(LocationManager.NETWORK_PROVIDER);
checkStoragePermissions();
}

private void init() {
Expand Down Expand Up @@ -224,6 +227,11 @@ public boolean isLoggedIn() {
return sessionManager.isUserLoggedIn();
}

@Override
protected void onStart() {
super.onStart();
checkStoragePermissions();
}
nicolas-raoul marked this conversation as resolved.
Show resolved Hide resolved
@Override
protected void onResume() {
super.onResume();
Expand All @@ -232,6 +240,7 @@ protected void onResume() {
askUserToLogIn();
}
checkBlockStatus();
checkStoragePermissions();
}

/**
Expand All @@ -252,13 +261,28 @@ protected void checkBlockStatus() {
true)));
}

private void checkStoragePermissions() {
public void checkStoragePermissions() {
final boolean hasAllPermissions = PermissionUtils.hasPermission(this, PERMISSIONS_STORAGE);
if (hasAllPermissions) {
receiveSharedItems();
} else if (VERSION.SDK_INT >= VERSION_CODES.M) {
requestPermissions(PERMISSIONS_STORAGE, RequestCodes.STORAGE);
cvContainerTopCard.setVisibility(View.VISIBLE);
} else{
nicolas-raoul marked this conversation as resolved.
Show resolved Hide resolved
cvContainerTopCard.setVisibility(View.INVISIBLE);
if(this.hasAllPermissions){
checkPermissionsAndPerformAction(this,
() -> {
cvContainerTopCard.setVisibility(View.VISIBLE);
this.receiveSharedItems();
},() -> {
this.hasAllPermissions = true;
this.checkStoragePermissions();
},
R.string.storage_permission_title,
R.string.write_storage_permission_rationale_for_image_share,
PERMISSIONS_STORAGE);
}
}
this.hasAllPermissions = hasAllPermissions ;
}

@Override
Expand Down
49 changes: 38 additions & 11 deletions app/src/main/java/fr/free/nrw/commons/utils/PermissionUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import android.net.Uri;
import android.os.Build;
import android.provider.Settings;
import android.widget.Toast;
import androidx.annotation.StringRes;
import androidx.core.content.ContextCompat;
import com.karumi.dexter.Dexter;
Expand All @@ -16,6 +17,7 @@
import com.karumi.dexter.listener.multi.MultiplePermissionsListener;
import fr.free.nrw.commons.CommonsApplication;
import fr.free.nrw.commons.R;
import fr.free.nrw.commons.upload.UploadActivity;
import java.util.List;


Expand Down Expand Up @@ -80,14 +82,14 @@ public static boolean hasPermission(Activity activity, String permissions[]) {
* <p>
* Sample usage:
* <p>
* PermissionUtils.checkPermissionsAndPerformAction(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE,
* () -> initiateCameraUpload(activity), R.string.storage_permission_title,
* R.string.write_storage_permission_rationale);
* PermissionUtils.checkPermissionsAndPerformAction(activity,
* Manifest.permission.WRITE_EXTERNAL_STORAGE, () -> initiateCameraUpload(activity),
* R.string.storage_permission_title, R.string.write_storage_permission_rationale);
* <p>
* If you don't want the permission rationale to be shown then use:
* <p>
* PermissionUtils.checkPermissionsAndPerformAction(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE,
* () -> initiateCameraUpload(activity), - 1, -1);
* PermissionUtils.checkPermissionsAndPerformAction(activity,
* Manifest.permission.WRITE_EXTERNAL_STORAGE, () -> initiateCameraUpload(activity), - 1, -1);
*
* @param activity activity requesting permissions
* @param permissions the permissions array being requests
Expand All @@ -110,8 +112,9 @@ public static void checkPermissionsAndPerformAction(Activity activity,
* <p>
* Sample usage:
* <p>
* PermissionUtils.checkPermissionsAndPerformAction(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE,
* () -> initiateCameraUpload(activity), () -> showMessage(), R.string.storage_permission_title,
* PermissionUtils.checkPermissionsAndPerformAction(activity,
* Manifest.permission.WRITE_EXTERNAL_STORAGE, () -> initiateCameraUpload(activity), () ->
* showMessage(), R.string.storage_permission_title,
* R.string.write_storage_permission_rationale);
*
* @param activity activity requesting permissions
Expand All @@ -138,8 +141,15 @@ public void onPermissionsChecked(MultiplePermissionsReport report) {
// permission is denied permanently, we will show user a dialog message.
DialogUtil.showAlertDialog(activity, activity.getString(rationaleTitle),
activity.getString(rationaleMessage),
activity.getString(R.string.navigation_item_settings), null,
() -> askUserToManuallyEnablePermissionFromSettings(activity), null);
activity.getString(R.string.navigation_item_settings),
null,
() -> {
askUserToManuallyEnablePermissionFromSettings(activity);
if (activity instanceof UploadActivity) {
((UploadActivity) activity).hasAllPermissions = true;
}
}, null, null,
!(activity instanceof UploadActivity));
} else {
if (null != onPermissionDenied) {
onPermissionDenied.run();
Expand All @@ -158,8 +168,25 @@ public void onPermissionRationaleShouldBeShown(List<PermissionRequest> permissio
activity.getString(rationaleMessage),
activity.getString(android.R.string.ok),
activity.getString(android.R.string.cancel),
token::continuePermissionRequest,
token::cancelPermissionRequest,
() -> {

if (activity instanceof UploadActivity) {
((UploadActivity) activity).hasAllPermissions = true;
}
token.continuePermissionRequest();
}
,
() -> {
Toast.makeText(activity.getApplicationContext(),
R.string.permissions_are_required_for_functionality,
Toast.LENGTH_LONG)
.show();
token.cancelPermissionRequest();
if (activity instanceof UploadActivity) {
activity.finish();
}
}
,
null,
false);
}
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -777,6 +777,7 @@ Upload your first media by tapping on the add button.</string>
<string name="similar_coordinate_description_auto_set">The coordinates are not the exact coordinates, but the person who uploaded this picture thinks they are close enough.</string>
<string name="storage_permissions_denied">Storage Permissions Denied</string>
<string name="unable_to_share_upload_item">Unable to share this item</string>
<string name="permissions_are_required_for_functionality">Permissions are required for functionality</string>
<plurals name="custom_picker_images_selected_title_appendix">
<item quantity="one">%d image selected</item>
<item quantity="other">%d images selected</item>
Expand Down