From 65c0f793267401be2a959ec00bf25fbc216856bf Mon Sep 17 00:00:00 2001 From: Christine Coenen Date: Wed, 11 Sep 2024 18:45:33 +0200 Subject: [PATCH] Fixed removing a bookmark is sometimes not possible #451 --- .../ui/detail/MediathekDetailFragment.kt | 6 +++-- .../app/mediathek/ui/helper/ShowMenuHelper.kt | 26 ++++++++++++++----- app/src/main/res/raw-en/changelog.md | 1 + app/src/main/res/raw/changelog.md | 1 + 4 files changed, 25 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/de/christinecoenen/code/zapp/app/mediathek/ui/detail/MediathekDetailFragment.kt b/app/src/main/java/de/christinecoenen/code/zapp/app/mediathek/ui/detail/MediathekDetailFragment.kt index f3db696b..c0203aea 100644 --- a/app/src/main/java/de/christinecoenen/code/zapp/app/mediathek/ui/detail/MediathekDetailFragment.kt +++ b/app/src/main/java/de/christinecoenen/code/zapp/app/mediathek/ui/detail/MediathekDetailFragment.kt @@ -8,6 +8,7 @@ import androidx.core.view.isVisible import androidx.fragment.app.Fragment import androidx.fragment.app.setFragmentResultListener import androidx.lifecycle.Lifecycle +import androidx.lifecycle.coroutineScope import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import com.google.android.material.snackbar.Snackbar @@ -33,6 +34,7 @@ import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.transform +import kotlinx.coroutines.launch import org.koin.android.ext.android.inject import timber.log.Timber import kotlin.time.Duration.Companion.milliseconds @@ -243,7 +245,7 @@ class MediathekDetailFragment : Fragment() { } private fun updateVideoThumbnail() { - viewLifecycleOwner.launchOnCreated { + lifecycle.coroutineScope.launch { // reload show for up to date file path and then update thumbnail mediathekRepository @@ -268,7 +270,7 @@ class MediathekDetailFragment : Fragment() { private fun download(downloadQuality: Quality) { startDownloadJob?.cancel() - startDownloadJob = viewLifecycleOwner.launchOnCreated { + startDownloadJob = lifecycle.coroutineScope.launch { try { downloadController.startDownload(persistedMediathekShow!!.id, downloadQuality) diff --git a/app/src/main/java/de/christinecoenen/code/zapp/app/mediathek/ui/helper/ShowMenuHelper.kt b/app/src/main/java/de/christinecoenen/code/zapp/app/mediathek/ui/helper/ShowMenuHelper.kt index ec6358fc..af9fe3ce 100644 --- a/app/src/main/java/de/christinecoenen/code/zapp/app/mediathek/ui/helper/ShowMenuHelper.kt +++ b/app/src/main/java/de/christinecoenen/code/zapp/app/mediathek/ui/helper/ShowMenuHelper.kt @@ -1,18 +1,23 @@ package de.christinecoenen.code.zapp.app.mediathek.ui.helper -import android.view.* +import android.view.Gravity +import android.view.Menu +import android.view.MenuInflater +import android.view.MenuItem +import android.view.View import android.widget.PopupMenu import android.widget.PopupMenu.OnMenuItemClickListener import androidx.fragment.app.Fragment import androidx.fragment.app.setFragmentResultListener +import androidx.lifecycle.coroutineScope import de.christinecoenen.code.zapp.R import de.christinecoenen.code.zapp.app.mediathek.ui.dialogs.ConfirmDeleteDownloadDialog import de.christinecoenen.code.zapp.app.mediathek.ui.dialogs.SelectQualityDialog import de.christinecoenen.code.zapp.models.shows.MediathekShow import de.christinecoenen.code.zapp.utils.system.LifecycleOwnerHelper.launchOnCreated -import de.christinecoenen.code.zapp.utils.system.LifecycleOwnerHelper.launchOnResumed import kotlinx.coroutines.Job import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.launch import org.koin.androidx.viewmodel.ext.android.viewModel /** @@ -59,38 +64,45 @@ class ShowMenuHelper( show.shareExternally(fragment.requireContext()) true } + R.id.menu_add_bookmark -> { - fragment.launchOnResumed { + fragment.lifecycle.coroutineScope.launch { viewModel.bookmark(show) } return true } + R.id.menu_remove_bookmark -> { - fragment.launchOnResumed { + fragment.lifecycle.coroutineScope.launch { viewModel.removeBookmark(show) } return true } + R.id.menu_start_download -> { showSelectQualityDialog() return true } + R.id.menu_remove_download -> { showConfirmDeleteDownloadDialog() return true } + R.id.menu_cancel_download -> { - fragment.launchOnResumed { + fragment.lifecycle.coroutineScope.launch { viewModel.cancelDownload(show) } return true } + R.id.menu_mark_unwatched -> { - fragment.launchOnResumed { + fragment.lifecycle.coroutineScope.launch { viewModel.markUnwatched(show) } return true } + else -> false } } @@ -101,7 +113,7 @@ class ShowMenuHelper( private fun startUpdateMenuJob(menu: Menu) { updateMenuItemsJob?.cancel() - updateMenuItemsJob = fragment.launchOnResumed { + updateMenuItemsJob = fragment.lifecycle.coroutineScope.launch { viewModel .getMenuItemsVisibility(show) .collectLatest { applyVisibiltyToMenu(menu, it) } diff --git a/app/src/main/res/raw-en/changelog.md b/app/src/main/res/raw-en/changelog.md index 12b056c9..8cc329e8 100644 --- a/app/src/main/res/raw-en/changelog.md +++ b/app/src/main/res/raw-en/changelog.md @@ -1,5 +1,6 @@ # v-next * Fixed html entities visible in program information titles +* Fixed removing a bookmark is sometimes not possible # 8.5.2 * Removed duplicate entries when scrolling the mediathek list diff --git a/app/src/main/res/raw/changelog.md b/app/src/main/res/raw/changelog.md index 51e930a0..6a29c39b 100644 --- a/app/src/main/res/raw/changelog.md +++ b/app/src/main/res/raw/changelog.md @@ -1,5 +1,6 @@ # v-next * Sichtbare HTML-Entities in Programm-Information repariert +* Repariert, dass Lesezeichen manchmal nicht entfernt werden können # 8.5.2 * Duplikate beim Scrollen in der Mediathek-Liste entfernt