mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-27 12:53:55 +01:00
fix: infinite loading progress bar after nominating for deletion
This commit is contained in:
parent
8849f8984b
commit
40c94eef2a
2 changed files with 46 additions and 35 deletions
|
|
@ -74,7 +74,6 @@ import fr.free.nrw.commons.BuildConfig
|
||||||
import fr.free.nrw.commons.CameraPosition
|
import fr.free.nrw.commons.CameraPosition
|
||||||
import fr.free.nrw.commons.CommonsApplication
|
import fr.free.nrw.commons.CommonsApplication
|
||||||
import fr.free.nrw.commons.CommonsApplication.Companion.instance
|
import fr.free.nrw.commons.CommonsApplication.Companion.instance
|
||||||
import fr.free.nrw.commons.locationpicker.LocationPicker
|
|
||||||
import fr.free.nrw.commons.Media
|
import fr.free.nrw.commons.Media
|
||||||
import fr.free.nrw.commons.MediaDataExtractor
|
import fr.free.nrw.commons.MediaDataExtractor
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
|
|
@ -102,6 +101,7 @@ import fr.free.nrw.commons.explore.depictions.WikidataItemDetailsActivity
|
||||||
import fr.free.nrw.commons.kvstore.JsonKvStore
|
import fr.free.nrw.commons.kvstore.JsonKvStore
|
||||||
import fr.free.nrw.commons.language.AppLanguageLookUpTable
|
import fr.free.nrw.commons.language.AppLanguageLookUpTable
|
||||||
import fr.free.nrw.commons.location.LocationServiceManager
|
import fr.free.nrw.commons.location.LocationServiceManager
|
||||||
|
import fr.free.nrw.commons.locationpicker.LocationPicker
|
||||||
import fr.free.nrw.commons.media.MediaDetailPagerFragment.MediaDetailProvider
|
import fr.free.nrw.commons.media.MediaDetailPagerFragment.MediaDetailProvider
|
||||||
import fr.free.nrw.commons.profile.ProfileActivity
|
import fr.free.nrw.commons.profile.ProfileActivity
|
||||||
import fr.free.nrw.commons.review.ReviewHelper
|
import fr.free.nrw.commons.review.ReviewHelper
|
||||||
|
|
@ -116,6 +116,7 @@ import fr.free.nrw.commons.utils.LangCodeUtils.getLocalizedResources
|
||||||
import fr.free.nrw.commons.utils.PermissionUtils.PERMISSIONS_STORAGE
|
import fr.free.nrw.commons.utils.PermissionUtils.PERMISSIONS_STORAGE
|
||||||
import fr.free.nrw.commons.utils.PermissionUtils.checkPermissionsAndPerformAction
|
import fr.free.nrw.commons.utils.PermissionUtils.checkPermissionsAndPerformAction
|
||||||
import fr.free.nrw.commons.utils.PermissionUtils.hasPermission
|
import fr.free.nrw.commons.utils.PermissionUtils.hasPermission
|
||||||
|
import fr.free.nrw.commons.utils.ViewUtil
|
||||||
import fr.free.nrw.commons.utils.ViewUtil.showShortToast
|
import fr.free.nrw.commons.utils.ViewUtil.showShortToast
|
||||||
import fr.free.nrw.commons.utils.ViewUtilWrapper
|
import fr.free.nrw.commons.utils.ViewUtilWrapper
|
||||||
import fr.free.nrw.commons.wikidata.mwapi.MwQueryPage.Revision
|
import fr.free.nrw.commons.wikidata.mwapi.MwQueryPage.Revision
|
||||||
|
|
@ -125,6 +126,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers
|
||||||
import io.reactivex.schedulers.Schedulers
|
import io.reactivex.schedulers.Schedulers
|
||||||
import org.apache.commons.lang3.StringUtils
|
import org.apache.commons.lang3.StringUtils
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
|
import java.lang.String.format
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
import java.util.Objects
|
import java.util.Objects
|
||||||
|
|
@ -1646,7 +1648,7 @@ class MediaDetailFragment : CommonsDaggerSupportFragment(), CategoryEditHelper.C
|
||||||
getString(R.string.cancel),
|
getString(R.string.cancel),
|
||||||
{
|
{
|
||||||
val reason: String = input.text.toString()
|
val reason: String = input.text.toString()
|
||||||
onDeleteClickeddialogtext(reason)
|
onDeleteClickedDialogText(reason)
|
||||||
},
|
},
|
||||||
{},
|
{},
|
||||||
input
|
input
|
||||||
|
|
@ -1700,26 +1702,49 @@ class MediaDetailFragment : CommonsDaggerSupportFragment(), CategoryEditHelper.C
|
||||||
resultSingle
|
resultSingle
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe { _ ->
|
.subscribe(this::handleDeletionResult, this::handleDeletionError);
|
||||||
if (applicationKvStore.getBoolean(
|
}
|
||||||
String.format(
|
|
||||||
NOMINATING_FOR_DELETION_MEDIA, media!!.imageUrl
|
/**
|
||||||
), false
|
* Disables Progress Bar and Update delete button text.
|
||||||
)
|
*/
|
||||||
) {
|
private fun disableProgressBar() {
|
||||||
applicationKvStore.remove(
|
activity?.run {
|
||||||
String.format(
|
runOnUiThread(Runnable {
|
||||||
NOMINATING_FOR_DELETION_MEDIA,
|
binding.progressBarDeletion.visibility = View.GONE
|
||||||
media!!.imageUrl
|
})
|
||||||
)
|
} ?: return // Prevent NullPointerException when fragment is not attached to activity
|
||||||
)
|
}
|
||||||
callback!!.nominatingForDeletion(index)
|
|
||||||
}
|
private fun handleDeletionResult(success: Boolean) {
|
||||||
}
|
if (success) {
|
||||||
|
binding.nominateDeletion.text = getString(R.string.nominated_for_deletion_btn)
|
||||||
|
ViewUtil.showLongSnackbar(requireView(), getString(R.string.nominated_for_deletion))
|
||||||
|
disableProgressBar()
|
||||||
|
checkAndClearDeletionFlag()
|
||||||
|
} else {
|
||||||
|
disableProgressBar()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun handleDeletionError(throwable: Throwable) {
|
||||||
|
Timber.e("Error while nominating for deletion: ${throwable.message}")
|
||||||
|
throwable.printStackTrace()
|
||||||
|
disableProgressBar()
|
||||||
|
checkAndClearDeletionFlag()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun checkAndClearDeletionFlag() {
|
||||||
|
if (applicationKvStore
|
||||||
|
.getBoolean(format(NOMINATING_FOR_DELETION_MEDIA, media!!.imageUrl), false)
|
||||||
|
) {
|
||||||
|
applicationKvStore.remove(format(NOMINATING_FOR_DELETION_MEDIA, media!!.imageUrl))
|
||||||
|
callback!!.nominatingForDeletion(index)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("CheckResult")
|
@SuppressLint("CheckResult")
|
||||||
private fun onDeleteClickeddialogtext(reason: String) {
|
private fun onDeleteClickedDialogText(reason: String) {
|
||||||
applicationKvStore.putBoolean(
|
applicationKvStore.putBoolean(
|
||||||
String.format(
|
String.format(
|
||||||
NOMINATING_FOR_DELETION_MEDIA,
|
NOMINATING_FOR_DELETION_MEDIA,
|
||||||
|
|
@ -1736,22 +1761,7 @@ class MediaDetailFragment : CommonsDaggerSupportFragment(), CategoryEditHelper.C
|
||||||
resultSingletext
|
resultSingletext
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe { _ ->
|
.subscribe(this::handleDeletionResult, this::handleDeletionError);
|
||||||
if (applicationKvStore.getBoolean(
|
|
||||||
String.format(
|
|
||||||
NOMINATING_FOR_DELETION_MEDIA, media!!.imageUrl
|
|
||||||
), false
|
|
||||||
)
|
|
||||||
) {
|
|
||||||
applicationKvStore.remove(
|
|
||||||
String.format(
|
|
||||||
NOMINATING_FOR_DELETION_MEDIA,
|
|
||||||
media!!.imageUrl
|
|
||||||
)
|
|
||||||
)
|
|
||||||
callback!!.nominatingForDeletion(index)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun onSeeMoreClicked() {
|
private fun onSeeMoreClicked() {
|
||||||
|
|
|
||||||
|
|
@ -876,4 +876,5 @@ Upload your first media by tapping on the add button.</string>
|
||||||
<string name="show_in_nearby">Show in Nearby</string>
|
<string name="show_in_nearby">Show in Nearby</string>
|
||||||
<string name="image_tag_line_created_and_uploaded_by">Created and uploaded by: %1$s</string>
|
<string name="image_tag_line_created_and_uploaded_by">Created and uploaded by: %1$s</string>
|
||||||
<string name="image_tag_line_created_by_and_uploaded_by">Created by %1$s and uploaded by %2$s</string>
|
<string name="image_tag_line_created_by_and_uploaded_by">Created by %1$s and uploaded by %2$s</string>
|
||||||
|
<string name="nominated_for_deletion_btn">Nominated for Deletion</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue