mirror of
https://github.com/mihonapp/mihon.git
synced 2025-11-09 18:48:55 +01:00
insert error entry one by one
This commit is contained in:
@@ -24,7 +24,6 @@ import eu.kanade.tachiyomi.data.download.DownloadManager
|
||||
import eu.kanade.tachiyomi.data.notification.Notifications
|
||||
import eu.kanade.tachiyomi.source.model.SManga
|
||||
import eu.kanade.tachiyomi.source.model.UpdateStrategy
|
||||
import eu.kanade.tachiyomi.util.system.createFileInCacheDir
|
||||
import eu.kanade.tachiyomi.util.system.isConnectedToWifi
|
||||
import eu.kanade.tachiyomi.util.system.isRunning
|
||||
import eu.kanade.tachiyomi.util.system.setForegroundSafely
|
||||
@@ -54,10 +53,8 @@ import tachiyomi.domain.library.service.LibraryPreferences.Companion.MANGA_HAS_U
|
||||
import tachiyomi.domain.library.service.LibraryPreferences.Companion.MANGA_NON_COMPLETED
|
||||
import tachiyomi.domain.library.service.LibraryPreferences.Companion.MANGA_NON_READ
|
||||
import tachiyomi.domain.library.service.LibraryPreferences.Companion.MANGA_OUTSIDE_RELEASE_PERIOD
|
||||
import tachiyomi.domain.libraryUpdateError.interactor.DeleteLibraryUpdateErrors
|
||||
import tachiyomi.domain.libraryUpdateError.interactor.InsertLibraryUpdateErrors
|
||||
import tachiyomi.domain.libraryUpdateError.model.LibraryUpdateError
|
||||
import tachiyomi.domain.libraryUpdateErrorMessage.interactor.DeleteLibraryUpdateErrorMessages
|
||||
import tachiyomi.domain.libraryUpdateErrorMessage.interactor.InsertLibraryUpdateErrorMessages
|
||||
import tachiyomi.domain.libraryUpdateErrorMessage.model.LibraryUpdateErrorMessage
|
||||
import tachiyomi.domain.manga.interactor.FetchInterval
|
||||
@@ -69,7 +66,6 @@ import tachiyomi.domain.source.service.SourceManager
|
||||
import tachiyomi.i18n.MR
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
import java.io.File
|
||||
import java.time.Instant
|
||||
import java.time.ZonedDateTime
|
||||
import java.util.concurrent.CopyOnWriteArrayList
|
||||
@@ -91,8 +87,6 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet
|
||||
private val fetchInterval: FetchInterval = Injekt.get()
|
||||
private val filterChaptersForDownload: FilterChaptersForDownload = Injekt.get()
|
||||
|
||||
private val deleteLibraryUpdateErrorMessages: DeleteLibraryUpdateErrorMessages = Injekt.get()
|
||||
private val deleteLibraryUpdateErrors: DeleteLibraryUpdateErrors = Injekt.get()
|
||||
private val insertLibraryUpdateErrors: InsertLibraryUpdateErrors = Injekt.get()
|
||||
private val insertLibraryUpdateErrorMessages: InsertLibraryUpdateErrorMessages = Injekt.get()
|
||||
|
||||
@@ -300,6 +294,7 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet
|
||||
)
|
||||
else -> e.message
|
||||
}
|
||||
writeErrorToDB(manga to errorMessage)
|
||||
failedUpdates.add(manga to errorMessage)
|
||||
}
|
||||
}
|
||||
@@ -320,7 +315,6 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet
|
||||
}
|
||||
|
||||
if (failedUpdates.isNotEmpty()) {
|
||||
writeErrorsToDB(failedUpdates)
|
||||
notifier.showUpdateErrorNotification(
|
||||
failedUpdates.size,
|
||||
)
|
||||
@@ -385,52 +379,16 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes basic file of update errors to cache dir.
|
||||
*/
|
||||
private fun writeErrorFile(errors: List<Pair<Manga, String?>>): File {
|
||||
try {
|
||||
if (errors.isNotEmpty()) {
|
||||
val file = context.createFileInCacheDir("mihon_update_errors.txt")
|
||||
file.bufferedWriter().use { out ->
|
||||
out.write(context.stringResource(MR.strings.library_errors_help, ERROR_LOG_HELP_URL) + "\n\n")
|
||||
// Error file format:
|
||||
// ! Error
|
||||
// # Source
|
||||
// - Manga
|
||||
errors.groupBy({ it.second }, { it.first }).forEach { (error, mangas) ->
|
||||
out.write("\n! ${error}\n")
|
||||
mangas.groupBy { it.source }.forEach { (srcId, mangas) ->
|
||||
val source = sourceManager.getOrStub(srcId)
|
||||
out.write(" # $source\n")
|
||||
mangas.forEach {
|
||||
out.write(" - ${it.title}\n")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return file
|
||||
}
|
||||
} catch (_: Exception) {}
|
||||
return File("")
|
||||
}
|
||||
private suspend fun writeErrorToDB(error: Pair<Manga, String?>) {
|
||||
val errorMessage = error.second ?: "???"
|
||||
val errorMessageId = insertLibraryUpdateErrorMessages.get(errorMessage)
|
||||
?: insertLibraryUpdateErrorMessages.insert(
|
||||
libraryUpdateErrorMessage = LibraryUpdateErrorMessage(-1L, errorMessage),
|
||||
)
|
||||
|
||||
private suspend fun writeErrorsToDB(errors: List<Pair<Manga, String?>>) {
|
||||
deleteLibraryUpdateErrorMessages.await()
|
||||
deleteLibraryUpdateErrors.await()
|
||||
val libraryErrors = errors.groupBy({ it.second }, { it.first })
|
||||
val errorMessages = insertLibraryUpdateErrorMessages.insertAll(
|
||||
libraryUpdateErrorMessages = libraryErrors.keys.map { errorMessage ->
|
||||
LibraryUpdateErrorMessage(-1L, errorMessage.orEmpty())
|
||||
},
|
||||
insertLibraryUpdateErrors.upsert(
|
||||
LibraryUpdateError(id = -1L, mangaId = error.first.id, messageId = errorMessageId),
|
||||
)
|
||||
val errorList = mutableListOf<LibraryUpdateError>()
|
||||
errorMessages.forEach {
|
||||
libraryErrors[it.second]?.forEach { manga ->
|
||||
errorList.add(LibraryUpdateError(id = -1L, mangaId = manga.id, messageId = it.first))
|
||||
}
|
||||
}
|
||||
insertLibraryUpdateErrors.insertAll(errorList)
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
Reference in New Issue
Block a user