diff --git a/app/src/main/java/fr/free/nrw/commons/upload/categories/CategoriesContract.kt b/app/src/main/java/fr/free/nrw/commons/upload/categories/CategoriesContract.kt index 183c7cd93..29e5ba90b 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/categories/CategoriesContract.kt +++ b/app/src/main/java/fr/free/nrw/commons/upload/categories/CategoriesContract.kt @@ -17,6 +17,11 @@ interface CategoriesContract { fun showError(stringResourceId: Int) + /** + * Show a cancelable AlertDialog with a given message. + */ + fun showErrorDialog(message: String) + fun setCategories(categories: List?) fun goToNextScreen() diff --git a/app/src/main/java/fr/free/nrw/commons/upload/categories/CategoriesPresenter.kt b/app/src/main/java/fr/free/nrw/commons/upload/categories/CategoriesPresenter.kt index dbeeae6ff..a7c103a66 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/categories/CategoriesPresenter.kt +++ b/app/src/main/java/fr/free/nrw/commons/upload/categories/CategoriesPresenter.kt @@ -12,6 +12,7 @@ import fr.free.nrw.commons.di.CommonsApplicationModule.Companion.IO_THREAD import fr.free.nrw.commons.di.CommonsApplicationModule.Companion.MAIN_THREAD import fr.free.nrw.commons.repository.UploadRepository import fr.free.nrw.commons.upload.depicts.proxy +import fr.free.nrw.commons.wikidata.mwapi.MwIOException import io.reactivex.Observable import io.reactivex.Scheduler import io.reactivex.android.schedulers.AndroidSchedulers @@ -75,7 +76,12 @@ class CategoriesPresenter }, { t: Throwable? -> view.showProgress(false) - view.showError(R.string.no_categories_found) + view.showError(R.string.error_loading_categories) + val mwException = t as? MwIOException + view.showErrorDialog( + if (mwException == null) "" + else "\n${mwException.error.title} / ${mwException.error.details}" + ) Timber.e(t) }, ), diff --git a/app/src/main/java/fr/free/nrw/commons/upload/categories/UploadCategoriesFragment.kt b/app/src/main/java/fr/free/nrw/commons/upload/categories/UploadCategoriesFragment.kt index ee6af7bb6..ef4521431 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/categories/UploadCategoriesFragment.kt +++ b/app/src/main/java/fr/free/nrw/commons/upload/categories/UploadCategoriesFragment.kt @@ -10,6 +10,7 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Toast +import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity import androidx.recyclerview.widget.LinearLayoutManager import com.jakewharton.rxbinding2.view.RxView @@ -32,7 +33,6 @@ import io.reactivex.Notification import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable import timber.log.Timber -import java.util.Objects import java.util.concurrent.TimeUnit import javax.inject.Inject @@ -199,6 +199,15 @@ class UploadCategoriesFragment : UploadBaseFragment(), CategoriesContract.View { binding?.tilContainerSearch?.error = getString(stringResourceId) } + override fun showErrorDialog(message: String) { + AlertDialog + .Builder(requireContext()) + .setMessage(getString(R.string.error_loading_categories) + "\n" + message) + .setCancelable(false) + .setNegativeButton(R.string.ok){_,_ -> } + .show() + } + override fun setCategories(categories: List?) { if (adapter == null) { Timber.e("Adapter is null in setCategories")