From 5ab72fd1a9bdd1742fd9a66410ac8d58a0fa31a5 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Thu, 28 May 2020 16:52:36 -0300 Subject: [PATCH] Ask for permission before launching avatar sheet. --- .../details/AddGroupDetailsFragment.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/creategroup/details/AddGroupDetailsFragment.java b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/creategroup/details/AddGroupDetailsFragment.java index 68eada90f80..f6e6a6d6370 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/creategroup/details/AddGroupDetailsFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/creategroup/details/AddGroupDetailsFragment.java @@ -1,5 +1,6 @@ package org.thoughtcrime.securesms.groups.ui.creategroup.details; +import android.Manifest; import android.app.Activity; import android.content.Context; import android.content.Intent; @@ -38,6 +39,7 @@ import org.thoughtcrime.securesms.mediasend.Media; import org.thoughtcrime.securesms.mms.DecryptableStreamUriLoader; import org.thoughtcrime.securesms.mms.GlideApp; +import org.thoughtcrime.securesms.permissions.Permissions; import org.thoughtcrime.securesms.profiles.AvatarHelper; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientId; @@ -109,8 +111,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat initializeViewModel(); - avatar.setOnClickListener(v -> AvatarSelectionBottomSheetDialogFragment.create(viewModel.hasAvatar(), true, REQUEST_CODE_AVATAR, true) - .show(getChildFragmentManager(), "BOTTOM")); + avatar.setOnClickListener(v -> showAvatarSelectionBottomSheet()); members.setRecipientClickListener(this::handleRecipientClick); name.addTextChangedListener(new AfterTextChanged(editable -> viewModel.setName(editable.toString()))); toolbar.setNavigationOnClickListener(unused -> callback.onNavigationButtonPressed()); @@ -242,6 +243,15 @@ private void setCreateEnabled(boolean isEnabled, boolean animate) { .alpha(isEnabled ? 1f : 0.5f); } + private void showAvatarSelectionBottomSheet() { + Permissions.with(this) + .request(Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE) + .ifNecessary() + .onAnyResult(() -> AvatarSelectionBottomSheetDialogFragment.create(viewModel.hasAvatar(), true, REQUEST_CODE_AVATAR, true) + .show(getChildFragmentManager(), "BOTTOM")) + .execute(); + } + public interface Callback { void onGroupCreated(@NonNull RecipientId recipientId, long threadId); void onNavigationButtonPressed();