Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
84ce4c508c | ||
|
|
0db8fafe61 | ||
|
fed241215e
|
|||
|
761f24daf9
|
@@ -16,8 +16,8 @@ android {
|
||||
applicationId 'org.koitharu.kotatsu'
|
||||
minSdk = 21
|
||||
targetSdk = 34
|
||||
versionCode = 580
|
||||
versionName = '6.1.2'
|
||||
versionCode = 581
|
||||
versionName = '6.1.3'
|
||||
generatedDensities = []
|
||||
testInstrumentationRunner "org.koitharu.kotatsu.HiltTestRunner"
|
||||
ksp {
|
||||
@@ -81,7 +81,7 @@ afterEvaluate {
|
||||
}
|
||||
dependencies {
|
||||
//noinspection GradleDependency
|
||||
implementation('com.github.KotatsuApp:kotatsu-parsers:7fbeb2e266') {
|
||||
implementation('com.github.KotatsuApp:kotatsu-parsers:0004be15ba') {
|
||||
exclude group: 'org.json', module: 'json'
|
||||
}
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@ class BookmarksSheetViewModel @Inject constructor(
|
||||
|
||||
val content: StateFlow<List<ListModel>> = bookmarksRepository.observeBookmarks(manga)
|
||||
.map { mapList(it) }
|
||||
.withErrorHandling()
|
||||
.stateIn(viewModelScope + Dispatchers.Default, SharingStarted.Lazily, listOf(LoadingFooter()))
|
||||
|
||||
private suspend fun mapList(bookmarks: List<Bookmark>): List<ListModel> {
|
||||
|
||||
@@ -26,7 +26,7 @@ class DoubleMangaLoadUseCase @Inject constructor(
|
||||
private val recoverUseCase: RecoverMangaUseCase,
|
||||
) {
|
||||
|
||||
operator fun invoke(manga: Manga): Flow<DoubleManga> = flow<DoubleManga> {
|
||||
operator fun invoke(manga: Manga): Flow<DoubleManga> = flow {
|
||||
var lastValue: DoubleManga? = null
|
||||
var emitted = false
|
||||
invokeImpl(manga).collect {
|
||||
|
||||
@@ -87,8 +87,7 @@ class ReaderViewModel @Inject constructor(
|
||||
private var pageSaveJob: Job? = null
|
||||
private var bookmarkJob: Job? = null
|
||||
private var stateChangeJob: Job? = null
|
||||
private val currentState =
|
||||
MutableStateFlow<ReaderState?>(savedStateHandle[ReaderActivity.EXTRA_STATE])
|
||||
private val currentState = MutableStateFlow<ReaderState?>(savedStateHandle[ReaderActivity.EXTRA_STATE])
|
||||
private val mangaData = MutableStateFlow(intent.manga?.let { DoubleManga(it) })
|
||||
private val mangaFlow: Flow<Manga?>
|
||||
get() = mangaData.map { it?.any }
|
||||
@@ -326,7 +325,7 @@ class ReaderViewModel @Inject constructor(
|
||||
mangaData.value = manga
|
||||
val mangaFlow = doubleMangaLoadUseCase(intent)
|
||||
manga = mangaFlow.first { x -> x.any != null }
|
||||
chaptersLoader.init(viewModelScope, mangaFlow)
|
||||
chaptersLoader.init(viewModelScope, mangaFlow.withErrorHandling())
|
||||
// determine mode
|
||||
val singleManga = manga.requireAny()
|
||||
// obtain state
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package org.koitharu.kotatsu.tracker.data
|
||||
|
||||
import java.util.*
|
||||
import org.koitharu.kotatsu.core.db.entity.toManga
|
||||
import org.koitharu.kotatsu.core.db.entity.toMangaTags
|
||||
import org.koitharu.kotatsu.tracker.domain.model.TrackingLogItem
|
||||
import java.util.Date
|
||||
|
||||
fun TrackLogWithManga.toTrackingLogItem(counters: MutableMap<Long, Int>): TrackingLogItem {
|
||||
val chaptersList = trackLog.chapters.split('\n').filterNot { x -> x.isEmpty() }
|
||||
@@ -16,7 +16,7 @@ fun TrackLogWithManga.toTrackingLogItem(counters: MutableMap<Long, Int>): Tracki
|
||||
)
|
||||
}
|
||||
|
||||
private fun MutableMap<Long, Int>.decrement(key: Long, count: Int): Boolean {
|
||||
private fun MutableMap<Long, Int>.decrement(key: Long, count: Int): Boolean = synchronized(this) {
|
||||
val counter = get(key)
|
||||
if (counter == null || counter <= 0) {
|
||||
return false
|
||||
|
||||
@@ -25,6 +25,7 @@ import org.koitharu.kotatsu.tracker.domain.model.MangaTracking
|
||||
import org.koitharu.kotatsu.tracker.domain.model.MangaUpdates
|
||||
import org.koitharu.kotatsu.tracker.domain.model.TrackingLogItem
|
||||
import java.util.Date
|
||||
import java.util.concurrent.atomic.AtomicBoolean
|
||||
import javax.inject.Inject
|
||||
|
||||
private const val NO_ID = 0L
|
||||
@@ -34,7 +35,7 @@ class TrackingRepository @Inject constructor(
|
||||
private val db: MangaDatabase,
|
||||
) {
|
||||
|
||||
private var isGcCalled = false
|
||||
private var isGcCalled = AtomicBoolean(false)
|
||||
|
||||
suspend fun getNewChaptersCount(mangaId: Long): Int {
|
||||
return db.tracksDao.findNewChapters(mangaId) ?: 0
|
||||
@@ -227,9 +228,8 @@ class TrackingRepository @Inject constructor(
|
||||
}
|
||||
|
||||
private suspend fun gcIfNotCalled() {
|
||||
if (!isGcCalled) {
|
||||
if (isGcCalled.compareAndSet(false, true)) {
|
||||
gc()
|
||||
isGcCalled = true
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -479,4 +479,8 @@
|
||||
<string name="directories">Directorios</string>
|
||||
<string name="main_screen_sections">Secciones de la pantalla principal</string>
|
||||
<string name="to_top">Hasta arriba</string>
|
||||
<string name="zoom_in">Acercar</string>
|
||||
<string name="reader_zoom_buttons_summary">Mostrar o no los botones de control del zoom en la esquina inferior derecha</string>
|
||||
<string name="reader_zoom_buttons">Mostrar los botones del zoom</string>
|
||||
<string name="zoom_out">Alejar</string>
|
||||
</resources>
|
||||
@@ -469,4 +469,18 @@
|
||||
<string name="disable_nsfw">Désactiver NSFW</string>
|
||||
<string name="too_many_requests_message">Trop de requêtes. Réessayez plus tard</string>
|
||||
<string name="related_manga_summary">Afficher une liste de mangas connexes. Dans certains cas, elle peut être inexacte ou manquante</string>
|
||||
<string name="zoom_in">Agrandir</string>
|
||||
<string name="error_corrupted_file">Les données invalides sont retournées ou le fichier est corrompu</string>
|
||||
<string name="reader_zoom_buttons_summary">Pour afficher ou pas les boutons de commande de zoom dans le coin inférieur droit</string>
|
||||
<string name="on_device">Sur l\'appareil</string>
|
||||
<string name="moved_to_top">Déplacé vers le haut</string>
|
||||
<string name="items_limit_exceeded">Plus d\'éléments peuvent être ajoutés</string>
|
||||
<string name="directories">Répertoires</string>
|
||||
<string name="reader_zoom_buttons">Afficher les boutons de zoom</string>
|
||||
<string name="main_screen_sections">Principales sections de l\'écran</string>
|
||||
<string name="advanced">Avancé</string>
|
||||
<string name="default_section">Section par défaut</string>
|
||||
<string name="zoom_out">Réduire</string>
|
||||
<string name="manga_list">Liste des mangas</string>
|
||||
<string name="to_top">En haut</string>
|
||||
</resources>
|
||||
Reference in New Issue
Block a user