From 37e51f39e30c386bb36b0fa5690399da1f504d76 Mon Sep 17 00:00:00 2001 From: Mohit Mandalia Date: Sun, 8 Jun 2025 02:20:20 +0700 Subject: [PATCH] fix empty gallery issue --- .../java/app/grapheneos/camera/CamConfig.kt | 9 +++++++++ .../grapheneos/camera/GallerySliderAdapter.kt | 1 + .../camera/ui/activities/InAppGallery.kt | 9 +++++++++ .../camera/ui/activities/MainActivity.kt | 19 ++++++++++++++++++- 4 files changed, 37 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/app/grapheneos/camera/CamConfig.kt b/app/src/main/java/app/grapheneos/camera/CamConfig.kt index 128205f54..f289e0008 100644 --- a/app/src/main/java/app/grapheneos/camera/CamConfig.kt +++ b/app/src/main/java/app/grapheneos/camera/CamConfig.kt @@ -640,6 +640,15 @@ class CamConfig(private val mActivity: MainActivity) { lastCapturedItem = item } + fun clearLastCapturedItem() { + commonPref.edit { + remove(SettingValues.Key.LAST_CAPTURED_ITEM_TYPE) + remove(SettingValues.Key.LAST_CAPTURED_ITEM_DATE_STRING) + remove(SettingValues.Key.LAST_CAPTURED_ITEM_URI) + } + lastCapturedItem = null + } + var requireLocation: Boolean = false get() { return mActivity.settingsDialog.locToggle.isChecked diff --git a/app/src/main/java/app/grapheneos/camera/GallerySliderAdapter.kt b/app/src/main/java/app/grapheneos/camera/GallerySliderAdapter.kt index 25c8a1e62..888fbe832 100644 --- a/app/src/main/java/app/grapheneos/camera/GallerySliderAdapter.kt +++ b/app/src/main/java/app/grapheneos/camera/GallerySliderAdapter.kt @@ -119,6 +119,7 @@ class GallerySliderAdapter( gActivity.showMessage( gActivity.getString(R.string.existing_no_image) ) + gActivity.setEmptyGalleryResult() gActivity.finish() } diff --git a/app/src/main/java/app/grapheneos/camera/ui/activities/InAppGallery.kt b/app/src/main/java/app/grapheneos/camera/ui/activities/InAppGallery.kt index 01a70bf98..1baabd0fd 100644 --- a/app/src/main/java/app/grapheneos/camera/ui/activities/InAppGallery.kt +++ b/app/src/main/java/app/grapheneos/camera/ui/activities/InAppGallery.kt @@ -3,6 +3,7 @@ package app.grapheneos.camera.ui.activities import android.animation.ArgbEvaluator import android.animation.ValueAnimator import android.annotation.SuppressLint +import android.app.Activity import android.content.ActivityNotFoundException import android.content.Context import android.content.Intent @@ -84,6 +85,7 @@ class InAppGallery : AppCompatActivity() { const val INTENT_KEY_LAST_CAPTURED_ITEM = "last_captured_item" const val LAST_VIEWED_ITEM_KEY = "LAST_VIEWED_ITEM_KEY" + const val EMPTY_GALLERY = "empty_gallery" @SuppressLint("SimpleDateFormat") fun convertTime(time: Long, showTimeZone: Boolean = true): String { @@ -559,6 +561,12 @@ class InAppGallery : AppCompatActivity() { showUI() } + fun setEmptyGalleryResult() { + val resultIntent = Intent() + resultIntent.putExtra(EMPTY_GALLERY, true) + setResult(Activity.RESULT_OK, resultIntent) + } + fun asyncResultReady(items: ArrayList) { if (isDestroyed) { return @@ -566,6 +574,7 @@ class InAppGallery : AppCompatActivity() { if (items.isEmpty()) { Toast.makeText(applicationContext, R.string.empty_gallery, Toast.LENGTH_SHORT).show() + setEmptyGalleryResult() finish() return } diff --git a/app/src/main/java/app/grapheneos/camera/ui/activities/MainActivity.kt b/app/src/main/java/app/grapheneos/camera/ui/activities/MainActivity.kt index f965c0099..2d7345e8e 100644 --- a/app/src/main/java/app/grapheneos/camera/ui/activities/MainActivity.kt +++ b/app/src/main/java/app/grapheneos/camera/ui/activities/MainActivity.kt @@ -269,6 +269,19 @@ open class MainActivity : AppCompatActivity(), } } + private val galleryLauncher = registerForActivityResult( + ActivityResultContracts.StartActivityForResult() + ) { result -> + if (result.resultCode == RESULT_OK) { + val data = result.data + Log.i(TAG, "Gallery result: ${data?.getBooleanExtra(InAppGallery.EMPTY_GALLERY, false)}") + if (data?.getBooleanExtra(InAppGallery.EMPTY_GALLERY, false) == true) { + Log.i(TAG, "Gallery is empty.") + camConfig.clearLastCapturedItem() + } + } + } + // Used to request permission from the user private val requestPermissionLauncher = registerForActivityResult( RequestMultiplePermissions() @@ -421,6 +434,10 @@ open class MainActivity : AppCompatActivity(), } it.putParcelableArrayListExtra(InAppGallery.INTENT_KEY_LIST_OF_SECURE_MODE_CAPTURED_ITEMS, list) } else { + if(camConfig.lastCapturedItem == null) { + showMessage(R.string.no_image) + return + } it.putExtra(InAppGallery.INTENT_KEY_VIDEO_ONLY_MODE, requiresVideoModeOnly) } @@ -428,7 +445,7 @@ open class MainActivity : AppCompatActivity(), it.putExtra(InAppGallery.INTENT_KEY_LAST_CAPTURED_ITEM, camConfig.lastCapturedItem) } - startActivity(it) + galleryLauncher.launch(it) } }