Fix categories searching problem of photo uploading

This commit is contained in:
Zihan Pan 2024-10-20 19:57:23 +11:00
parent 63f1ed8a2d
commit 1e31497f10

View file

@ -1,5 +1,6 @@
package fr.free.nrw.commons.upload.categories
import android.annotation.SuppressLint
import android.text.TextUtils
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
@ -27,12 +28,12 @@ import javax.inject.Singleton
*/
@Singleton
class CategoriesPresenter
@Inject
constructor(
@Inject
constructor(
private val repository: UploadRepository,
@param:Named(CommonsApplicationModule.IO_THREAD) private val ioScheduler: Scheduler,
@param:Named(CommonsApplicationModule.MAIN_THREAD) private val mainThreadScheduler: Scheduler,
) : CategoriesContract.UserActionListener {
) : CategoriesContract.UserActionListener {
companion object {
private val DUMMY: CategoriesContract.View = proxy()
}
@ -53,6 +54,7 @@ class CategoriesPresenter
@Inject
lateinit var categoryEditHelper: CategoryEditHelper
@SuppressLint("TimberArgCount")
override fun onAttachView(view: CategoriesContract.View) {
this.view = view
compositeDisposable.add(
@ -68,7 +70,7 @@ class CategoriesPresenter
{
setCategoryListValue(it)
view.showProgress(false)
if (it.isEmpty()) {
if (it.isEmpty() && !isInitialLoad) {
view.showError(R.string.no_categories_found)
}
},
@ -79,8 +81,13 @@ class CategoriesPresenter
},
),
)
//isInitialLoad = false
}
private var isInitialLoad = true //avoid initial empty content of edittext lead to showError
/**
* If media is null : Fetches categories from server according to the term
* Else : Fetches existing categories by their name, fetches categories from server according
@ -123,6 +130,7 @@ class CategoriesPresenter
override fun onDetachView() {
view = DUMMY
compositeDisposable.clear()
isInitialLoad = true
}
/**
@ -130,6 +138,13 @@ class CategoriesPresenter
* @param query
*/
override fun searchForCategories(query: String) {
if (query.isBlank()) {
if (!isInitialLoad) {
view.showError(R.string.no_categories_found)
}
return
}
isInitialLoad = false
searchTerms.onNext(query)
}
@ -187,7 +202,7 @@ class CategoriesPresenter
{
setCategoryListValue(it)
view.showProgress(false)
if (it.isEmpty()) {
if (it.isEmpty() && !isInitialLoad) {
view.showError(R.string.no_categories_found)
}
},
@ -311,4 +326,4 @@ class CategoriesPresenter
.subscribe(::selectNewCategories),
)
}
}
}