Show shimmer animation while fetching search results

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2023-04-24 13:10:44 +05:30
parent 2e024150de
commit e8fcb85727

View File

@@ -46,6 +46,7 @@ import com.aurora.store.view.custom.recycler.EndlessRecyclerOnScrollListener
import com.aurora.store.view.epoxy.views.AppProgressViewModel_ import com.aurora.store.view.epoxy.views.AppProgressViewModel_
import com.aurora.store.view.epoxy.views.app.AppListViewModel_ import com.aurora.store.view.epoxy.views.app.AppListViewModel_
import com.aurora.store.view.epoxy.views.app.NoAppViewModel_ import com.aurora.store.view.epoxy.views.app.NoAppViewModel_
import com.aurora.store.view.epoxy.views.shimmer.AppListViewShimmerModel_
import com.aurora.store.view.ui.commons.BaseActivity import com.aurora.store.view.ui.commons.BaseActivity
import com.aurora.store.view.ui.downloads.DownloadActivity import com.aurora.store.view.ui.downloads.DownloadActivity
import com.aurora.store.view.ui.sheets.FilterSheet import com.aurora.store.view.ui.sheets.FilterSheet
@@ -67,6 +68,7 @@ class SearchResultsActivity : BaseActivity(), OnSharedPreferenceChangeListener {
var query: String? = null var query: String? = null
var searchBundle: SearchBundle = SearchBundle() var searchBundle: SearchBundle = SearchBundle()
private var shimmerAnimationVisible = false
override fun onConnected() { override fun onConnected() {
hideNetworkConnectivitySheet() hideNetworkConnectivitySheet()
@@ -91,16 +93,21 @@ class SearchResultsActivity : BaseActivity(), OnSharedPreferenceChangeListener {
setContentView(B.root) setContentView(B.root)
VM.liveData.observe(this, {
searchBundle = it
updateController(searchBundle)
})
attachToolbar() attachToolbar()
attachSearch() attachSearch()
attachRecycler() attachRecycler()
attachFilter() attachFilter()
VM.liveData.observe(this) {
if (shimmerAnimationVisible) {
endlessRecyclerOnScrollListener.resetPageCount()
B.recycler.clear()
shimmerAnimationVisible = false
}
searchBundle = it
updateController(searchBundle)
}
query = intent.getStringExtra(Constants.STRING_EXTRA) query = intent.getStringExtra(Constants.STRING_EXTRA)
query?.let { query?.let {
updateQuery(it) updateQuery(it)
@@ -165,7 +172,17 @@ class SearchResultsActivity : BaseActivity(), OnSharedPreferenceChangeListener {
B.recycler.addOnScrollListener(endlessRecyclerOnScrollListener) B.recycler.addOnScrollListener(endlessRecyclerOnScrollListener)
} }
private fun updateController(searchBundle: SearchBundle) { private fun updateController(searchBundle: SearchBundle?) {
if (searchBundle == null) {
shimmerAnimationVisible = true
B.recycler.withModels {
for (i in 1..10) {
add(AppListViewShimmerModel_().id(i))
}
}
return
}
val filteredAppList = filter(searchBundle.appList) val filteredAppList = filter(searchBundle.appList)
if (filteredAppList.isEmpty()) { if (filteredAppList.isEmpty()) {
@@ -257,9 +274,8 @@ class SearchResultsActivity : BaseActivity(), OnSharedPreferenceChangeListener {
} }
private fun queryViewModel(query: String) { private fun queryViewModel(query: String) {
updateController(null)
VM.observeSearchResults(query) VM.observeSearchResults(query)
endlessRecyclerOnScrollListener.resetPageCount()
B.recycler.clear()
} }
private fun filter(appList: MutableList<App>): List<App> { private fun filter(appList: MutableList<App>): List<App> {