From 58ff7c9235585b104b54055bc753b2f24e126eb7 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Thu, 12 May 2022 10:35:12 +0300 Subject: [PATCH] Fix branches list --- .../kotatsu/details/domain/BranchComparator.kt | 6 ++++++ .../koitharu/kotatsu/details/ui/DetailsActivity.kt | 2 +- .../kotatsu/details/ui/DetailsViewModel.kt | 14 ++++++-------- 3 files changed, 13 insertions(+), 9 deletions(-) create mode 100644 app/src/main/java/org/koitharu/kotatsu/details/domain/BranchComparator.kt diff --git a/app/src/main/java/org/koitharu/kotatsu/details/domain/BranchComparator.kt b/app/src/main/java/org/koitharu/kotatsu/details/domain/BranchComparator.kt new file mode 100644 index 000000000..d0b5a23c3 --- /dev/null +++ b/app/src/main/java/org/koitharu/kotatsu/details/domain/BranchComparator.kt @@ -0,0 +1,6 @@ +package org.koitharu.kotatsu.details.domain + +class BranchComparator : Comparator { + + override fun compare(o1: String?, o2: String?): Int = compareValues(o1, o2) +} \ No newline at end of file diff --git a/app/src/main/java/org/koitharu/kotatsu/details/ui/DetailsActivity.kt b/app/src/main/java/org/koitharu/kotatsu/details/ui/DetailsActivity.kt index 7762f512c..f6ecc6f0d 100644 --- a/app/src/main/java/org/koitharu/kotatsu/details/ui/DetailsActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/details/ui/DetailsActivity.kt @@ -191,7 +191,7 @@ class DetailsActivity : R.id.action_save -> { viewModel.manga.value?.let { val chaptersCount = it.chapters?.size ?: 0 - val branches = viewModel.branches.value?.toList().orEmpty() + val branches = viewModel.branches.value.orEmpty() if (chaptersCount > 5 || branches.size > 1) { showSaveConfirmation(it, chaptersCount, branches) } else { diff --git a/app/src/main/java/org/koitharu/kotatsu/details/ui/DetailsViewModel.kt b/app/src/main/java/org/koitharu/kotatsu/details/ui/DetailsViewModel.kt index 31007f673..ec8c4f83f 100644 --- a/app/src/main/java/org/koitharu/kotatsu/details/ui/DetailsViewModel.kt +++ b/app/src/main/java/org/koitharu/kotatsu/details/ui/DetailsViewModel.kt @@ -1,11 +1,7 @@ package org.koitharu.kotatsu.details.ui -import androidx.lifecycle.asFlow -import androidx.lifecycle.asLiveData -import androidx.lifecycle.liveData -import androidx.lifecycle.viewModelScope +import androidx.lifecycle.* import java.io.IOException -import java.util.* import kotlinx.coroutines.* import kotlinx.coroutines.flow.* import org.koitharu.kotatsu.R @@ -16,12 +12,14 @@ import org.koitharu.kotatsu.bookmarks.domain.Bookmark import org.koitharu.kotatsu.bookmarks.domain.BookmarksRepository import org.koitharu.kotatsu.core.prefs.AppSettings import org.koitharu.kotatsu.core.prefs.observeAsFlow +import org.koitharu.kotatsu.details.domain.BranchComparator import org.koitharu.kotatsu.details.ui.model.ChapterListItem import org.koitharu.kotatsu.favourites.domain.FavouritesRepository import org.koitharu.kotatsu.history.domain.HistoryRepository import org.koitharu.kotatsu.local.domain.LocalMangaRepository import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.util.mapToSet import org.koitharu.kotatsu.tracker.domain.TrackingRepository import org.koitharu.kotatsu.utils.SingleLiveEvent import org.koitharu.kotatsu.utils.ext.asLiveDataDistinct @@ -77,9 +75,9 @@ class DetailsViewModel( val onMangaRemoved = SingleLiveEvent() - val branches = delegate.manga.map { - val chapters = it?.chapters ?: return@map emptySet() - chapters.mapTo(TreeSet()) { x -> x.branch } + val branches: LiveData> = delegate.manga.map { + val chapters = it?.chapters ?: return@map emptyList() + chapters.mapToSet { x -> x.branch }.sortedWith(BranchComparator()) }.asLiveDataDistinct(viewModelScope.coroutineContext + Dispatchers.Default) val selectedBranchIndex = combine(