Show shimmer animation while fetching search results
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -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> {
|
||||||
|
|||||||
Reference in New Issue
Block a user