|
@@ -55,62 +55,65 @@ class GamesFragment : Fragment() {
|
|
|
adapter = GameAdapter(requireActivity() as AppCompatActivity)
|
|
adapter = GameAdapter(requireActivity() as AppCompatActivity)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // Add swipe down to refresh gesture
|
|
|
|
|
- binding.swipeRefresh.setOnRefreshListener {
|
|
|
|
|
- gamesViewModel.reloadGames(false)
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ binding.swipeRefresh.apply {
|
|
|
|
|
+ // Add swipe down to refresh gesture
|
|
|
|
|
+ setOnRefreshListener {
|
|
|
|
|
+ gamesViewModel.reloadGames(false)
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- // Set theme color to the refresh animation's background
|
|
|
|
|
- binding.swipeRefresh.setProgressBackgroundColorSchemeColor(
|
|
|
|
|
- MaterialColors.getColor(
|
|
|
|
|
- binding.swipeRefresh,
|
|
|
|
|
- com.google.android.material.R.attr.colorPrimary
|
|
|
|
|
|
|
+ // Set theme color to the refresh animation's background
|
|
|
|
|
+ setProgressBackgroundColorSchemeColor(
|
|
|
|
|
+ MaterialColors.getColor(
|
|
|
|
|
+ binding.swipeRefresh,
|
|
|
|
|
+ com.google.android.material.R.attr.colorPrimary
|
|
|
|
|
+ )
|
|
|
)
|
|
)
|
|
|
- )
|
|
|
|
|
- binding.swipeRefresh.setColorSchemeColors(
|
|
|
|
|
- MaterialColors.getColor(
|
|
|
|
|
- binding.swipeRefresh,
|
|
|
|
|
- com.google.android.material.R.attr.colorOnPrimary
|
|
|
|
|
|
|
+ setColorSchemeColors(
|
|
|
|
|
+ MaterialColors.getColor(
|
|
|
|
|
+ binding.swipeRefresh,
|
|
|
|
|
+ com.google.android.material.R.attr.colorOnPrimary
|
|
|
|
|
+ )
|
|
|
)
|
|
)
|
|
|
- )
|
|
|
|
|
|
|
|
|
|
- // Watch for when we get updates to any of our games lists
|
|
|
|
|
- gamesViewModel.isReloading.observe(viewLifecycleOwner) { isReloading ->
|
|
|
|
|
- binding.swipeRefresh.isRefreshing = isReloading
|
|
|
|
|
- }
|
|
|
|
|
- gamesViewModel.games.observe(viewLifecycleOwner) {
|
|
|
|
|
- (binding.gridGames.adapter as GameAdapter).submitList(it)
|
|
|
|
|
- if (it.isEmpty()) {
|
|
|
|
|
- binding.noticeText.visibility = View.VISIBLE
|
|
|
|
|
- } else {
|
|
|
|
|
- binding.noticeText.visibility = View.GONE
|
|
|
|
|
|
|
+ // Make sure the loading indicator appears even if the layout is told to refresh before being fully drawn
|
|
|
|
|
+ post {
|
|
|
|
|
+ if (_binding == null) {
|
|
|
|
|
+ return@post
|
|
|
|
|
+ }
|
|
|
|
|
+ binding.swipeRefresh.isRefreshing = gamesViewModel.isReloading.value!!
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- gamesViewModel.shouldSwapData.observe(viewLifecycleOwner) { shouldSwapData ->
|
|
|
|
|
- if (shouldSwapData) {
|
|
|
|
|
- (binding.gridGames.adapter as GameAdapter).submitList(gamesViewModel.games.value!!)
|
|
|
|
|
- gamesViewModel.setShouldSwapData(false)
|
|
|
|
|
|
|
+ gamesViewModel.apply {
|
|
|
|
|
+ // Watch for when we get updates to any of our games lists
|
|
|
|
|
+ isReloading.observe(viewLifecycleOwner) { isReloading ->
|
|
|
|
|
+ binding.swipeRefresh.isRefreshing = isReloading
|
|
|
|
|
+ }
|
|
|
|
|
+ games.observe(viewLifecycleOwner) {
|
|
|
|
|
+ (binding.gridGames.adapter as GameAdapter).submitList(it)
|
|
|
|
|
+ if (it.isEmpty()) {
|
|
|
|
|
+ binding.noticeText.visibility = View.VISIBLE
|
|
|
|
|
+ } else {
|
|
|
|
|
+ binding.noticeText.visibility = View.GONE
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ shouldSwapData.observe(viewLifecycleOwner) { shouldSwapData ->
|
|
|
|
|
+ if (shouldSwapData) {
|
|
|
|
|
+ (binding.gridGames.adapter as GameAdapter).submitList(gamesViewModel.games.value!!)
|
|
|
|
|
+ gamesViewModel.setShouldSwapData(false)
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
- // Check if the user reselected the games menu item and then scroll to top of the list
|
|
|
|
|
- gamesViewModel.shouldScrollToTop.observe(viewLifecycleOwner) { shouldScroll ->
|
|
|
|
|
- if (shouldScroll) {
|
|
|
|
|
- scrollToTop()
|
|
|
|
|
- gamesViewModel.setShouldScrollToTop(false)
|
|
|
|
|
|
|
+ // Check if the user reselected the games menu item and then scroll to top of the list
|
|
|
|
|
+ shouldScrollToTop.observe(viewLifecycleOwner) { shouldScroll ->
|
|
|
|
|
+ if (shouldScroll) {
|
|
|
|
|
+ scrollToTop()
|
|
|
|
|
+ gamesViewModel.setShouldScrollToTop(false)
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
setInsets()
|
|
setInsets()
|
|
|
-
|
|
|
|
|
- // Make sure the loading indicator appears even if the layout is told to refresh before being fully drawn
|
|
|
|
|
- binding.swipeRefresh.post {
|
|
|
|
|
- if (_binding == null) {
|
|
|
|
|
- return@post
|
|
|
|
|
- }
|
|
|
|
|
- binding.swipeRefresh.isRefreshing = gamesViewModel.isReloading.value!!
|
|
|
|
|
- }
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
override fun onDestroyView() {
|
|
override fun onDestroyView() {
|