|
|
|
@ -17,6 +17,7 @@ import org.koitharu.kotatsu.core.prefs.observeAsFlow
|
|
|
|
import org.koitharu.kotatsu.core.ui.DateTimeAgo
|
|
|
|
import org.koitharu.kotatsu.core.ui.DateTimeAgo
|
|
|
|
import org.koitharu.kotatsu.history.domain.HistoryRepository
|
|
|
|
import org.koitharu.kotatsu.history.domain.HistoryRepository
|
|
|
|
import org.koitharu.kotatsu.history.domain.MangaWithHistory
|
|
|
|
import org.koitharu.kotatsu.history.domain.MangaWithHistory
|
|
|
|
|
|
|
|
import org.koitharu.kotatsu.history.domain.PROGRESS_NONE
|
|
|
|
import org.koitharu.kotatsu.list.ui.MangaListViewModel
|
|
|
|
import org.koitharu.kotatsu.list.ui.MangaListViewModel
|
|
|
|
import org.koitharu.kotatsu.list.ui.model.*
|
|
|
|
import org.koitharu.kotatsu.list.ui.model.*
|
|
|
|
import org.koitharu.kotatsu.tracker.domain.TrackingRepository
|
|
|
|
import org.koitharu.kotatsu.tracker.domain.TrackingRepository
|
|
|
|
@ -37,7 +38,7 @@ class HistoryListViewModel(
|
|
|
|
val isGroupingEnabled = MutableLiveData<Boolean>()
|
|
|
|
val isGroupingEnabled = MutableLiveData<Boolean>()
|
|
|
|
val onItemsRemoved = SingleLiveEvent<ReversibleHandle>()
|
|
|
|
val onItemsRemoved = SingleLiveEvent<ReversibleHandle>()
|
|
|
|
|
|
|
|
|
|
|
|
private val historyGrouping = settings.observeAsFlow(AppSettings.KEY_HISTORY_GROUPING) { historyGrouping }
|
|
|
|
private val historyGrouping = settings.observeAsFlow(AppSettings.KEY_HISTORY_GROUPING) { isHistoryGroupingEnabled }
|
|
|
|
.onEach { isGroupingEnabled.postValue(it) }
|
|
|
|
.onEach { isGroupingEnabled.postValue(it) }
|
|
|
|
|
|
|
|
|
|
|
|
override val content = combine(
|
|
|
|
override val content = combine(
|
|
|
|
@ -89,7 +90,7 @@ class HistoryListViewModel(
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
fun setGrouping(isGroupingEnabled: Boolean) {
|
|
|
|
fun setGrouping(isGroupingEnabled: Boolean) {
|
|
|
|
settings.historyGrouping = isGroupingEnabled
|
|
|
|
settings.isHistoryGroupingEnabled = isGroupingEnabled
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private suspend fun mapList(
|
|
|
|
private suspend fun mapList(
|
|
|
|
@ -98,6 +99,7 @@ class HistoryListViewModel(
|
|
|
|
mode: ListMode
|
|
|
|
mode: ListMode
|
|
|
|
): List<ListModel> {
|
|
|
|
): List<ListModel> {
|
|
|
|
val result = ArrayList<ListModel>(if (grouped) (list.size * 1.4).toInt() else list.size + 1)
|
|
|
|
val result = ArrayList<ListModel>(if (grouped) (list.size * 1.4).toInt() else list.size + 1)
|
|
|
|
|
|
|
|
val showPercent = settings.isReadingIndicatorsEnabled
|
|
|
|
var prevDate: DateTimeAgo? = null
|
|
|
|
var prevDate: DateTimeAgo? = null
|
|
|
|
if (!grouped) {
|
|
|
|
if (!grouped) {
|
|
|
|
result += ListHeader(null, R.string.history, null)
|
|
|
|
result += ListHeader(null, R.string.history, null)
|
|
|
|
@ -111,10 +113,11 @@ class HistoryListViewModel(
|
|
|
|
prevDate = date
|
|
|
|
prevDate = date
|
|
|
|
}
|
|
|
|
}
|
|
|
|
val counter = trackingRepository.getNewChaptersCount(manga.id)
|
|
|
|
val counter = trackingRepository.getNewChaptersCount(manga.id)
|
|
|
|
|
|
|
|
val percent = if (showPercent) history.percent else PROGRESS_NONE
|
|
|
|
result += when (mode) {
|
|
|
|
result += when (mode) {
|
|
|
|
ListMode.LIST -> manga.toListModel(counter, history.percent)
|
|
|
|
ListMode.LIST -> manga.toListModel(counter, percent)
|
|
|
|
ListMode.DETAILED_LIST -> manga.toListDetailedModel(counter, history.percent)
|
|
|
|
ListMode.DETAILED_LIST -> manga.toListDetailedModel(counter, percent)
|
|
|
|
ListMode.GRID -> manga.toGridModel(counter, history.percent)
|
|
|
|
ListMode.GRID -> manga.toGridModel(counter, percent)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return result
|
|
|
|
return result
|
|
|
|
|