diff --git a/app/src/main/java/org/y20k/trackbook/TrackFragment.kt b/app/src/main/java/org/y20k/trackbook/TrackFragment.kt index e1c6b2c..0e5d40c 100644 --- a/app/src/main/java/org/y20k/trackbook/TrackFragment.kt +++ b/app/src/main/java/org/y20k/trackbook/TrackFragment.kt @@ -152,8 +152,7 @@ class TrackFragment : Fragment(), RenameTrackDialog.RenameTrackListener, YesNoDi // user tapped remove track true -> { // switch to TracklistFragment and remove track there - val trackId: Long = arguments?.getLong(Keys.ARG_TRACK_ID, -1L) ?: -1L - val bundle: Bundle = bundleOf(Keys.ARG_TRACK_ID to trackId) + val bundle: Bundle = bundleOf(Keys.ARG_TRACK_ID to track.getTrackId()) findNavController().navigate(R.id.tracklist_fragment, bundle) } } diff --git a/app/src/main/java/org/y20k/trackbook/TracklistFragment.kt b/app/src/main/java/org/y20k/trackbook/TracklistFragment.kt index 822cda4..a843817 100644 --- a/app/src/main/java/org/y20k/trackbook/TracklistFragment.kt +++ b/app/src/main/java/org/y20k/trackbook/TracklistFragment.kt @@ -31,6 +31,9 @@ import androidx.recyclerview.widget.DefaultItemAnimator import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers.Main +import kotlinx.coroutines.launch import org.y20k.trackbook.core.TracklistElement import org.y20k.trackbook.helpers.LogHelper import org.y20k.trackbook.helpers.TrackHelper @@ -116,7 +119,7 @@ class TracklistFragment : Fragment(), TracklistAdapter.TracklistAdapterListener, // user tapped remove track true -> { toggleOnboardingLayout(tracklistAdapter.itemCount -1) - tracklistAdapter.removeTrack(activity as Context, payload) + tracklistAdapter.removeTrackAtPosition(activity as Context, payload) } // user tapped cancel false -> { @@ -161,9 +164,10 @@ class TracklistFragment : Fragment(), TracklistAdapter.TracklistAdapterListener, val deleteTrackId: Long = arguments?.getLong(Keys.ARG_TRACK_ID, -1L) ?: -1L arguments?.putLong(Keys.ARG_TRACK_ID, -1L) if (deleteTrackId != -1L) { - val position: Int = tracklistAdapter.findPosition(deleteTrackId) - tracklistAdapter.removeTrack(this@TracklistFragment.activity as Context, position) - toggleOnboardingLayout(tracklistAdapter.itemCount -1) + CoroutineScope(Main). launch { + tracklistAdapter.removeTrackById(this@TracklistFragment.activity as Context, deleteTrackId) + toggleOnboardingLayout(tracklistAdapter.itemCount - 1) + } } } diff --git a/app/src/main/java/org/y20k/trackbook/tracklist/TracklistAdapter.kt b/app/src/main/java/org/y20k/trackbook/tracklist/TracklistAdapter.kt index a0ef9ea..314f644 100644 --- a/app/src/main/java/org/y20k/trackbook/tracklist/TracklistAdapter.kt +++ b/app/src/main/java/org/y20k/trackbook/tracklist/TracklistAdapter.kt @@ -114,7 +114,7 @@ class TracklistAdapter(private val fragment: Fragment) : RecyclerView.Adapter = async { FileHelper.deleteTrackSuspended(context, position, tracklist) } // wait for result and store in tracklist @@ -125,8 +125,23 @@ class TracklistAdapter(private val fragment: Fragment) : RecyclerView.Adapter = async { FileHelper.deleteTrackSuspended(context, position, tracklist) } + // wait for result and store in tracklist + withContext(Main) { + tracklist = deferred.await() + notifyItemRemoved(position) } + } + } + + /* Finds current position of track element in adapter list */ - fun findPosition(trackId: Long): Int { + private fun findPosition(trackId: Long): Int { tracklist.tracklistElements.forEachIndexed {index, tracklistElement -> if (tracklistElement.getTrackId() == trackId) return index }