From 2c7668253e6b5814563ca11291dec8cdefd56f26 Mon Sep 17 00:00:00 2001 From: Michelle Tang Date: Tue, 3 Sep 2024 12:20:38 -0700 Subject: [PATCH] Fix missing photos in gallery. --- .../securesms/conversation/AttachmentKeyboard.java | 14 +++++++------- .../mediasend/v2/gallery/MediaGalleryFragment.kt | 12 ++++++------ .../thoughtcrime/securesms/util/StorageUtil.java | 4 +++- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/AttachmentKeyboard.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/AttachmentKeyboard.java index ace4edd330..c16ae1037d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/AttachmentKeyboard.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/AttachmentKeyboard.java @@ -118,13 +118,7 @@ public class AttachmentKeyboard extends FrameLayout implements InputAwareLayout. } public void onMediaChanged(@NonNull List media) { - if (StorageUtil.canReadAllFromMediaStore()) { - mediaList.setVisibility(VISIBLE); - mediaAdapter.setMedia(media, false); - permissionButton.setVisibility(GONE); - permissionText.setVisibility(GONE); - manageButton.setVisibility(GONE); - } else if (StorageUtil.canOnlyReadSelectedMediaStore() && media.isEmpty()) { + if (StorageUtil.canOnlyReadSelectedMediaStore() && media.isEmpty()) { mediaList.setVisibility(GONE); manageButton.setVisibility(GONE); permissionText.setVisibility(VISIBLE); @@ -142,6 +136,12 @@ public class AttachmentKeyboard extends FrameLayout implements InputAwareLayout. manageButton.setVisibility(VISIBLE); permissionText.setVisibility(GONE); permissionButton.setVisibility(GONE); + } else if (StorageUtil.canReadAnyFromMediaStore()) { + mediaList.setVisibility(VISIBLE); + mediaAdapter.setMedia(media, false); + permissionButton.setVisibility(GONE); + permissionText.setVisibility(GONE); + manageButton.setVisibility(GONE); } else { mediaList.setVisibility(GONE); manageButton.setVisibility(GONE); diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/gallery/MediaGalleryFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/gallery/MediaGalleryFragment.kt index 8eda6a04af..f44c86bc90 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/gallery/MediaGalleryFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/gallery/MediaGalleryFragment.kt @@ -181,12 +181,7 @@ class MediaGalleryFragment : Fragment(R.layout.v2_media_gallery_fragment) { } galleryItemsWithSelection.observe(viewLifecycleOwner) { - if (StorageUtil.canReadAllFromMediaStore()) { - binding.mediaGalleryMissingPermissions.visible = false - binding.mediaGalleryManageContainer.visible = false - shouldEnableScrolling = true - galleryAdapter.submitList(it) - } else if (StorageUtil.canOnlyReadSelectedMediaStore() && it.isEmpty()) { + if (StorageUtil.canOnlyReadSelectedMediaStore() && it.isEmpty()) { binding.mediaGalleryMissingPermissions.visible = true binding.mediaGalleryManageContainer.visible = false binding.mediaGalleryPermissionText.text = getString(R.string.MediaGalleryFragment__no_photos_found) @@ -200,6 +195,11 @@ class MediaGalleryFragment : Fragment(R.layout.v2_media_gallery_fragment) { binding.mediaGalleryManageButton.setOnClickListener { v -> showManageContextMenu(v, v.rootView as ViewGroup, false, false) } shouldEnableScrolling = true galleryAdapter.submitList(it) + } else if (StorageUtil.canReadAnyFromMediaStore()) { + binding.mediaGalleryMissingPermissions.visible = false + binding.mediaGalleryManageContainer.visible = false + shouldEnableScrolling = true + galleryAdapter.submitList(it) } else { binding.mediaGalleryMissingPermissions.visible = true binding.mediaGalleryManageContainer.visible = false diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/StorageUtil.java b/app/src/main/java/org/thoughtcrime/securesms/util/StorageUtil.java index 5bcdc65322..728c4a8891 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/StorageUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/StorageUtil.java @@ -145,7 +145,9 @@ public class StorageUtil { } public static boolean canOnlyReadSelectedMediaStore() { - return Build.VERSION.SDK_INT >= 34 && Permissions.hasAll(AppDependencies.getApplication(), Manifest.permission.READ_MEDIA_VISUAL_USER_SELECTED); + return Build.VERSION.SDK_INT >= 34 && + Permissions.hasAll(AppDependencies.getApplication(), Manifest.permission.READ_MEDIA_VISUAL_USER_SELECTED) && + !Permissions.hasAny(AppDependencies.getApplication(), Manifest.permission.READ_MEDIA_IMAGES, Manifest.permission.READ_MEDIA_VIDEO); } public static boolean canReadAllFromMediaStore() {