mirror of
https://github.com/recloudstream/cloudstream.git
synced 2024-08-15 01:53:11 +00:00
Use data class and minor performance improvements
This commit is contained in:
parent
df603b0838
commit
a26aeb6534
1 changed files with 14 additions and 11 deletions
|
@ -28,6 +28,7 @@ import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
|
|
||||||
class DownloadViewModel : ViewModel() {
|
class DownloadViewModel : ViewModel() {
|
||||||
|
|
||||||
private val _headerCards =
|
private val _headerCards =
|
||||||
MutableLiveData<List<VisualDownloadCached.Header>>().apply { listOf<VisualDownloadCached.Header>() }
|
MutableLiveData<List<VisualDownloadCached.Header>>().apply { listOf<VisualDownloadCached.Header>() }
|
||||||
val headerCards: LiveData<List<VisualDownloadCached.Header>> = _headerCards
|
val headerCards: LiveData<List<VisualDownloadCached.Header>> = _headerCards
|
||||||
|
@ -249,23 +250,23 @@ class DownloadViewModel : ViewModel() {
|
||||||
val selectedItemsList = selectedItems.value ?: emptyList()
|
val selectedItemsList = selectedItems.value ?: emptyList()
|
||||||
|
|
||||||
val ids = mutableListOf<Int>()
|
val ids = mutableListOf<Int>()
|
||||||
|
|
||||||
var parentName: String? = null
|
|
||||||
val seriesNames = mutableListOf<String>()
|
val seriesNames = mutableListOf<String>()
|
||||||
val names = mutableListOf<String>()
|
val names = mutableListOf<String>()
|
||||||
|
var parentName: String? = null
|
||||||
|
|
||||||
selectedItemsList.forEach { item ->
|
selectedItemsList.forEach { item ->
|
||||||
when (item) {
|
when (item) {
|
||||||
is VisualDownloadCached.Header -> {
|
is VisualDownloadCached.Header -> {
|
||||||
if (item.data.type.isEpisodeBased()) {
|
if (item.data.type.isEpisodeBased()) {
|
||||||
context.getKeys(DOWNLOAD_EPISODE_CACHE)
|
val episodes = context.getKeys(DOWNLOAD_EPISODE_CACHE)
|
||||||
.mapNotNull {
|
.mapNotNull {
|
||||||
context.getKey<VideoDownloadHelper.DownloadEpisodeCached>(
|
context.getKey<VideoDownloadHelper.DownloadEpisodeCached>(
|
||||||
it
|
it
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
.filter { it.parentId == item.data.id }
|
.filter { it.parentId == item.data.id }
|
||||||
.mapTo(ids) { it.id }
|
.map { it.id }
|
||||||
|
ids.addAll(episodes)
|
||||||
|
|
||||||
val episodeInfo = "${item.data.name} (${item.totalDownloads} ${
|
val episodeInfo = "${item.data.name} (${item.totalDownloads} ${
|
||||||
context.resources.getQuantityString(
|
context.resources.getQuantityString(
|
||||||
|
@ -298,14 +299,14 @@ class DownloadViewModel : ViewModel() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val data = Triple(parentName, seriesNames.toList(), names.toList())
|
val data = DeleteConfirmationData(parentName, seriesNames.toList(), names.toList())
|
||||||
showDeleteConfirmationDialog(context, ids, data, onDeleteConfirm)
|
showDeleteConfirmationDialog(context, ids, data, onDeleteConfirm)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun showDeleteConfirmationDialog(
|
private fun showDeleteConfirmationDialog(
|
||||||
context: Context,
|
context: Context,
|
||||||
ids: List<Int>,
|
ids: List<Int>,
|
||||||
data: Triple<String?, List<String>, List<String>>,
|
data: DeleteConfirmationData,
|
||||||
onDeleteConfirm: () -> Unit
|
onDeleteConfirm: () -> Unit
|
||||||
) {
|
) {
|
||||||
val (parentName, seriesNames, names) = data
|
val (parentName, seriesNames, names) = data
|
||||||
|
@ -317,19 +318,16 @@ class DownloadViewModel : ViewModel() {
|
||||||
seriesNames.isNotEmpty() && names.isEmpty() -> {
|
seriesNames.isNotEmpty() && names.isEmpty() -> {
|
||||||
context.getString(R.string.delete_message_series_only).format(formattedSeriesNames)
|
context.getString(R.string.delete_message_series_only).format(formattedSeriesNames)
|
||||||
}
|
}
|
||||||
|
|
||||||
parentName != null && names.isNotEmpty() -> {
|
parentName != null && names.isNotEmpty() -> {
|
||||||
context.getString(R.string.delete_message_series_episodes)
|
context.getString(R.string.delete_message_series_episodes)
|
||||||
.format(parentName, formattedNames)
|
.format(parentName, formattedNames)
|
||||||
}
|
}
|
||||||
|
|
||||||
seriesNames.isNotEmpty() -> {
|
seriesNames.isNotEmpty() -> {
|
||||||
val seriesSection = context.getString(R.string.delete_message_series_section)
|
val seriesSection = context.getString(R.string.delete_message_series_section)
|
||||||
.format(formattedSeriesNames)
|
.format(formattedSeriesNames)
|
||||||
context.getString(R.string.delete_message_multiple)
|
context.getString(R.string.delete_message_multiple)
|
||||||
.format(formattedNames) + "\n\n" + seriesSection
|
.format(formattedNames) + "\n\n" + seriesSection
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> context.getString(R.string.delete_message_multiple).format(formattedNames)
|
else -> context.getString(R.string.delete_message_multiple).format(formattedNames)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -344,7 +342,6 @@ class DownloadViewModel : ViewModel() {
|
||||||
onDeleteConfirm.invoke()
|
onDeleteConfirm.invoke()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DialogInterface.BUTTON_NEGATIVE -> {
|
DialogInterface.BUTTON_NEGATIVE -> {
|
||||||
// Do nothing on cancel
|
// Do nothing on cancel
|
||||||
}
|
}
|
||||||
|
@ -361,4 +358,10 @@ class DownloadViewModel : ViewModel() {
|
||||||
logError(e)
|
logError(e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private data class DeleteConfirmationData(
|
||||||
|
val parentName: String?,
|
||||||
|
val seriesNames: List<String>,
|
||||||
|
val names: List<String>
|
||||||
|
)
|
||||||
}
|
}
|
Loading…
Add table
Add a link
Reference in a new issue