Fix navigation bug
Fix a bug where pressing on multiple library items at once would cause a crash.
This commit is contained in:
parent
f7e25d3fa8
commit
d7b9ec4281
3 changed files with 32 additions and 7 deletions
|
|
@ -46,6 +46,7 @@ class LibraryFragment : Fragment() {
|
|||
|
||||
override fun onPause() {
|
||||
super.onPause()
|
||||
|
||||
callback.isEnabled = false
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -8,18 +8,22 @@ import android.view.ViewGroup
|
|||
import androidx.databinding.DataBindingUtil
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import org.oxycblt.auxio.R
|
||||
import org.oxycblt.auxio.databinding.FragmentLibraryListBinding
|
||||
import org.oxycblt.auxio.library.adapters.ArtistAdapter
|
||||
import org.oxycblt.auxio.music.MusicViewModel
|
||||
import org.oxycblt.auxio.music.models.Artist
|
||||
import org.oxycblt.auxio.recycler.ClickListener
|
||||
import org.oxycblt.auxio.recycler.applyDivider
|
||||
|
||||
class LibraryListFragment : Fragment() {
|
||||
|
||||
private val musicModel: MusicViewModel by activityViewModels {
|
||||
MusicViewModel.Factory(requireActivity().application)
|
||||
private val musicModel: MusicViewModel by activityViewModels()
|
||||
|
||||
private val libraryModel: LibraryViewModel by lazy {
|
||||
ViewModelProvider(this).get(LibraryViewModel::class.java)
|
||||
}
|
||||
|
||||
override fun onCreateView(
|
||||
|
|
@ -33,11 +37,7 @@ class LibraryListFragment : Fragment() {
|
|||
|
||||
binding.libraryRecycler.adapter = ArtistAdapter(
|
||||
musicModel.artists.value!!,
|
||||
ClickListener { artist ->
|
||||
findNavController().navigate(
|
||||
LibraryListFragmentDirections.actionShowArtist(artist.id)
|
||||
)
|
||||
}
|
||||
ClickListener { navToArtist(it) }
|
||||
)
|
||||
binding.libraryRecycler.applyDivider()
|
||||
binding.libraryRecycler.setHasFixedSize(true)
|
||||
|
|
@ -46,4 +46,21 @@ class LibraryListFragment : Fragment() {
|
|||
|
||||
return binding.root
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
super.onPause()
|
||||
|
||||
libraryModel.isAlreadyNavigating = false
|
||||
}
|
||||
|
||||
private fun navToArtist(artist: Artist) {
|
||||
// Don't navigate to a fragment multiple times if multiple items are accepted.
|
||||
if (!libraryModel.isAlreadyNavigating) {
|
||||
libraryModel.isAlreadyNavigating = true
|
||||
|
||||
findNavController().navigate(
|
||||
LibraryListFragmentDirections.actionShowArtist(artist.id)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,7 @@
|
|||
package org.oxycblt.auxio.library
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
|
||||
class LibraryViewModel : ViewModel() {
|
||||
var isAlreadyNavigating = false
|
||||
}
|
||||
Loading…
Reference in a new issue