0
0
mirror of https://github.com/mediathekview/zapp.git synced 2024-09-20 04:12:14 +02:00

Fixed removing a bookmark is sometimes not possible #451

This commit is contained in:
Christine Coenen 2024-09-11 18:45:33 +02:00
parent 4835c5752b
commit 65c0f79326
4 changed files with 25 additions and 9 deletions

View File

@ -8,6 +8,7 @@ import androidx.core.view.isVisible
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.setFragmentResultListener import androidx.fragment.app.setFragmentResultListener
import androidx.lifecycle.Lifecycle import androidx.lifecycle.Lifecycle
import androidx.lifecycle.coroutineScope
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs import androidx.navigation.fragment.navArgs
import com.google.android.material.snackbar.Snackbar 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.first
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.transform import kotlinx.coroutines.flow.transform
import kotlinx.coroutines.launch
import org.koin.android.ext.android.inject import org.koin.android.ext.android.inject
import timber.log.Timber import timber.log.Timber
import kotlin.time.Duration.Companion.milliseconds import kotlin.time.Duration.Companion.milliseconds
@ -243,7 +245,7 @@ class MediathekDetailFragment : Fragment() {
} }
private fun updateVideoThumbnail() { private fun updateVideoThumbnail() {
viewLifecycleOwner.launchOnCreated { lifecycle.coroutineScope.launch {
// reload show for up to date file path and then update thumbnail // reload show for up to date file path and then update thumbnail
mediathekRepository mediathekRepository
@ -268,7 +270,7 @@ class MediathekDetailFragment : Fragment() {
private fun download(downloadQuality: Quality) { private fun download(downloadQuality: Quality) {
startDownloadJob?.cancel() startDownloadJob?.cancel()
startDownloadJob = viewLifecycleOwner.launchOnCreated { startDownloadJob = lifecycle.coroutineScope.launch {
try { try {
downloadController.startDownload(persistedMediathekShow!!.id, downloadQuality) downloadController.startDownload(persistedMediathekShow!!.id, downloadQuality)

View File

@ -1,18 +1,23 @@
package de.christinecoenen.code.zapp.app.mediathek.ui.helper 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
import android.widget.PopupMenu.OnMenuItemClickListener import android.widget.PopupMenu.OnMenuItemClickListener
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.setFragmentResultListener import androidx.fragment.app.setFragmentResultListener
import androidx.lifecycle.coroutineScope
import de.christinecoenen.code.zapp.R 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.ConfirmDeleteDownloadDialog
import de.christinecoenen.code.zapp.app.mediathek.ui.dialogs.SelectQualityDialog import de.christinecoenen.code.zapp.app.mediathek.ui.dialogs.SelectQualityDialog
import de.christinecoenen.code.zapp.models.shows.MediathekShow 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.launchOnCreated
import de.christinecoenen.code.zapp.utils.system.LifecycleOwnerHelper.launchOnResumed
import kotlinx.coroutines.Job import kotlinx.coroutines.Job
import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch
import org.koin.androidx.viewmodel.ext.android.viewModel import org.koin.androidx.viewmodel.ext.android.viewModel
/** /**
@ -59,38 +64,45 @@ class ShowMenuHelper(
show.shareExternally(fragment.requireContext()) show.shareExternally(fragment.requireContext())
true true
} }
R.id.menu_add_bookmark -> { R.id.menu_add_bookmark -> {
fragment.launchOnResumed { fragment.lifecycle.coroutineScope.launch {
viewModel.bookmark(show) viewModel.bookmark(show)
} }
return true return true
} }
R.id.menu_remove_bookmark -> { R.id.menu_remove_bookmark -> {
fragment.launchOnResumed { fragment.lifecycle.coroutineScope.launch {
viewModel.removeBookmark(show) viewModel.removeBookmark(show)
} }
return true return true
} }
R.id.menu_start_download -> { R.id.menu_start_download -> {
showSelectQualityDialog() showSelectQualityDialog()
return true return true
} }
R.id.menu_remove_download -> { R.id.menu_remove_download -> {
showConfirmDeleteDownloadDialog() showConfirmDeleteDownloadDialog()
return true return true
} }
R.id.menu_cancel_download -> { R.id.menu_cancel_download -> {
fragment.launchOnResumed { fragment.lifecycle.coroutineScope.launch {
viewModel.cancelDownload(show) viewModel.cancelDownload(show)
} }
return true return true
} }
R.id.menu_mark_unwatched -> { R.id.menu_mark_unwatched -> {
fragment.launchOnResumed { fragment.lifecycle.coroutineScope.launch {
viewModel.markUnwatched(show) viewModel.markUnwatched(show)
} }
return true return true
} }
else -> false else -> false
} }
} }
@ -101,7 +113,7 @@ class ShowMenuHelper(
private fun startUpdateMenuJob(menu: Menu) { private fun startUpdateMenuJob(menu: Menu) {
updateMenuItemsJob?.cancel() updateMenuItemsJob?.cancel()
updateMenuItemsJob = fragment.launchOnResumed { updateMenuItemsJob = fragment.lifecycle.coroutineScope.launch {
viewModel viewModel
.getMenuItemsVisibility(show) .getMenuItemsVisibility(show)
.collectLatest { applyVisibiltyToMenu(menu, it) } .collectLatest { applyVisibiltyToMenu(menu, it) }

View File

@ -1,5 +1,6 @@
# v-next # v-next
* Fixed html entities visible in program information titles * Fixed html entities visible in program information titles
* Fixed removing a bookmark is sometimes not possible
# 8.5.2 # 8.5.2
* Removed duplicate entries when scrolling the mediathek list * Removed duplicate entries when scrolling the mediathek list

View File

@ -1,5 +1,6 @@
# v-next # v-next
* Sichtbare HTML-Entities in Programm-Information repariert * Sichtbare HTML-Entities in Programm-Information repariert
* Repariert, dass Lesezeichen manchmal nicht entfernt werden können
# 8.5.2 # 8.5.2
* Duplikate beim Scrollen in der Mediathek-Liste entfernt * Duplikate beim Scrollen in der Mediathek-Liste entfernt