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:
parent
4835c5752b
commit
65c0f79326
@ -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)
|
||||||
|
@ -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) }
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user