|
|
@ -55,30 +55,41 @@ class GamesFragment : Fragment() { |
|
|
adapter = GameAdapter(requireActivity() as AppCompatActivity) |
|
|
adapter = GameAdapter(requireActivity() as AppCompatActivity) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
binding.swipeRefresh.apply { |
|
|
// Add swipe down to refresh gesture |
|
|
// Add swipe down to refresh gesture |
|
|
binding.swipeRefresh.setOnRefreshListener { |
|
|
|
|
|
|
|
|
setOnRefreshListener { |
|
|
gamesViewModel.reloadGames(false) |
|
|
gamesViewModel.reloadGames(false) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// Set theme color to the refresh animation's background |
|
|
// Set theme color to the refresh animation's background |
|
|
binding.swipeRefresh.setProgressBackgroundColorSchemeColor( |
|
|
|
|
|
|
|
|
setProgressBackgroundColorSchemeColor( |
|
|
MaterialColors.getColor( |
|
|
MaterialColors.getColor( |
|
|
binding.swipeRefresh, |
|
|
binding.swipeRefresh, |
|
|
com.google.android.material.R.attr.colorPrimary |
|
|
com.google.android.material.R.attr.colorPrimary |
|
|
) |
|
|
) |
|
|
) |
|
|
) |
|
|
binding.swipeRefresh.setColorSchemeColors( |
|
|
|
|
|
|
|
|
setColorSchemeColors( |
|
|
MaterialColors.getColor( |
|
|
MaterialColors.getColor( |
|
|
binding.swipeRefresh, |
|
|
binding.swipeRefresh, |
|
|
com.google.android.material.R.attr.colorOnPrimary |
|
|
com.google.android.material.R.attr.colorOnPrimary |
|
|
) |
|
|
) |
|
|
) |
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
// 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.apply { |
|
|
// Watch for when we get updates to any of our games lists |
|
|
// Watch for when we get updates to any of our games lists |
|
|
gamesViewModel.isReloading.observe(viewLifecycleOwner) { isReloading -> |
|
|
|
|
|
|
|
|
isReloading.observe(viewLifecycleOwner) { isReloading -> |
|
|
binding.swipeRefresh.isRefreshing = isReloading |
|
|
binding.swipeRefresh.isRefreshing = isReloading |
|
|
} |
|
|
} |
|
|
gamesViewModel.games.observe(viewLifecycleOwner) { |
|
|
|
|
|
|
|
|
games.observe(viewLifecycleOwner) { |
|
|
(binding.gridGames.adapter as GameAdapter).submitList(it) |
|
|
(binding.gridGames.adapter as GameAdapter).submitList(it) |
|
|
if (it.isEmpty()) { |
|
|
if (it.isEmpty()) { |
|
|
binding.noticeText.visibility = View.VISIBLE |
|
|
binding.noticeText.visibility = View.VISIBLE |
|
|
@ -86,8 +97,7 @@ class GamesFragment : Fragment() { |
|
|
binding.noticeText.visibility = View.GONE |
|
|
binding.noticeText.visibility = View.GONE |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
gamesViewModel.shouldSwapData.observe(viewLifecycleOwner) { shouldSwapData -> |
|
|
|
|
|
|
|
|
shouldSwapData.observe(viewLifecycleOwner) { shouldSwapData -> |
|
|
if (shouldSwapData) { |
|
|
if (shouldSwapData) { |
|
|
(binding.gridGames.adapter as GameAdapter).submitList(gamesViewModel.games.value!!) |
|
|
(binding.gridGames.adapter as GameAdapter).submitList(gamesViewModel.games.value!!) |
|
|
gamesViewModel.setShouldSwapData(false) |
|
|
gamesViewModel.setShouldSwapData(false) |
|
|
@ -95,22 +105,15 @@ class GamesFragment : Fragment() { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// Check if the user reselected the games menu item and then scroll to top of the list |
|
|
// Check if the user reselected the games menu item and then scroll to top of the list |
|
|
gamesViewModel.shouldScrollToTop.observe(viewLifecycleOwner) { shouldScroll -> |
|
|
|
|
|
|
|
|
shouldScrollToTop.observe(viewLifecycleOwner) { shouldScroll -> |
|
|
if (shouldScroll) { |
|
|
if (shouldScroll) { |
|
|
scrollToTop() |
|
|
scrollToTop() |
|
|
gamesViewModel.setShouldScrollToTop(false) |
|
|
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() { |
|
|
|