Fix: app crash

This commit is contained in:
sonalyadav 2025-05-27 10:22:44 +05:30
parent 93ffe90463
commit d1ae192645
2 changed files with 13 additions and 1 deletions

View file

@ -170,6 +170,9 @@ class UploadActivity : BaseActivity(), UploadContract.View, UploadBaseFragment.C
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
// Ensure basicKvStoreFactory is always initialized before use
presenter?.setupBasicKvStoreFactory { BasicKvStore(this@UploadActivity, it) }
_binding = ActivityUploadBinding.inflate(layoutInflater) _binding = ActivityUploadBinding.inflate(layoutInflater)
setContentView(binding.root) setContentView(binding.root)
@ -884,7 +887,6 @@ class UploadActivity : BaseActivity(), UploadContract.View, UploadBaseFragment.C
// Save the user's choice to not show the dialog again // Save the user's choice to not show the dialog again
defaultKvStore.putBoolean("hasAlreadyLaunchedCategoriesDialog", true) defaultKvStore.putBoolean("hasAlreadyLaunchedCategoriesDialog", true)
} }
presenter!!.setupBasicKvStoreFactory { BasicKvStore(this@UploadActivity, it) }
presenter!!.checkImageQuality(0) presenter!!.checkImageQuality(0)
UploadMediaPresenter.isCategoriesDialogShowing = false UploadMediaPresenter.isCategoriesDialogShowing = false
} }

View file

@ -135,12 +135,22 @@ class UploadPresenter @Inject internal constructor(
return basicKvStoreFactory ?: throw IllegalStateException("basicKvStoreFactory has not been initialized") return basicKvStoreFactory ?: throw IllegalStateException("basicKvStoreFactory has not been initialized")
} }
private fun requireFactoryInitialized() {
val field = this::class.java.getDeclaredField("basicKvStoreFactory")
field.isAccessible = true
val value = field.get(this)
if (value == null) {
throw IllegalStateException("basicKvStoreFactory must be initialized before use. Please call setupBasicKvStoreFactory() before using presenter methods that require it.")
}
}
/** /**
* Calls checkImageQuality of UploadMediaPresenter to check image quality of next image * Calls checkImageQuality of UploadMediaPresenter to check image quality of next image
* *
* @param uploadItemIndex Index of next image, whose quality is to be checked * @param uploadItemIndex Index of next image, whose quality is to be checked
*/ */
override fun checkImageQuality(uploadItemIndex: Int) { override fun checkImageQuality(uploadItemIndex: Int) {
requireFactoryInitialized()
repository.getUploadItem(uploadItemIndex)?.let { repository.getUploadItem(uploadItemIndex)?.let {
presenter.setupBasicKvStoreFactory(getBasicKvStoreFactory()) presenter.setupBasicKvStoreFactory(getBasicKvStoreFactory())
presenter.checkImageQuality(it, uploadItemIndex) presenter.checkImageQuality(it, uploadItemIndex)