mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
refactor: Use Kermit instead of Timber
This commit is contained in:
parent
2218804d58
commit
555bcecfbc
66 changed files with 274 additions and 258 deletions
|
@ -248,7 +248,7 @@ dependencies {
|
|||
implementation(libs.bundles.coil)
|
||||
|
||||
// Logging
|
||||
implementation(libs.timber)
|
||||
implementation(libs.kermit)
|
||||
|
||||
// Sort
|
||||
implementation(libs.java.nat.sort)
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
package dev.yokai.data.library.custom
|
||||
|
||||
import android.database.sqlite.SQLiteException
|
||||
import co.touchlab.kermit.Logger
|
||||
import dev.yokai.data.DatabaseHandler
|
||||
import dev.yokai.domain.library.custom.CustomMangaRepository
|
||||
import dev.yokai.domain.library.custom.exception.SaveCustomMangaException
|
||||
import dev.yokai.domain.library.custom.model.CustomMangaInfo
|
||||
import eu.kanade.tachiyomi.util.system.e
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import timber.log.Timber
|
||||
|
||||
class CustomMangaRepositoryImpl(private val handler: DatabaseHandler) : CustomMangaRepository {
|
||||
override fun subscribeAll(): Flow<List<CustomMangaInfo>> =
|
||||
|
@ -27,7 +28,7 @@ class CustomMangaRepositoryImpl(private val handler: DatabaseHandler) : CustomMa
|
|||
try {
|
||||
handler.await { custom_manga_infoQueries.insert(mangaId, title, author, artist, description, genre, status?.toLong()) }
|
||||
} catch (exc: SQLiteException) {
|
||||
Timber.e(exc)
|
||||
Logger.e(exc)
|
||||
throw SaveCustomMangaException(exc)
|
||||
}
|
||||
}
|
||||
|
@ -48,7 +49,7 @@ class CustomMangaRepositoryImpl(private val handler: DatabaseHandler) : CustomMa
|
|||
}
|
||||
}
|
||||
} catch (exc: SQLiteException) {
|
||||
Timber.e(exc)
|
||||
Logger.e(exc)
|
||||
throw SaveCustomMangaException(exc)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
package dev.yokai.domain.extension.repo.interactor
|
||||
|
||||
import co.touchlab.kermit.Logger
|
||||
import dev.yokai.domain.extension.repo.ExtensionRepoRepository
|
||||
import dev.yokai.domain.extension.repo.exception.SaveExtensionRepoException
|
||||
import dev.yokai.domain.extension.repo.model.ExtensionRepo
|
||||
import dev.yokai.domain.extension.repo.service.ExtensionRepoService
|
||||
import eu.kanade.tachiyomi.network.NetworkHelper
|
||||
import okhttp3.OkHttpClient
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
|
||||
class CreateExtensionRepo(
|
||||
|
@ -41,7 +41,7 @@ class CreateExtensionRepo(
|
|||
)
|
||||
Result.Success
|
||||
} catch (e: SaveExtensionRepoException) {
|
||||
Timber.e(e, "SQL Conflict attempting to add new repository ${repo.baseUrl}")
|
||||
Logger.e(e) { "SQL Conflict attempting to add new repository ${repo.baseUrl}" }
|
||||
return handleInsertionError(repo)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -33,6 +33,10 @@ import coil3.request.crossfade
|
|||
import coil3.util.DebugLogger
|
||||
import com.google.firebase.crashlytics.ktx.crashlytics
|
||||
import com.google.firebase.ktx.Firebase
|
||||
import dev.yokai.core.di.AppModule
|
||||
import dev.yokai.core.di.DomainModule
|
||||
import dev.yokai.core.di.PreferenceModule
|
||||
import dev.yokai.domain.base.BasePreferences
|
||||
import eu.kanade.tachiyomi.appwidget.TachiyomiWidgetManager
|
||||
import eu.kanade.tachiyomi.data.coil.BufferedSourceFetcher
|
||||
import eu.kanade.tachiyomi.data.coil.CoilDiskCache
|
||||
|
@ -41,13 +45,7 @@ import eu.kanade.tachiyomi.data.coil.MangaCoverKeyer
|
|||
import eu.kanade.tachiyomi.data.coil.TachiyomiImageDecoder
|
||||
import eu.kanade.tachiyomi.data.notification.Notifications
|
||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||
import dev.yokai.core.di.AppModule
|
||||
import dev.yokai.core.di.DomainModule
|
||||
import dev.yokai.core.di.PreferenceModule
|
||||
import dev.yokai.domain.base.BasePreferences
|
||||
import eu.kanade.tachiyomi.network.NetworkHelper
|
||||
import eu.kanade.tachiyomi.ui.crash.CrashActivity
|
||||
import eu.kanade.tachiyomi.ui.crash.GlobalExceptionHandler
|
||||
import eu.kanade.tachiyomi.ui.library.LibraryPresenter
|
||||
import eu.kanade.tachiyomi.ui.recents.RecentsPresenter
|
||||
import eu.kanade.tachiyomi.ui.security.SecureActivityDelegate
|
||||
|
@ -60,7 +58,6 @@ import eu.kanade.tachiyomi.util.system.notification
|
|||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import org.conscrypt.Conscrypt
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
|
@ -77,8 +74,6 @@ open class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.F
|
|||
override fun onCreate() {
|
||||
super<Application>.onCreate()
|
||||
|
||||
if (BuildConfig.DEBUG) Timber.plant(Timber.DebugTree())
|
||||
|
||||
// TLS 1.3 support for Android 10 and below
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
|
||||
Security.insertProviderAt(Conscrypt.newProvider(), 1)
|
||||
|
|
|
@ -2,6 +2,7 @@ package eu.kanade.tachiyomi
|
|||
|
||||
import androidx.core.content.edit
|
||||
import androidx.preference.PreferenceManager
|
||||
import co.touchlab.kermit.Logger
|
||||
import dev.yokai.domain.base.BasePreferences
|
||||
import dev.yokai.domain.extension.repo.ExtensionRepoRepository
|
||||
import dev.yokai.domain.extension.repo.exception.SaveExtensionRepoException
|
||||
|
@ -31,7 +32,6 @@ import eu.kanade.tachiyomi.util.system.launchIO
|
|||
import eu.kanade.tachiyomi.util.system.toast
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
|
@ -328,7 +328,7 @@ object Migrations {
|
|||
"NOFINGERPRINT-${index + 1}",
|
||||
)
|
||||
} catch (e: SaveExtensionRepoException) {
|
||||
Timber.e(e, "Error Migrating Extension Repo with baseUrl: $source")
|
||||
Logger.e(e) { "Error Migrating Extension Repo with baseUrl: $source" }
|
||||
}
|
||||
}
|
||||
extensionRepos.delete()
|
||||
|
|
|
@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.core.preference
|
|||
import android.content.SharedPreferences
|
||||
import android.content.SharedPreferences.Editor
|
||||
import androidx.core.content.edit
|
||||
import co.touchlab.kermit.Logger
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.SharingStarted
|
||||
|
@ -12,7 +13,6 @@ import kotlinx.coroutines.flow.filter
|
|||
import kotlinx.coroutines.flow.map
|
||||
import kotlinx.coroutines.flow.onStart
|
||||
import kotlinx.coroutines.flow.stateIn
|
||||
import timber.log.Timber
|
||||
|
||||
sealed class AndroidPreference<T>(
|
||||
private val preferences: SharedPreferences,
|
||||
|
@ -33,7 +33,7 @@ sealed class AndroidPreference<T>(
|
|||
return try {
|
||||
read(preferences, key, defaultValue)
|
||||
} catch (e: ClassCastException) {
|
||||
Timber.d("Invalid value for $key; deleting")
|
||||
Logger.d { "Invalid value for $key; deleting" }
|
||||
delete()
|
||||
defaultValue
|
||||
}
|
||||
|
|
|
@ -2,9 +2,12 @@ package eu.kanade.tachiyomi.data.backup
|
|||
|
||||
import android.content.Context
|
||||
import android.net.Uri
|
||||
import co.touchlab.kermit.Logger
|
||||
import com.hippo.unifile.UniFile
|
||||
import dev.yokai.domain.storage.StorageManager
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.core.preference.Preference
|
||||
import eu.kanade.tachiyomi.core.preference.PreferenceStore
|
||||
import eu.kanade.tachiyomi.data.backup.BackupConst.BACKUP_APP_PREFS
|
||||
import eu.kanade.tachiyomi.data.backup.BackupConst.BACKUP_APP_PREFS_MASK
|
||||
import eu.kanade.tachiyomi.data.backup.BackupConst.BACKUP_CATEGORY
|
||||
|
@ -40,19 +43,17 @@ import eu.kanade.tachiyomi.data.backup.models.StringSetPreferenceValue
|
|||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||
import eu.kanade.tachiyomi.data.library.CustomMangaManager
|
||||
import eu.kanade.tachiyomi.core.preference.Preference
|
||||
import eu.kanade.tachiyomi.core.preference.PreferenceStore
|
||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||
import eu.kanade.tachiyomi.source.ConfigurableSource
|
||||
import eu.kanade.tachiyomi.source.SourceManager
|
||||
import eu.kanade.tachiyomi.source.preferenceKey
|
||||
import eu.kanade.tachiyomi.source.sourcePreferences
|
||||
import eu.kanade.tachiyomi.ui.library.LibrarySort
|
||||
import eu.kanade.tachiyomi.util.system.e
|
||||
import kotlinx.serialization.protobuf.ProtoBuf
|
||||
import okio.buffer
|
||||
import okio.gzip
|
||||
import okio.sink
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
|
@ -139,7 +140,7 @@ class BackupCreator(val context: Context) {
|
|||
|
||||
return fileUri.toString()
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e)
|
||||
Logger.e(e)
|
||||
file?.delete()
|
||||
throw e
|
||||
}
|
||||
|
|
|
@ -12,14 +12,14 @@ import androidx.work.WorkManager
|
|||
import androidx.work.Worker
|
||||
import androidx.work.WorkerParameters
|
||||
import androidx.work.workDataOf
|
||||
import co.touchlab.kermit.Logger
|
||||
import com.hippo.unifile.UniFile
|
||||
import dev.yokai.domain.storage.StorageManager
|
||||
import dev.yokai.domain.storage.StoragePreferences
|
||||
import eu.kanade.tachiyomi.data.notification.Notifications
|
||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||
import eu.kanade.tachiyomi.util.system.e
|
||||
import eu.kanade.tachiyomi.util.system.localeContext
|
||||
import eu.kanade.tachiyomi.util.system.notificationManager
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
|
@ -41,7 +41,7 @@ class BackupCreatorJob(private val context: Context, workerParams: WorkerParamet
|
|||
if (!isAutoBackup) notifier.showBackupComplete(UniFile.fromUri(context, location.toUri())!!)
|
||||
Result.success()
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e)
|
||||
Logger.e(e)
|
||||
if (!isAutoBackup) notifier.showBackupError(e.message)
|
||||
Result.failure()
|
||||
} finally {
|
||||
|
|
|
@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.data.cache
|
|||
|
||||
import android.content.Context
|
||||
import android.text.format.Formatter
|
||||
import co.touchlab.kermit.Logger
|
||||
import coil3.imageLoader
|
||||
import coil3.memory.MemoryCache
|
||||
import eu.kanade.tachiyomi.R
|
||||
|
@ -9,13 +10,13 @@ import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
|||
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||
import eu.kanade.tachiyomi.data.database.models.MangaImpl
|
||||
import eu.kanade.tachiyomi.util.storage.DiskUtil
|
||||
import eu.kanade.tachiyomi.util.system.e
|
||||
import eu.kanade.tachiyomi.util.system.executeOnIO
|
||||
import eu.kanade.tachiyomi.util.system.toast
|
||||
import eu.kanade.tachiyomi.util.system.withIOContext
|
||||
import eu.kanade.tachiyomi.util.system.withUIContext
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.withContext
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
import java.io.File
|
||||
|
@ -141,7 +142,7 @@ class CoverCache(val context: Context) {
|
|||
}
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e)
|
||||
Logger.e(e)
|
||||
}
|
||||
lastClean = System.currentTimeMillis()
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.data.coil
|
|||
|
||||
import android.webkit.MimeTypeMap
|
||||
import androidx.core.net.toUri
|
||||
import co.touchlab.kermit.Logger
|
||||
import coil3.Extras
|
||||
import coil3.ImageLoader
|
||||
import coil3.decode.DataSource
|
||||
|
@ -34,7 +35,6 @@ import okio.Source
|
|||
import okio.buffer
|
||||
import okio.sink
|
||||
import okio.source
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
import java.io.File
|
||||
import java.net.HttpURLConnection
|
||||
|
@ -200,7 +200,7 @@ class MangaCoverFetcher(
|
|||
}
|
||||
cacheFile.takeIf { it.exists() }
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e, "Failed to write snapshot data to cover cache ${cacheFile.name}")
|
||||
Logger.e(e) { "Failed to write snapshot data to cover cache ${cacheFile.name}" }
|
||||
null
|
||||
}
|
||||
}
|
||||
|
@ -213,7 +213,7 @@ class MangaCoverFetcher(
|
|||
}
|
||||
cacheFile.takeIf { it.exists() }
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e, "Failed to write response data to cover cache ${cacheFile.name}")
|
||||
Logger.e(e) { "Failed to write response data to cover cache ${cacheFile.name}" }
|
||||
null
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,8 +2,8 @@ package eu.kanade.tachiyomi.data.database
|
|||
|
||||
import androidx.sqlite.db.SupportSQLiteDatabase
|
||||
import app.cash.sqldelight.driver.android.AndroidSqliteDriver
|
||||
import co.touchlab.kermit.Logger
|
||||
import tachiyomi.data.Database
|
||||
import timber.log.Timber
|
||||
|
||||
class DbOpenCallback : AndroidSqliteDriver.Callback(Database.Schema) {
|
||||
|
||||
|
@ -28,13 +28,13 @@ class DbOpenCallback : AndroidSqliteDriver.Callback(Database.Schema) {
|
|||
}
|
||||
|
||||
override fun onCreate(db: SupportSQLiteDatabase) {
|
||||
Timber.d("Creating new database...")
|
||||
Logger.d { "Creating new database..." }
|
||||
super.onCreate(db)
|
||||
}
|
||||
|
||||
override fun onUpgrade(db: SupportSQLiteDatabase, oldVersion: Int, newVersion: Int) {
|
||||
if (oldVersion < newVersion) {
|
||||
Timber.d("Upgrading database from $oldVersion to $newVersion")
|
||||
Logger.d { "Upgrading database from $oldVersion to $newVersion" }
|
||||
super.onUpgrade(db, oldVersion, newVersion)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package eu.kanade.tachiyomi.data.download
|
||||
|
||||
import android.content.Context
|
||||
import co.touchlab.kermit.Logger
|
||||
import com.hippo.unifile.UniFile
|
||||
import dev.yokai.domain.download.DownloadPreferences
|
||||
import eu.kanade.tachiyomi.R
|
||||
|
@ -16,7 +17,6 @@ import kotlinx.coroutines.DelicateCoroutinesApi
|
|||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.GlobalScope
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
|
||||
/**
|
||||
|
@ -327,7 +327,7 @@ class DownloadManager(val context: Context) {
|
|||
mangaFolder.delete()
|
||||
cache.removeManga(manga)
|
||||
} else {
|
||||
Timber.e("Cache and download folder doesn't match for %s", manga.title)
|
||||
Logger.e { "Cache and download folder doesn't match for ${manga.title}" }
|
||||
}
|
||||
}
|
||||
return cleaned
|
||||
|
@ -395,7 +395,7 @@ class DownloadManager(val context: Context) {
|
|||
cache.removeChapters(listOf(oldChapter), manga)
|
||||
cache.addChapter(newName, manga)
|
||||
} else {
|
||||
Timber.e("Could not rename downloaded chapter: ${oldNames.joinToString()}")
|
||||
Logger.e { "Could not rename downloaded chapter: ${oldNames.joinToString()}" }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.data.download
|
|||
import android.content.Context
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import co.touchlab.kermit.Logger
|
||||
import com.hippo.unifile.UniFile
|
||||
import com.jakewharton.rxrelay.PublishRelay
|
||||
import dev.yokai.core.metadata.COMIC_INFO_FILE
|
||||
|
@ -27,6 +28,7 @@ import eu.kanade.tachiyomi.util.storage.DiskUtil
|
|||
import eu.kanade.tachiyomi.util.storage.DiskUtil.NOMEDIA_FILE
|
||||
import eu.kanade.tachiyomi.util.storage.saveTo
|
||||
import eu.kanade.tachiyomi.util.system.ImageUtil
|
||||
import eu.kanade.tachiyomi.util.system.e
|
||||
import eu.kanade.tachiyomi.util.system.launchIO
|
||||
import eu.kanade.tachiyomi.util.system.launchNow
|
||||
import eu.kanade.tachiyomi.util.system.withIOContext
|
||||
|
@ -49,7 +51,6 @@ import rx.Observable
|
|||
import rx.Subscription
|
||||
import rx.android.schedulers.AndroidSchedulers
|
||||
import rx.schedulers.Schedulers
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
import java.io.BufferedOutputStream
|
||||
import java.io.File
|
||||
|
@ -250,7 +251,7 @@ class Downloader(
|
|||
completeDownload(it)
|
||||
},
|
||||
{ error ->
|
||||
Timber.e(error)
|
||||
Logger.e(error)
|
||||
notifier.onError(error.message)
|
||||
stop()
|
||||
},
|
||||
|
@ -401,7 +402,7 @@ class Downloader(
|
|||
} catch (error: Throwable) {
|
||||
if (error is CancellationException) throw error
|
||||
// If the page list threw, it will resume here
|
||||
Timber.e(error)
|
||||
Logger.e(error)
|
||||
download.status = Download.State.ERROR
|
||||
notifier.onError(error.message, chapName, download.manga.title)
|
||||
}
|
||||
|
@ -560,7 +561,7 @@ class Downloader(
|
|||
return try {
|
||||
ImageUtil.splitTallImage(imageFile, imageFilePath)
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e)
|
||||
Logger.e(e)
|
||||
false
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ import androidx.work.WorkInfo
|
|||
import androidx.work.WorkManager
|
||||
import androidx.work.WorkQuery
|
||||
import androidx.work.WorkerParameters
|
||||
import co.touchlab.kermit.Logger
|
||||
import coil3.imageLoader
|
||||
import coil3.request.CachePolicy
|
||||
import coil3.request.ImageRequest
|
||||
|
@ -51,6 +52,7 @@ import eu.kanade.tachiyomi.util.manga.MangaShortcutManager
|
|||
import eu.kanade.tachiyomi.util.shouldDownloadNewChapters
|
||||
import eu.kanade.tachiyomi.util.storage.getUriCompat
|
||||
import eu.kanade.tachiyomi.util.system.createFileInCacheDir
|
||||
import eu.kanade.tachiyomi.util.system.e
|
||||
import eu.kanade.tachiyomi.util.system.isConnectedToWifi
|
||||
import eu.kanade.tachiyomi.util.system.localeContext
|
||||
import eu.kanade.tachiyomi.util.system.tryToSetForeground
|
||||
|
@ -71,12 +73,11 @@ import kotlinx.coroutines.launch
|
|||
import kotlinx.coroutines.runBlocking
|
||||
import kotlinx.coroutines.sync.Semaphore
|
||||
import kotlinx.coroutines.sync.withPermit
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
import java.io.File
|
||||
import java.lang.ref.WeakReference
|
||||
import java.util.Date
|
||||
import java.util.*
|
||||
import java.util.concurrent.CancellationException
|
||||
import java.util.concurrent.TimeUnit
|
||||
import java.util.concurrent.atomic.AtomicInteger
|
||||
|
@ -179,7 +180,7 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet
|
|||
finishUpdates(true)
|
||||
Result.success()
|
||||
} else {
|
||||
Timber.e(e)
|
||||
Logger.e(e)
|
||||
Result.failure()
|
||||
}
|
||||
} finally {
|
||||
|
@ -220,7 +221,7 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet
|
|||
try {
|
||||
requestSemaphore.withPermit { updateMangaInSource(source) }
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e)
|
||||
Logger.e(e)
|
||||
false
|
||||
}
|
||||
}
|
||||
|
@ -257,7 +258,7 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet
|
|||
val networkManga = try {
|
||||
source.getMangaDetails(manga.copy())
|
||||
} catch (e: java.lang.Exception) {
|
||||
Timber.e(e)
|
||||
Logger.e(e)
|
||||
null
|
||||
}
|
||||
if (networkManga != null) {
|
||||
|
@ -314,7 +315,7 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet
|
|||
syncChaptersWithTrackServiceTwoWay(db, db.getChapters(manga).executeAsBlocking(), track, service)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e)
|
||||
Logger.e(e)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -433,7 +434,7 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet
|
|||
} catch (e: Exception) {
|
||||
if (e !is CancellationException) {
|
||||
failedUpdates[manga] = e.message
|
||||
Timber.e("Failed updating: ${manga.title}: $e")
|
||||
Logger.e { "Failed updating: ${manga.title}: $e" }
|
||||
}
|
||||
return@coroutineScope false
|
||||
}
|
||||
|
|
|
@ -9,11 +9,12 @@ import androidx.work.NetworkType
|
|||
import androidx.work.OneTimeWorkRequestBuilder
|
||||
import androidx.work.WorkManager
|
||||
import androidx.work.WorkerParameters
|
||||
import co.touchlab.kermit.Logger
|
||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||
import eu.kanade.tachiyomi.util.system.e
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.withContext
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
@ -51,7 +52,7 @@ class DelayedTrackingUpdateJob(context: Context, workerParams: WorkerParameters)
|
|||
service.update(track, true)
|
||||
db.insertTrack(track).executeAsBlocking()
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e)
|
||||
Logger.e(e)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,14 +3,14 @@ package eu.kanade.tachiyomi.data.track.anilist
|
|||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
import androidx.annotation.StringRes
|
||||
import co.touchlab.kermit.Logger
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.database.models.Track
|
||||
import eu.kanade.tachiyomi.data.track.TrackService
|
||||
import eu.kanade.tachiyomi.data.track.updateNewTrackInfo
|
||||
import kotlinx.serialization.decodeFromString
|
||||
import eu.kanade.tachiyomi.util.system.e
|
||||
import kotlinx.serialization.encodeToString
|
||||
import kotlinx.serialization.json.Json
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
|
||||
class Anilist(private val context: Context, id: Int) : TrackService(id) {
|
||||
|
@ -210,7 +210,7 @@ class Anilist(private val context: Context, id: Int) : TrackService(id) {
|
|||
saveCredentials(username.toString(), oauth.access_token)
|
||||
true
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e)
|
||||
Logger.e(e)
|
||||
logout()
|
||||
false
|
||||
}
|
||||
|
@ -222,7 +222,7 @@ class Anilist(private val context: Context, id: Int) : TrackService(id) {
|
|||
scorePreference.set(scoreType)
|
||||
true to null
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e)
|
||||
Logger.e(e)
|
||||
false to e
|
||||
}
|
||||
}
|
||||
|
@ -241,7 +241,7 @@ class Anilist(private val context: Context, id: Int) : TrackService(id) {
|
|||
return try {
|
||||
json.decodeFromString<OAuth>(trackPreferences.trackToken(this).get())
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e)
|
||||
Logger.e(e)
|
||||
null
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,15 +3,15 @@ package eu.kanade.tachiyomi.data.track.bangumi
|
|||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
import androidx.annotation.StringRes
|
||||
import co.touchlab.kermit.Logger
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.database.models.Track
|
||||
import eu.kanade.tachiyomi.data.track.TrackService
|
||||
import eu.kanade.tachiyomi.data.track.model.TrackSearch
|
||||
import eu.kanade.tachiyomi.data.track.updateNewTrackInfo
|
||||
import kotlinx.serialization.decodeFromString
|
||||
import eu.kanade.tachiyomi.util.system.e
|
||||
import kotlinx.serialization.encodeToString
|
||||
import kotlinx.serialization.json.Json
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
|
||||
class Bangumi(private val context: Context, id: Int) : TrackService(id) {
|
||||
|
@ -122,7 +122,7 @@ class Bangumi(private val context: Context, id: Int) : TrackService(id) {
|
|||
saveCredentials(oauth.user_id.toString(), oauth.access_token)
|
||||
return true
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e)
|
||||
Logger.e(e)
|
||||
logout()
|
||||
}
|
||||
return false
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package eu.kanade.tachiyomi.data.track.kavita
|
||||
|
||||
import co.touchlab.kermit.Logger
|
||||
import eu.kanade.tachiyomi.data.database.models.Track
|
||||
import eu.kanade.tachiyomi.data.track.model.TrackSearch
|
||||
import eu.kanade.tachiyomi.network.GET
|
||||
|
@ -12,7 +13,6 @@ import okhttp3.Dns
|
|||
import okhttp3.MediaType.Companion.toMediaTypeOrNull
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.RequestBody.Companion.toRequestBody
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
import java.io.IOException
|
||||
import java.net.SocketTimeoutException
|
||||
|
@ -46,11 +46,11 @@ class KavitaApi(private val client: OkHttpClient, interceptor: KavitaInterceptor
|
|||
when (it.code) {
|
||||
200 -> return with(json) { it.parseAs<AuthenticationDto>().token }
|
||||
401 -> {
|
||||
Timber.w("Unauthorized / api key not valid: Cleaned api URL: $apiUrl, Api key is empty: ${apiKey.isEmpty()}")
|
||||
Logger.w { "Unauthorized / api key not valid: Cleaned api URL: $apiUrl, Api key is empty: ${apiKey.isEmpty()}" }
|
||||
throw IOException("Unauthorized / api key not valid")
|
||||
}
|
||||
500 -> {
|
||||
Timber.w("Error fetching JWT token. Cleaned api URL: $apiUrl, Api key is empty: ${apiKey.isEmpty()}")
|
||||
Logger.w { "Error fetching JWT token. Cleaned api URL: $apiUrl, Api key is empty: ${apiKey.isEmpty()}" }
|
||||
throw IOException("Error fetching JWT token")
|
||||
}
|
||||
else -> {}
|
||||
|
@ -58,14 +58,14 @@ class KavitaApi(private val client: OkHttpClient, interceptor: KavitaInterceptor
|
|||
}
|
||||
// Not sure which one to catch
|
||||
} catch (e: SocketTimeoutException) {
|
||||
Timber.w(
|
||||
"Could not fetch JWT token. Probably due to connectivity issue or the url '$apiUrl' is not available, skipping",
|
||||
)
|
||||
Logger.w {
|
||||
"Could not fetch JWT token. Probably due to connectivity issue or the url '$apiUrl' is not available, skipping"
|
||||
}
|
||||
return null
|
||||
} catch (e: Exception) {
|
||||
Timber.e(
|
||||
"Unhandled exception fetching JWT token for url: '$apiUrl'",
|
||||
)
|
||||
Logger.e {
|
||||
"Unhandled exception fetching JWT token for url: '$apiUrl'"
|
||||
}
|
||||
throw IOException(e)
|
||||
}
|
||||
|
||||
|
@ -106,7 +106,7 @@ class KavitaApi(private val client: OkHttpClient, interceptor: KavitaInterceptor
|
|||
|
||||
return if (maxChapterNumber > volumeNumber) maxChapterNumber else volumeNumber
|
||||
} catch (e: Exception) {
|
||||
Timber.w(e, "Exception fetching Total Chapters. Request:$requestUrl")
|
||||
Logger.w(e) { "Exception fetching Total Chapters. Request:$requestUrl" }
|
||||
throw e
|
||||
}
|
||||
}
|
||||
|
@ -126,7 +126,7 @@ class KavitaApi(private val client: OkHttpClient, interceptor: KavitaInterceptor
|
|||
}
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Timber.w(e, "Exception getting latest chapter read. Could not get itemRequest: $requestUrl")
|
||||
Logger.w(e) { "Exception getting latest chapter read. Could not get itemRequest: $requestUrl" }
|
||||
throw e
|
||||
}
|
||||
return 0F
|
||||
|
@ -155,7 +155,7 @@ class KavitaApi(private val client: OkHttpClient, interceptor: KavitaInterceptor
|
|||
last_chapter_read = getLatestChapterRead(url)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Timber.w(e, "Could not get item: $url")
|
||||
Logger.w(e) { "Could not get item: $url" }
|
||||
throw e
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,15 +3,15 @@ package eu.kanade.tachiyomi.data.track.kitsu
|
|||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
import androidx.annotation.StringRes
|
||||
import co.touchlab.kermit.Logger
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.database.models.Track
|
||||
import eu.kanade.tachiyomi.data.track.TrackService
|
||||
import eu.kanade.tachiyomi.data.track.model.TrackSearch
|
||||
import eu.kanade.tachiyomi.data.track.updateNewTrackInfo
|
||||
import kotlinx.serialization.decodeFromString
|
||||
import eu.kanade.tachiyomi.util.system.e
|
||||
import kotlinx.serialization.encodeToString
|
||||
import kotlinx.serialization.json.Json
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
import java.text.DecimalFormat
|
||||
|
||||
|
@ -139,7 +139,7 @@ class Kitsu(private val context: Context, id: Int) : TrackService(id) {
|
|||
saveCredentials(username, userId)
|
||||
true
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e)
|
||||
Logger.e(e)
|
||||
false
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package eu.kanade.tachiyomi.data.track.komga
|
||||
|
||||
import co.touchlab.kermit.Logger
|
||||
import eu.kanade.tachiyomi.data.database.models.Track
|
||||
import eu.kanade.tachiyomi.data.track.TrackManager
|
||||
import eu.kanade.tachiyomi.data.track.model.TrackSearch
|
||||
|
@ -13,7 +14,6 @@ import okhttp3.MediaType.Companion.toMediaType
|
|||
import okhttp3.OkHttpClient
|
||||
import okhttp3.Request
|
||||
import okhttp3.RequestBody.Companion.toRequestBody
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
|
||||
const val READLIST_API = "/api/v1/readlists"
|
||||
|
@ -72,7 +72,7 @@ class KomgaApi(private val client: OkHttpClient) {
|
|||
last_chapter_read = progress.lastReadContinuousNumberSort
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Timber.w(e, "Could not get item: $url")
|
||||
Logger.w(e) { "Could not get item: $url" }
|
||||
throw e
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package eu.kanade.tachiyomi.data.track.mangaupdates
|
||||
|
||||
import co.touchlab.kermit.Logger
|
||||
import eu.kanade.tachiyomi.data.database.models.Track
|
||||
import eu.kanade.tachiyomi.data.track.mangaupdates.dto.Context
|
||||
import eu.kanade.tachiyomi.data.track.mangaupdates.dto.ListItem
|
||||
|
@ -11,6 +12,7 @@ import eu.kanade.tachiyomi.network.POST
|
|||
import eu.kanade.tachiyomi.network.PUT
|
||||
import eu.kanade.tachiyomi.network.awaitSuccess
|
||||
import eu.kanade.tachiyomi.network.parseAs
|
||||
import eu.kanade.tachiyomi.util.system.e
|
||||
import kotlinx.serialization.json.Json
|
||||
import kotlinx.serialization.json.JsonObject
|
||||
import kotlinx.serialization.json.add
|
||||
|
@ -25,7 +27,6 @@ import kotlinx.serialization.json.putJsonObject
|
|||
import okhttp3.MediaType.Companion.toMediaType
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.RequestBody.Companion.toRequestBody
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
|
||||
class MangaUpdatesApi(
|
||||
|
@ -193,7 +194,7 @@ class MangaUpdatesApi(
|
|||
try {
|
||||
json.decodeFromJsonElement<Context>(obj["context"]!!)
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e)
|
||||
Logger.e(e)
|
||||
null
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,14 +3,15 @@ package eu.kanade.tachiyomi.data.track.myanimelist
|
|||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
import androidx.annotation.StringRes
|
||||
import co.touchlab.kermit.Logger
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.database.models.Track
|
||||
import eu.kanade.tachiyomi.data.track.TrackService
|
||||
import eu.kanade.tachiyomi.data.track.model.TrackSearch
|
||||
import eu.kanade.tachiyomi.data.track.updateNewTrackInfo
|
||||
import eu.kanade.tachiyomi.util.system.e
|
||||
import kotlinx.serialization.encodeToString
|
||||
import kotlinx.serialization.json.Json
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
|
||||
class MyAnimeList(private val context: Context, id: Int) : TrackService(id) {
|
||||
|
@ -129,7 +130,7 @@ class MyAnimeList(private val context: Context, id: Int) : TrackService(id) {
|
|||
saveCredentials(username, oauth.access_token)
|
||||
true
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e)
|
||||
Logger.e(e)
|
||||
logout()
|
||||
false
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.data.track.myanimelist
|
|||
|
||||
import android.net.Uri
|
||||
import androidx.core.net.toUri
|
||||
import co.touchlab.kermit.Logger
|
||||
import eu.kanade.tachiyomi.data.database.models.Track
|
||||
import eu.kanade.tachiyomi.data.track.TrackManager
|
||||
import eu.kanade.tachiyomi.data.track.model.TrackSearch
|
||||
|
@ -10,6 +11,7 @@ import eu.kanade.tachiyomi.network.POST
|
|||
import eu.kanade.tachiyomi.network.awaitSuccess
|
||||
import eu.kanade.tachiyomi.network.parseAs
|
||||
import eu.kanade.tachiyomi.util.PkceUtil
|
||||
import eu.kanade.tachiyomi.util.system.w
|
||||
import eu.kanade.tachiyomi.util.system.withIOContext
|
||||
import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.awaitAll
|
||||
|
@ -28,10 +30,9 @@ import okhttp3.Headers
|
|||
import okhttp3.OkHttpClient
|
||||
import okhttp3.Request
|
||||
import okhttp3.RequestBody
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Locale
|
||||
import java.util.*
|
||||
|
||||
class MyAnimeListApi(private val client: OkHttpClient, interceptor: MyAnimeListInterceptor) {
|
||||
|
||||
|
@ -270,7 +271,7 @@ class MyAnimeListApi(private val client: OkHttpClient, interceptor: MyAnimeListI
|
|||
authClient.newCall(request).awaitSuccess()
|
||||
true
|
||||
} catch (e: Exception) {
|
||||
Timber.w(e)
|
||||
Logger.w(e)
|
||||
false
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,14 +3,14 @@ package eu.kanade.tachiyomi.data.track.shikimori
|
|||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
import androidx.annotation.StringRes
|
||||
import co.touchlab.kermit.Logger
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.database.models.Track
|
||||
import eu.kanade.tachiyomi.data.track.TrackService
|
||||
import eu.kanade.tachiyomi.data.track.updateNewTrackInfo
|
||||
import kotlinx.serialization.decodeFromString
|
||||
import eu.kanade.tachiyomi.util.system.e
|
||||
import kotlinx.serialization.encodeToString
|
||||
import kotlinx.serialization.json.Json
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
|
||||
class Shikimori(private val context: Context, id: Int) : TrackService(id) {
|
||||
|
@ -122,7 +122,7 @@ class Shikimori(private val context: Context, id: Int) : TrackService(id) {
|
|||
saveCredentials(user.toString(), oauth.access_token)
|
||||
true
|
||||
} catch (e: java.lang.Exception) {
|
||||
Timber.e(e)
|
||||
Logger.e(e)
|
||||
logout()
|
||||
false
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.data.track.shikimori
|
|||
|
||||
import android.net.Uri
|
||||
import androidx.core.net.toUri
|
||||
import co.touchlab.kermit.Logger
|
||||
import eu.kanade.tachiyomi.data.database.models.Track
|
||||
import eu.kanade.tachiyomi.data.track.TrackManager
|
||||
import eu.kanade.tachiyomi.data.track.model.TrackSearch
|
||||
|
@ -11,6 +12,7 @@ import eu.kanade.tachiyomi.network.POST
|
|||
import eu.kanade.tachiyomi.network.awaitSuccess
|
||||
import eu.kanade.tachiyomi.network.jsonMime
|
||||
import eu.kanade.tachiyomi.network.parseAs
|
||||
import eu.kanade.tachiyomi.util.system.w
|
||||
import eu.kanade.tachiyomi.util.system.withIOContext
|
||||
import kotlinx.serialization.json.Json
|
||||
import kotlinx.serialization.json.JsonArray
|
||||
|
@ -27,7 +29,6 @@ import kotlinx.serialization.json.putJsonObject
|
|||
import okhttp3.FormBody
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.RequestBody.Companion.toRequestBody
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
|
||||
class ShikimoriApi(private val client: OkHttpClient, interceptor: ShikimoriInterceptor) {
|
||||
|
@ -89,7 +90,7 @@ class ShikimoriApi(private val client: OkHttpClient, interceptor: ShikimoriInter
|
|||
authClient.newCall(DELETE(url)).awaitSuccess()
|
||||
true
|
||||
} catch (e: Exception) {
|
||||
Timber.w(e)
|
||||
Logger.w(e)
|
||||
false
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ import androidx.work.OneTimeWorkRequestBuilder
|
|||
import androidx.work.OutOfQuotaPolicy
|
||||
import androidx.work.WorkManager
|
||||
import androidx.work.WorkerParameters
|
||||
import co.touchlab.kermit.Logger
|
||||
import eu.kanade.tachiyomi.BuildConfig
|
||||
import eu.kanade.tachiyomi.data.notification.Notifications
|
||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||
|
@ -30,6 +31,7 @@ import eu.kanade.tachiyomi.network.newCachelessCallWithProgress
|
|||
import eu.kanade.tachiyomi.util.storage.getUriCompat
|
||||
import eu.kanade.tachiyomi.util.storage.saveTo
|
||||
import eu.kanade.tachiyomi.util.system.connectivityManager
|
||||
import eu.kanade.tachiyomi.util.system.e
|
||||
import eu.kanade.tachiyomi.util.system.jobIsRunning
|
||||
import eu.kanade.tachiyomi.util.system.launchUI
|
||||
import eu.kanade.tachiyomi.util.system.localeContext
|
||||
|
@ -48,7 +50,6 @@ import kotlinx.coroutines.withContext
|
|||
import okhttp3.Call
|
||||
import okhttp3.internal.http2.ErrorCode
|
||||
import okhttp3.internal.http2.StreamResetException
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
|
@ -166,7 +167,7 @@ class AppDownloadInstallJob(private val context: Context, workerParams: WorkerPa
|
|||
notifier.onDownloadFinished(apkFile.getUriCompat(context))
|
||||
}
|
||||
} catch (error: Exception) {
|
||||
Timber.e(error)
|
||||
Logger.e(error)
|
||||
if (error is CancellationException || isStopped ||
|
||||
(error is StreamResetException && error.errorCode == ErrorCode.CANCEL)
|
||||
) {
|
||||
|
|
|
@ -9,10 +9,11 @@ import androidx.work.NetworkType
|
|||
import androidx.work.PeriodicWorkRequestBuilder
|
||||
import androidx.work.WorkManager
|
||||
import androidx.work.WorkerParameters
|
||||
import co.touchlab.kermit.Logger
|
||||
import eu.kanade.tachiyomi.data.notification.Notifications
|
||||
import eu.kanade.tachiyomi.util.system.e
|
||||
import eu.kanade.tachiyomi.util.system.notificationManager
|
||||
import kotlinx.coroutines.coroutineScope
|
||||
import timber.log.Timber
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
class AppUpdateJob(private val context: Context, workerParams: WorkerParameters) :
|
||||
|
@ -23,7 +24,7 @@ class AppUpdateJob(private val context: Context, workerParams: WorkerParameters)
|
|||
AppUpdateChecker().checkForUpdate(context)
|
||||
Result.success()
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e)
|
||||
Logger.e(e)
|
||||
Result.failure()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ import androidx.work.WorkInfo
|
|||
import androidx.work.WorkManager
|
||||
import androidx.work.WorkerParameters
|
||||
import androidx.work.workDataOf
|
||||
import co.touchlab.kermit.Logger
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.notification.Notifications
|
||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||
|
@ -35,10 +36,8 @@ import kotlinx.coroutines.launch
|
|||
import kotlinx.coroutines.sync.Semaphore
|
||||
import kotlinx.coroutines.sync.withPermit
|
||||
import kotlinx.coroutines.withContext
|
||||
import kotlinx.serialization.decodeFromString
|
||||
import kotlinx.serialization.encodeToString
|
||||
import kotlinx.serialization.json.Json
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
import java.lang.ref.WeakReference
|
||||
|
@ -88,7 +87,7 @@ class ExtensionInstallerJob(val context: Context, workerParams: WorkerParameters
|
|||
val infos = try {
|
||||
Json.decodeFromString<Array<ExtensionManager.ExtensionInfo>>(json)
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e, "Cannot decode string")
|
||||
Logger.e(e) { "Cannot decode string" }
|
||||
null
|
||||
} ?: return Result.failure()
|
||||
val list = infos.filter {
|
||||
|
|
|
@ -4,6 +4,7 @@ import android.content.Context
|
|||
import android.graphics.drawable.Drawable
|
||||
import android.os.Build
|
||||
import android.os.Parcelable
|
||||
import co.touchlab.kermit.Logger
|
||||
import dev.yokai.domain.base.BasePreferences
|
||||
import dev.yokai.domain.extension.interactor.TrustExtension
|
||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||
|
@ -16,6 +17,7 @@ import eu.kanade.tachiyomi.extension.util.ExtensionInstaller
|
|||
import eu.kanade.tachiyomi.extension.util.ExtensionLoader
|
||||
import eu.kanade.tachiyomi.source.Source
|
||||
import eu.kanade.tachiyomi.ui.extension.ExtensionIntallInfo
|
||||
import eu.kanade.tachiyomi.util.system.e
|
||||
import eu.kanade.tachiyomi.util.system.launchNow
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.async
|
||||
|
@ -23,10 +25,9 @@ import kotlinx.coroutines.flow.Flow
|
|||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.asStateFlow
|
||||
import kotlinx.parcelize.Parcelize
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
import java.util.Locale
|
||||
import java.util.*
|
||||
|
||||
/**
|
||||
* The manager of extensions installed as another apk which extend the available sources. It handles
|
||||
|
@ -133,7 +134,7 @@ class ExtensionManager(
|
|||
val extensions: List<Extension.Available> = try {
|
||||
api.findExtensions()
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e)
|
||||
Logger.e(e)
|
||||
emptyList()
|
||||
}
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ import android.content.pm.PackageManager
|
|||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager
|
||||
import co.touchlab.kermit.Logger
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.extension.util.ExtensionInstaller.Companion.EXTRA_DOWNLOAD_ID
|
||||
import eu.kanade.tachiyomi.util.system.getUriSize
|
||||
|
@ -18,11 +19,10 @@ import kotlinx.coroutines.cancel
|
|||
import kotlinx.coroutines.launch
|
||||
import rikka.shizuku.Shizuku
|
||||
import rikka.sui.Sui
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
import java.io.BufferedReader
|
||||
import java.io.InputStream
|
||||
import java.util.Collections
|
||||
import java.util.*
|
||||
import java.util.concurrent.atomic.AtomicReference
|
||||
|
||||
class ShizukuInstaller(private val context: Context, val finishedQueue: (ShizukuInstaller) -> Unit) {
|
||||
|
@ -43,7 +43,7 @@ class ShizukuInstaller(private val context: Context, val finishedQueue: (Shizuku
|
|||
private val queue = Collections.synchronizedList(mutableListOf<Entry>())
|
||||
|
||||
private val shizukuDeadListener = Shizuku.OnBinderDeadListener {
|
||||
Timber.d("Shizuku was killed prematurely")
|
||||
Logger.d { "Shizuku was killed prematurely" }
|
||||
finishedQueue(this)
|
||||
}
|
||||
|
||||
|
@ -110,7 +110,7 @@ class ShizukuInstaller(private val context: Context, val finishedQueue: (Shizuku
|
|||
continueQueue(true)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e, "Failed to install extension ${entry.downloadId} ${entry.uri}")
|
||||
Logger.e(e) { "Failed to install extension ${entry.downloadId} ${entry.uri}" }
|
||||
if (sessionId != null) {
|
||||
exec("pm install-abandon $sessionId")
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package eu.kanade.tachiyomi.extension.api
|
||||
|
||||
import android.content.Context
|
||||
import co.touchlab.kermit.Logger
|
||||
import dev.yokai.domain.extension.repo.interactor.GetExtensionRepo
|
||||
import dev.yokai.domain.extension.repo.interactor.UpdateExtensionRepo
|
||||
import dev.yokai.domain.extension.repo.model.ExtensionRepo
|
||||
|
@ -17,7 +18,6 @@ import kotlinx.coroutines.async
|
|||
import kotlinx.coroutines.awaitAll
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.json.Json
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
|
@ -53,7 +53,7 @@ internal class ExtensionApi {
|
|||
.toExtensions(repoBaseUrl)
|
||||
}
|
||||
} catch (e: Throwable) {
|
||||
Timber.e(e, "Failed to get extensions from $repoBaseUrl")
|
||||
Logger.e(e) { "Failed to get extensions from $repoBaseUrl" }
|
||||
emptyList()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@ import android.os.Build
|
|||
import android.os.Environment
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.net.toUri
|
||||
import co.touchlab.kermit.Logger
|
||||
import dev.yokai.domain.base.BasePreferences
|
||||
import eu.kanade.tachiyomi.extension.ExtensionInstallerJob
|
||||
import eu.kanade.tachiyomi.extension.ExtensionManager
|
||||
|
@ -42,7 +43,6 @@ import kotlinx.coroutines.flow.onCompletion
|
|||
import kotlinx.coroutines.flow.takeWhile
|
||||
import kotlinx.coroutines.flow.transformWhile
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
|
@ -156,7 +156,7 @@ internal class ExtensionInstaller(private val context: Context) {
|
|||
}
|
||||
.flowOn(Dispatchers.IO)
|
||||
.catch { e ->
|
||||
Timber.e(e)
|
||||
Logger.e(e)
|
||||
emit(InstallStep.Error to null)
|
||||
}
|
||||
.onCompletion {
|
||||
|
@ -246,7 +246,7 @@ internal class ExtensionInstaller(private val context: Context) {
|
|||
}
|
||||
}
|
||||
.catch {
|
||||
Timber.e(it)
|
||||
Logger.e(it)
|
||||
}
|
||||
.onCompletion {
|
||||
deleteDownload(pkgName)
|
||||
|
@ -319,7 +319,7 @@ internal class ExtensionInstaller(private val context: Context) {
|
|||
setInstallationResult(pkgName, false)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e, "Failed to read downloaded extension file.")
|
||||
Logger.e(e) { "Failed to read downloaded extension file." }
|
||||
setInstallationResult(pkgName, false)
|
||||
}
|
||||
|
||||
|
@ -454,7 +454,7 @@ internal class ExtensionInstaller(private val context: Context) {
|
|||
if (uri != null && pkgName != null) {
|
||||
emitToFlow(pkgName, ExtensionIntallInfo(InstallStep.Loading, null))
|
||||
} else if (pkgName != null) {
|
||||
Timber.e("Couldn't locate downloaded APK")
|
||||
Logger.e { "Couldn't locate downloaded APK" }
|
||||
emitToFlow(pkgName, ExtensionIntallInfo(InstallStep.Error, null))
|
||||
return
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ import android.content.pm.PackageInfo
|
|||
import android.content.pm.PackageManager
|
||||
import android.os.Build
|
||||
import androidx.core.content.pm.PackageInfoCompat
|
||||
import co.touchlab.kermit.Logger
|
||||
import dalvik.system.PathClassLoader
|
||||
import dev.yokai.domain.extension.interactor.TrustExtension
|
||||
import eu.kanade.tachiyomi.BuildConfig
|
||||
|
@ -21,7 +22,6 @@ import eu.kanade.tachiyomi.util.system.withIOContext
|
|||
import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.awaitAll
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
import java.io.File
|
||||
import java.nio.file.Files
|
||||
|
@ -67,18 +67,18 @@ internal object ExtensionLoader {
|
|||
if (PackageInfoCompat.getLongVersionCode(extension) <
|
||||
PackageInfoCompat.getLongVersionCode(currentExtension)
|
||||
) {
|
||||
Timber.e("Installed extension version is higher. Downgrading is not allowed.")
|
||||
Logger.e { "Installed extension version is higher. Downgrading is not allowed." }
|
||||
return false
|
||||
}
|
||||
|
||||
val extensionSignatures = getSignatures(extension)
|
||||
if (extensionSignatures.isNullOrEmpty()) {
|
||||
Timber.e("Extension to be installed is not signed.")
|
||||
Logger.e { "Extension to be installed is not signed." }
|
||||
return false
|
||||
}
|
||||
|
||||
if (!extensionSignatures.containsAll(getSignatures(currentExtension)!!)) {
|
||||
Timber.e("Installed extension signature is not matched.")
|
||||
Logger.e { "Installed extension signature is not matched." }
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
@ -93,7 +93,7 @@ internal object ExtensionLoader {
|
|||
}
|
||||
true
|
||||
} catch (e: Exception) {
|
||||
Timber.e("Failed to copy extension file.")
|
||||
Logger.e { "Failed to copy extension file." }
|
||||
target.delete()
|
||||
false
|
||||
}
|
||||
|
@ -177,7 +177,7 @@ internal object ExtensionLoader {
|
|||
suspend fun loadExtensionFromPkgName(context: Context, pkgName: String): LoadResult {
|
||||
val extensionPackage = getExtensionInfoFromPkgName(context, pkgName)
|
||||
if (extensionPackage == null) {
|
||||
Timber.e("Extension package is not found ($pkgName)")
|
||||
Logger.e { "Extension package is not found ($pkgName)" }
|
||||
return LoadResult.Error
|
||||
}
|
||||
return loadExtension(context, extensionPackage)
|
||||
|
@ -285,22 +285,22 @@ internal object ExtensionLoader {
|
|||
val versionCode = PackageInfoCompat.getLongVersionCode(pkgInfo)
|
||||
|
||||
if (versionName.isNullOrEmpty()) {
|
||||
Timber.w("Missing versionName for extension $extName")
|
||||
Logger.w { "Missing versionName for extension $extName" }
|
||||
return LoadResult.Error
|
||||
}
|
||||
|
||||
// Validate lib version
|
||||
val libVersion = versionName.substringBeforeLast('.').toDoubleOrNull()
|
||||
if (libVersion == null || libVersion < LIB_VERSION_MIN || libVersion > LIB_VERSION_MAX) {
|
||||
Timber.w(
|
||||
"Lib version is $libVersion, while only versions $LIB_VERSION_MIN to $LIB_VERSION_MAX are allowed",
|
||||
)
|
||||
Logger.w {
|
||||
"Lib version is $libVersion, while only versions $LIB_VERSION_MIN to $LIB_VERSION_MAX are allowed"
|
||||
}
|
||||
return LoadResult.Error
|
||||
}
|
||||
|
||||
val signatures = getSignatures(pkgInfo)
|
||||
if (signatures.isNullOrEmpty()) {
|
||||
Timber.w("Package $pkgName isn't signed")
|
||||
Logger.w { "Package $pkgName isn't signed" }
|
||||
return LoadResult.Error
|
||||
} else if (!trustExtension.isTrusted(pkgInfo, signatures)) {
|
||||
val extension = Extension.Untrusted(
|
||||
|
@ -311,13 +311,13 @@ internal object ExtensionLoader {
|
|||
libVersion,
|
||||
signatures.last(),
|
||||
)
|
||||
Timber.w("Extension $pkgName isn't trusted")
|
||||
Logger.w { "Extension $pkgName isn't trusted" }
|
||||
return LoadResult.Untrusted(extension)
|
||||
}
|
||||
|
||||
val isNsfw = appInfo.metaData.getInt(METADATA_NSFW) == 1
|
||||
if (!loadNsfwSource && isNsfw) {
|
||||
Timber.w("NSFW extension $pkgName not allowed")
|
||||
Logger.w { "NSFW extension $pkgName not allowed" }
|
||||
return LoadResult.Error
|
||||
}
|
||||
|
||||
|
@ -344,7 +344,7 @@ internal object ExtensionLoader {
|
|||
else -> throw Exception("Unknown source class type! ${obj.javaClass}")
|
||||
}
|
||||
} catch (e: Throwable) {
|
||||
Timber.e(e, "Extension load error: $extName.")
|
||||
Logger.e(e) { "Extension load error: $extName." }
|
||||
return LoadResult.Error
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.source
|
|||
|
||||
import android.content.Context
|
||||
import androidx.core.net.toFile
|
||||
import co.touchlab.kermit.Logger
|
||||
import com.github.junrar.Archive
|
||||
import com.hippo.unifile.UniFile
|
||||
import dev.yokai.core.metadata.COMIC_INFO_FILE
|
||||
|
@ -19,6 +20,7 @@ import eu.kanade.tachiyomi.util.chapter.ChapterRecognition
|
|||
import eu.kanade.tachiyomi.util.lang.compareToCaseInsensitiveNaturalOrder
|
||||
import eu.kanade.tachiyomi.util.storage.EpubFile
|
||||
import eu.kanade.tachiyomi.util.system.ImageUtil
|
||||
import eu.kanade.tachiyomi.util.system.e
|
||||
import eu.kanade.tachiyomi.util.system.extension
|
||||
import eu.kanade.tachiyomi.util.system.nameWithoutExtension
|
||||
import eu.kanade.tachiyomi.util.system.openReadOnlyChannel
|
||||
|
@ -32,7 +34,6 @@ import kotlinx.serialization.json.Json
|
|||
import kotlinx.serialization.json.decodeFromStream
|
||||
import nl.adaptivity.xmlutil.AndroidXmlReader
|
||||
import nl.adaptivity.xmlutil.serialization.XML
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
|
@ -194,7 +195,7 @@ class LocalSource(private val context: Context) : CatalogueSource, UnmeteredSour
|
|||
val dest = updateCover(chapter, manga)
|
||||
thumbnail_url = dest?.filePath
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e)
|
||||
Logger.e(e)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -226,7 +227,7 @@ class LocalSource(private val context: Context) : CatalogueSource, UnmeteredSour
|
|||
return@withIOContext rt
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e)
|
||||
Logger.e(e)
|
||||
}
|
||||
|
||||
return@withIOContext manga
|
||||
|
@ -382,7 +383,7 @@ class LocalSource(private val context: Context) : CatalogueSource, UnmeteredSour
|
|||
}
|
||||
}
|
||||
} catch (e: Throwable) {
|
||||
Timber.e(e, "Error updating cover for ${manga.title}")
|
||||
Logger.e(e) { "Error updating cover for ${manga.title}" }
|
||||
null
|
||||
}
|
||||
}
|
||||
|
@ -420,7 +421,7 @@ class LocalSource(private val context: Context) : CatalogueSource, UnmeteredSour
|
|||
}
|
||||
}
|
||||
} catch (e: Throwable) {
|
||||
Timber.e(e, "Error updating a metadata")
|
||||
Logger.e(e) { "Error updating a metadata" }
|
||||
false
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package eu.kanade.tachiyomi.ui.base.controller
|
||||
|
||||
import android.app.Activity
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.os.Bundle
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
|
@ -10,11 +9,11 @@ import androidx.appcompat.app.AppCompatActivity
|
|||
import androidx.core.view.forEach
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import co.touchlab.kermit.Logger
|
||||
import com.bluelinelabs.conductor.Controller
|
||||
import com.bluelinelabs.conductor.ControllerChangeHandler
|
||||
import com.bluelinelabs.conductor.ControllerChangeType
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.ui.main.MainActivity
|
||||
import eu.kanade.tachiyomi.util.view.BackHandlerControllerInterface
|
||||
import eu.kanade.tachiyomi.util.view.activityBinding
|
||||
import eu.kanade.tachiyomi.util.view.isControllerVisible
|
||||
|
@ -22,7 +21,6 @@ import eu.kanade.tachiyomi.util.view.removeQueryListener
|
|||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.MainScope
|
||||
import kotlinx.coroutines.cancel
|
||||
import timber.log.Timber
|
||||
|
||||
abstract class BaseController(bundle: Bundle? = null) :
|
||||
Controller(bundle), BackHandlerControllerInterface, BaseControllerPreferenceControllerCommonInterface {
|
||||
|
@ -39,20 +37,20 @@ abstract class BaseController(bundle: Bundle? = null) :
|
|||
|
||||
override fun preCreateView(controller: Controller) {
|
||||
viewScope = MainScope()
|
||||
Timber.d("Create view for ${controller.instance()}")
|
||||
Logger.d { "Create view for ${controller.instance()}" }
|
||||
}
|
||||
|
||||
override fun preAttach(controller: Controller, view: View) {
|
||||
Timber.d("Attach view for ${controller.instance()}")
|
||||
Logger.d { "Attach view for ${controller.instance()}" }
|
||||
}
|
||||
|
||||
override fun preDetach(controller: Controller, view: View) {
|
||||
Timber.d("Detach view for ${controller.instance()}")
|
||||
Logger.d { "Detach view for ${controller.instance()}" }
|
||||
}
|
||||
|
||||
override fun preDestroyView(controller: Controller, view: View) {
|
||||
viewScope.cancel()
|
||||
Timber.d("Destroy view for ${controller.instance()}")
|
||||
Logger.d { "Destroy view for ${controller.instance()}" }
|
||||
}
|
||||
},
|
||||
)
|
||||
|
|
|
@ -2,6 +2,8 @@ package eu.kanade.tachiyomi.ui.crash
|
|||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import co.touchlab.kermit.Logger
|
||||
import eu.kanade.tachiyomi.util.system.e
|
||||
import kotlinx.serialization.KSerializer
|
||||
import kotlinx.serialization.descriptors.PrimitiveKind
|
||||
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
|
||||
|
@ -9,7 +11,6 @@ import kotlinx.serialization.descriptors.SerialDescriptor
|
|||
import kotlinx.serialization.encoding.Decoder
|
||||
import kotlinx.serialization.encoding.Encoder
|
||||
import kotlinx.serialization.json.Json
|
||||
import timber.log.Timber
|
||||
import kotlin.system.exitProcess
|
||||
|
||||
class GlobalExceptionHandler private constructor(
|
||||
|
@ -31,7 +32,7 @@ class GlobalExceptionHandler private constructor(
|
|||
|
||||
override fun uncaughtException(thread: Thread, exception: Throwable) {
|
||||
try {
|
||||
Timber.e(exception)
|
||||
Logger.e(exception)
|
||||
launchActivity(applicationContext, activityToBeLaunched, exception)
|
||||
exitProcess(0)
|
||||
} catch (_: Exception) {
|
||||
|
@ -71,7 +72,7 @@ class GlobalExceptionHandler private constructor(
|
|||
return try {
|
||||
Json.decodeFromString(ThrowableSerializer, intent.getStringExtra(INTENT_EXTRA)!!)
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e, "Wasn't able to retrieve throwable from intent")
|
||||
Logger.e(e) { "Wasn't able to retrieve throwable from intent" }
|
||||
null
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,12 +20,13 @@ import androidx.preference.PreferenceManager
|
|||
import androidx.preference.PreferenceScreen
|
||||
import androidx.preference.SwitchPreferenceCompat
|
||||
import androidx.recyclerview.widget.ConcatAdapter
|
||||
import co.touchlab.kermit.Logger
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||
import eu.kanade.tachiyomi.data.preference.SharedPreferencesDataStore
|
||||
import eu.kanade.tachiyomi.core.preference.minusAssign
|
||||
import eu.kanade.tachiyomi.core.preference.plusAssign
|
||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||
import eu.kanade.tachiyomi.data.preference.SharedPreferencesDataStore
|
||||
import eu.kanade.tachiyomi.databinding.ExtensionDetailControllerBinding
|
||||
import eu.kanade.tachiyomi.extension.model.Extension
|
||||
import eu.kanade.tachiyomi.network.NetworkHelper
|
||||
|
@ -51,7 +52,6 @@ import eu.kanade.tachiyomi.widget.preference.MultiListMatPreference
|
|||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import okhttp3.HttpUrl.Companion.toHttpUrl
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
|
@ -191,7 +191,7 @@ class ExtensionDetailsController(bundle: Bundle? = null) :
|
|||
network.cookieJar.remove(it.toHttpUrl())
|
||||
}
|
||||
|
||||
Timber.d("Cleared $cleared cookies for: ${urls.joinToString()}")
|
||||
Logger.d { "Cleared $cleared cookies for: ${urls.joinToString()}" }
|
||||
val context = view?.context ?: return
|
||||
binding.coordinator.snack(context.getString(R.string.cookies_cleared))
|
||||
}
|
||||
|
|
|
@ -58,6 +58,7 @@ import androidx.lifecycle.repeatOnLifecycle
|
|||
import androidx.window.layout.DisplayFeature
|
||||
import androidx.window.layout.FoldingFeature
|
||||
import androidx.window.layout.WindowInfoTracker
|
||||
import co.touchlab.kermit.Logger
|
||||
import com.bluelinelabs.conductor.Conductor
|
||||
import com.bluelinelabs.conductor.Controller
|
||||
import com.bluelinelabs.conductor.ControllerChangeHandler
|
||||
|
@ -113,6 +114,7 @@ import eu.kanade.tachiyomi.util.manga.MangaCoverMetadata
|
|||
import eu.kanade.tachiyomi.util.manga.MangaShortcutManager
|
||||
import eu.kanade.tachiyomi.util.system.contextCompatDrawable
|
||||
import eu.kanade.tachiyomi.util.system.dpToPx
|
||||
import eu.kanade.tachiyomi.util.system.e
|
||||
import eu.kanade.tachiyomi.util.system.executeOnIO
|
||||
import eu.kanade.tachiyomi.util.system.getResourceColor
|
||||
import eu.kanade.tachiyomi.util.system.hasSideNavBar
|
||||
|
@ -144,11 +146,10 @@ import kotlinx.coroutines.flow.launchIn
|
|||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
import java.util.Date
|
||||
import java.util.*
|
||||
import java.util.concurrent.TimeUnit
|
||||
import kotlin.math.abs
|
||||
import kotlin.math.min
|
||||
|
@ -1009,7 +1010,7 @@ open class MainActivity : BaseActivity<MainActivityBinding>() {
|
|||
}
|
||||
}
|
||||
} catch (error: Exception) {
|
||||
Timber.e(error)
|
||||
Logger.e(error)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -42,6 +42,7 @@ import androidx.palette.graphics.Palette
|
|||
import androidx.recyclerview.widget.ItemTouchHelper
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import co.touchlab.kermit.Logger
|
||||
import coil3.imageLoader
|
||||
import coil3.request.ImageRequest
|
||||
import coil3.request.allowHardware
|
||||
|
@ -53,13 +54,13 @@ import com.google.android.material.snackbar.Snackbar
|
|||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
||||
import eu.davidea.flexibleadapter.SelectableAdapter
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.coil.getBestColor
|
||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||
import eu.kanade.tachiyomi.data.database.models.Category
|
||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||
import eu.kanade.tachiyomi.data.download.DownloadJob
|
||||
import eu.kanade.tachiyomi.data.download.model.Download
|
||||
import eu.kanade.tachiyomi.data.coil.getBestColor
|
||||
import eu.kanade.tachiyomi.data.notification.NotificationReceiver
|
||||
import eu.kanade.tachiyomi.data.track.model.TrackSearch
|
||||
import eu.kanade.tachiyomi.databinding.MangaDetailsControllerBinding
|
||||
|
@ -100,6 +101,7 @@ import eu.kanade.tachiyomi.util.storage.getUriCompat
|
|||
import eu.kanade.tachiyomi.util.system.addCheckBoxPrompt
|
||||
import eu.kanade.tachiyomi.util.system.contextCompatColor
|
||||
import eu.kanade.tachiyomi.util.system.dpToPx
|
||||
import eu.kanade.tachiyomi.util.system.e
|
||||
import eu.kanade.tachiyomi.util.system.getResourceColor
|
||||
import eu.kanade.tachiyomi.util.system.ignoredSystemInsets
|
||||
import eu.kanade.tachiyomi.util.system.isInNightMode
|
||||
|
@ -129,12 +131,11 @@ import eu.kanade.tachiyomi.util.view.withFadeTransaction
|
|||
import eu.kanade.tachiyomi.widget.LinearLayoutManagerAccurateOffset
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import kotlinx.coroutines.withTimeoutOrNull
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
import java.io.File
|
||||
import java.io.IOException
|
||||
import java.util.Locale
|
||||
import java.util.*
|
||||
import kotlin.math.max
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
|
@ -1720,7 +1721,7 @@ class MangaDetailsController :
|
|||
}
|
||||
|
||||
fun trackRefreshError(error: Exception) {
|
||||
Timber.e(error)
|
||||
Logger.e(error)
|
||||
trackingBottomSheet?.onRefreshError(error)
|
||||
}
|
||||
|
||||
|
@ -1817,7 +1818,7 @@ class MangaDetailsController :
|
|||
}
|
||||
} catch (error: IOException) {
|
||||
activity.toast(R.string.failed_to_update_cover)
|
||||
Timber.e(error)
|
||||
Logger.e(error)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,6 +26,7 @@ import androidx.core.view.updateLayoutParams
|
|||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.transition.TransitionManager
|
||||
import co.touchlab.kermit.Logger
|
||||
import com.google.android.material.datepicker.MaterialDatePicker
|
||||
import com.mikepenz.fastadapter.FastAdapter
|
||||
import com.mikepenz.fastadapter.adapters.ItemAdapter
|
||||
|
@ -42,6 +43,7 @@ import eu.kanade.tachiyomi.ui.manga.MangaDetailsDivider
|
|||
import eu.kanade.tachiyomi.util.lang.indexesOf
|
||||
import eu.kanade.tachiyomi.util.system.addCheckBoxPrompt
|
||||
import eu.kanade.tachiyomi.util.system.dpToPx
|
||||
import eu.kanade.tachiyomi.util.system.e
|
||||
import eu.kanade.tachiyomi.util.system.isOnline
|
||||
import eu.kanade.tachiyomi.util.system.isPromptChecked
|
||||
import eu.kanade.tachiyomi.util.system.launchIO
|
||||
|
@ -56,9 +58,8 @@ import eu.kanade.tachiyomi.util.view.RecyclerWindowInsetsListener
|
|||
import eu.kanade.tachiyomi.util.view.checkHeightThen
|
||||
import eu.kanade.tachiyomi.util.view.expand
|
||||
import eu.kanade.tachiyomi.widget.E2EBottomSheetDialog
|
||||
import timber.log.Timber
|
||||
import java.text.DateFormat
|
||||
import java.util.Calendar
|
||||
import java.util.*
|
||||
|
||||
class TrackingBottomSheet(private val controller: MangaDetailsController) :
|
||||
E2EBottomSheetDialog<TrackingBottomSheetBinding>(controller.activity!!),
|
||||
|
@ -324,7 +325,7 @@ class TrackingBottomSheet(private val controller: MangaDetailsController) :
|
|||
}
|
||||
|
||||
fun onSearchResultsError(error: Throwable) {
|
||||
Timber.e(error)
|
||||
Logger.e(error)
|
||||
startTransition()
|
||||
setMiddleTrackView(binding.searchEmptyView.id)
|
||||
binding.searchProgress.isVisible = false
|
||||
|
|
|
@ -17,6 +17,7 @@ import androidx.core.graphics.ColorUtils
|
|||
import androidx.core.view.isVisible
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat
|
||||
import co.touchlab.kermit.Logger
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||
|
@ -36,6 +37,7 @@ import eu.kanade.tachiyomi.ui.migration.SearchController
|
|||
import eu.kanade.tachiyomi.ui.migration.manga.design.PreMigrationController
|
||||
import eu.kanade.tachiyomi.util.chapter.syncChaptersWithSource
|
||||
import eu.kanade.tachiyomi.util.lang.toNormalized
|
||||
import eu.kanade.tachiyomi.util.system.e
|
||||
import eu.kanade.tachiyomi.util.system.executeOnIO
|
||||
import eu.kanade.tachiyomi.util.system.getParcelableCompat
|
||||
import eu.kanade.tachiyomi.util.system.getResourceColor
|
||||
|
@ -58,7 +60,6 @@ import kotlinx.coroutines.launch
|
|||
import kotlinx.coroutines.sync.Semaphore
|
||||
import kotlinx.coroutines.sync.withPermit
|
||||
import kotlinx.coroutines.withContext
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
import java.util.concurrent.atomic.AtomicInteger
|
||||
import kotlin.coroutines.CoroutineContext
|
||||
|
@ -227,7 +228,7 @@ class MigrationListController(bundle: Bundle? = null) :
|
|||
val chapters: List<SChapter> = try {
|
||||
source.getChapterList(localManga)
|
||||
} catch (e: java.lang.Exception) {
|
||||
Timber.e(e)
|
||||
Logger.e(e)
|
||||
emptyList()
|
||||
}
|
||||
withContext(Dispatchers.IO) {
|
||||
|
|
|
@ -12,6 +12,7 @@ import android.widget.TextView
|
|||
import androidx.core.content.getSystemService
|
||||
import androidx.core.net.toUri
|
||||
import androidx.preference.PreferenceScreen
|
||||
import co.touchlab.kermit.Logger
|
||||
import com.google.android.gms.oss.licenses.OssLicensesMenuActivity
|
||||
import eu.kanade.tachiyomi.BuildConfig
|
||||
import eu.kanade.tachiyomi.R
|
||||
|
@ -38,12 +39,10 @@ import io.noties.markwon.Markwon
|
|||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import timber.log.Timber
|
||||
import java.text.DateFormat
|
||||
import java.text.ParseException
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Locale
|
||||
import java.util.TimeZone
|
||||
import java.util.*
|
||||
|
||||
class AboutController : SettingsLegacyController() {
|
||||
|
||||
|
@ -142,7 +141,7 @@ class AboutController : SettingsLegacyController() {
|
|||
} catch (error: Exception) {
|
||||
withContext(Dispatchers.Main) {
|
||||
activity.toast(error.message)
|
||||
Timber.e(error)
|
||||
Logger.e(error) { "Couldn't check new update" }
|
||||
}
|
||||
}
|
||||
when (result) {
|
||||
|
|
|
@ -4,6 +4,7 @@ import android.view.LayoutInflater
|
|||
import android.view.View
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.view.isVisible
|
||||
import co.touchlab.kermit.Logger
|
||||
import com.github.mikephil.charting.components.XAxis
|
||||
import com.github.mikephil.charting.data.BarData
|
||||
import com.github.mikephil.charting.data.BarDataSet
|
||||
|
@ -27,7 +28,6 @@ import eu.kanade.tachiyomi.util.system.roundToTwoDecimal
|
|||
import eu.kanade.tachiyomi.util.view.compatToolTipText
|
||||
import eu.kanade.tachiyomi.util.view.scrollViewWith
|
||||
import eu.kanade.tachiyomi.util.view.withFadeTransaction
|
||||
import timber.log.Timber
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
class StatsController : BaseLegacyController<StatsControllerBinding>() {
|
||||
|
@ -130,7 +130,7 @@ class StatsController : BaseLegacyController<StatsControllerBinding>() {
|
|||
invalidate()
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e)
|
||||
Logger.e(e) { "Failed to show chart" }
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -179,7 +179,7 @@ class StatsController : BaseLegacyController<StatsControllerBinding>() {
|
|||
}
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e)
|
||||
Logger.e(e) { "Failed to show chart" }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ import android.widget.LinearLayout
|
|||
import android.widget.TextView
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.view.isVisible
|
||||
import co.touchlab.kermit.Logger
|
||||
import com.github.mikephil.charting.charts.BarChart
|
||||
import com.github.mikephil.charting.components.MarkerView
|
||||
import com.github.mikephil.charting.components.XAxis
|
||||
|
@ -30,8 +31,7 @@ import eu.kanade.tachiyomi.ui.more.stats.details.StatsDetailsPresenter.Stats
|
|||
import eu.kanade.tachiyomi.ui.more.stats.details.StatsDetailsPresenter.StatsSort
|
||||
import eu.kanade.tachiyomi.util.system.getResourceColor
|
||||
import eu.kanade.tachiyomi.util.system.isLandscape
|
||||
import timber.log.Timber
|
||||
import java.util.Calendar
|
||||
import java.util.*
|
||||
import java.util.concurrent.TimeUnit
|
||||
import kotlin.math.ceil
|
||||
|
||||
|
@ -231,7 +231,7 @@ class StatsDetailsChartLayout @JvmOverloads constructor(
|
|||
invalidate()
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e)
|
||||
Logger.e(e) { "Failed setup pie chart" }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -325,7 +325,7 @@ class StatsDetailsChartLayout @JvmOverloads constructor(
|
|||
listener?.getHighlight()?.let { highlightValue(it) }
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e)
|
||||
Logger.e(e) { "Failed setup bar chart" }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -392,7 +392,7 @@ class StatsDetailsChartLayout @JvmOverloads constructor(
|
|||
invalidate()
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e)
|
||||
Logger.e(e) { "Failed setup line chart" }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -66,6 +66,7 @@ import androidx.vectordrawable.graphics.drawable.AnimatedVectorDrawableCompat
|
|||
import androidx.window.layout.DisplayFeature
|
||||
import androidx.window.layout.FoldingFeature
|
||||
import androidx.window.layout.WindowInfoTracker
|
||||
import co.touchlab.kermit.Logger
|
||||
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
|
||||
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialog
|
||||
|
@ -79,10 +80,10 @@ import dev.yokai.domain.ui.settings.ReaderPreferences
|
|||
import dev.yokai.domain.ui.settings.ReaderPreferences.LandscapeCutoutBehaviour
|
||||
import eu.kanade.tachiyomi.BuildConfig
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||
import eu.kanade.tachiyomi.core.preference.toggle
|
||||
import eu.kanade.tachiyomi.data.coil.TachiyomiImageDecoder
|
||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||
import eu.kanade.tachiyomi.data.preference.changesIn
|
||||
import eu.kanade.tachiyomi.data.track.TrackService
|
||||
import eu.kanade.tachiyomi.databinding.ReaderActivityBinding
|
||||
|
@ -118,6 +119,7 @@ import eu.kanade.tachiyomi.util.system.ThemeUtil
|
|||
import eu.kanade.tachiyomi.util.system.contextCompatColor
|
||||
import eu.kanade.tachiyomi.util.system.contextCompatDrawable
|
||||
import eu.kanade.tachiyomi.util.system.dpToPx
|
||||
import eu.kanade.tachiyomi.util.system.e
|
||||
import eu.kanade.tachiyomi.util.system.getBottomGestureInsets
|
||||
import eu.kanade.tachiyomi.util.system.getResourceColor
|
||||
import eu.kanade.tachiyomi.util.system.hasSideNavBar
|
||||
|
@ -158,14 +160,11 @@ import kotlinx.coroutines.flow.onEach
|
|||
import kotlinx.coroutines.flow.sample
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
import java.io.ByteArrayOutputStream
|
||||
import java.io.File
|
||||
import java.text.DecimalFormat
|
||||
import java.text.DecimalFormatSymbols
|
||||
import java.util.Collections
|
||||
import java.util.Locale
|
||||
import java.util.*
|
||||
import kotlin.math.abs
|
||||
import kotlin.math.max
|
||||
import kotlin.math.roundToInt
|
||||
|
@ -1434,7 +1433,7 @@ class ReaderActivity : BaseActivity<ReaderActivityBinding>() {
|
|||
* this case the activity is closed and a toast is shown to the user.
|
||||
*/
|
||||
private fun setInitialChapterError(error: Throwable) {
|
||||
Timber.e(error)
|
||||
Logger.e(error)
|
||||
finish()
|
||||
toast(error.message)
|
||||
}
|
||||
|
@ -1725,7 +1724,7 @@ class ReaderActivity : BaseActivity<ReaderActivityBinding>() {
|
|||
toast(R.string.picture_saved)
|
||||
}
|
||||
is ReaderViewModel.SaveImageResult.Error -> {
|
||||
Timber.e(result.error)
|
||||
Logger.e(result.error)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,12 +3,11 @@ package eu.kanade.tachiyomi.ui.reader
|
|||
import android.app.Application
|
||||
import android.graphics.BitmapFactory
|
||||
import android.net.Uri
|
||||
import android.os.Environment
|
||||
import androidx.annotation.ColorInt
|
||||
import androidx.core.net.toFile
|
||||
import androidx.lifecycle.SavedStateHandle
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import co.touchlab.kermit.Logger
|
||||
import com.hippo.unifile.UniFile
|
||||
import dev.yokai.domain.chapter.interactor.GetChapters
|
||||
import dev.yokai.domain.download.DownloadPreferences
|
||||
|
@ -49,6 +48,7 @@ import eu.kanade.tachiyomi.util.chapter.updateTrackChapterRead
|
|||
import eu.kanade.tachiyomi.util.isLocal
|
||||
import eu.kanade.tachiyomi.util.storage.DiskUtil
|
||||
import eu.kanade.tachiyomi.util.system.ImageUtil
|
||||
import eu.kanade.tachiyomi.util.system.e
|
||||
import eu.kanade.tachiyomi.util.system.executeOnIO
|
||||
import eu.kanade.tachiyomi.util.system.launchIO
|
||||
import eu.kanade.tachiyomi.util.system.launchNonCancellable
|
||||
|
@ -73,12 +73,10 @@ import kotlinx.coroutines.runBlocking
|
|||
import kotlinx.coroutines.withContext
|
||||
import rx.Completable
|
||||
import rx.schedulers.Schedulers
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
import java.io.File
|
||||
import java.util.Date
|
||||
import java.util.*
|
||||
import java.util.concurrent.CancellationException
|
||||
|
||||
/**
|
||||
|
@ -364,7 +362,7 @@ class ReaderViewModel(
|
|||
private suspend fun loadNewChapter(chapter: ReaderChapter) {
|
||||
val loader = loader ?: return
|
||||
|
||||
Timber.d("Loading ${chapter.chapter.url}")
|
||||
Logger.d { "Loading ${chapter.chapter.url}" }
|
||||
|
||||
withIOContext {
|
||||
try {
|
||||
|
@ -373,7 +371,7 @@ class ReaderViewModel(
|
|||
if (e is CancellationException) {
|
||||
throw e
|
||||
}
|
||||
Timber.e(e)
|
||||
Logger.e(e)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -414,7 +412,7 @@ class ReaderViewModel(
|
|||
suspend fun loadChapter(chapter: ReaderChapter): Int? {
|
||||
val loader = loader ?: return -1
|
||||
|
||||
Timber.d("Loading adjacent ${chapter.chapter.url}")
|
||||
Logger.d { "Loading adjacent ${chapter.chapter.url}" }
|
||||
var lastPage: Int? = if (chapter.chapter.pages_left <= 1) 0 else chapter.chapter.last_page_read
|
||||
mutableState.update { it.copy(isLoadingAdjacentChapter = true) }
|
||||
try {
|
||||
|
@ -425,7 +423,7 @@ class ReaderViewModel(
|
|||
if (e is CancellationException) {
|
||||
throw e
|
||||
}
|
||||
Timber.e(e)
|
||||
Logger.e(e)
|
||||
lastPage = null
|
||||
} finally {
|
||||
mutableState.update { it.copy(isLoadingAdjacentChapter = false) }
|
||||
|
@ -455,7 +453,7 @@ class ReaderViewModel(
|
|||
return
|
||||
}
|
||||
|
||||
Timber.d("Preloading ${chapter.chapter.url}")
|
||||
Logger.d { "Preloading ${chapter.chapter.url}" }
|
||||
|
||||
val loader = loader ?: return
|
||||
withIOContext {
|
||||
|
@ -504,7 +502,7 @@ class ReaderViewModel(
|
|||
}
|
||||
|
||||
if (selectedChapter != currentChapters.currChapter) {
|
||||
Timber.d("Setting ${selectedChapter.chapter.url} as active")
|
||||
Logger.d { "Setting ${selectedChapter.chapter.url} as active" }
|
||||
saveReadingProgress(currentChapters.currChapter)
|
||||
setReadStartTime()
|
||||
scope.launch { loadNewChapter(selectedChapter) }
|
||||
|
@ -730,7 +728,7 @@ class ReaderViewModel(
|
|||
this.manga?.orientationType = rotationType
|
||||
db.updateViewerFlags(manga).executeAsBlocking()
|
||||
|
||||
Timber.i("Manga orientation is ${manga.orientationType}")
|
||||
Logger.i { "Manga orientation is ${manga.orientationType}" }
|
||||
|
||||
viewModelScope.launchIO {
|
||||
db.updateViewerFlags(manga).executeAsBlocking()
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package eu.kanade.tachiyomi.ui.reader.loader
|
||||
|
||||
import android.content.Context
|
||||
import co.touchlab.kermit.Logger
|
||||
import com.github.junrar.exception.UnsupportedRarV5Exception
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||
|
@ -12,7 +13,6 @@ import eu.kanade.tachiyomi.source.online.HttpSource
|
|||
import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter
|
||||
import eu.kanade.tachiyomi.util.system.openReadOnlyChannel
|
||||
import eu.kanade.tachiyomi.util.system.withIOContext
|
||||
import timber.log.Timber
|
||||
|
||||
/**
|
||||
* Loader used to retrieve the [PageLoader] for a given chapter.
|
||||
|
@ -36,7 +36,7 @@ class ChapterLoader(
|
|||
|
||||
chapter.state = ReaderChapter.State.Loading
|
||||
withIOContext {
|
||||
Timber.d("Loading pages for ${chapter.chapter.name}")
|
||||
Logger.d { "Loading pages for ${chapter.chapter.name}" }
|
||||
try {
|
||||
val loader = getPageLoader(chapter)
|
||||
chapter.pageLoader = loader
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
package eu.kanade.tachiyomi.ui.reader.model
|
||||
|
||||
import co.touchlab.kermit.Logger
|
||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||
import eu.kanade.tachiyomi.ui.reader.loader.PageLoader
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import timber.log.Timber
|
||||
|
||||
data class ReaderChapter(val chapter: Chapter) {
|
||||
|
||||
|
@ -31,7 +31,7 @@ data class ReaderChapter(val chapter: Chapter) {
|
|||
references--
|
||||
if (references == 0) {
|
||||
if (pageLoader != null) {
|
||||
Timber.d("Recycling chapter ${chapter.name}")
|
||||
Logger.d { "Recycling chapter ${chapter.name}" }
|
||||
}
|
||||
pageLoader?.recycle()
|
||||
pageLoader = null
|
||||
|
|
|
@ -15,6 +15,7 @@ import android.view.Gravity
|
|||
import android.view.LayoutInflater
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.core.view.updateLayoutParams
|
||||
import co.touchlab.kermit.Logger
|
||||
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||
|
@ -50,7 +51,6 @@ import kotlinx.coroutines.launch
|
|||
import kotlinx.coroutines.withContext
|
||||
import okio.Buffer
|
||||
import okio.BufferedSource
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
import java.io.InputStream
|
||||
import kotlin.math.min
|
||||
|
@ -508,7 +508,7 @@ class PagerPageHolder(
|
|||
try {
|
||||
setBG(actualSource.peek().inputStream())
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e.localizedMessage)
|
||||
Logger.e { e.localizedMessage }
|
||||
ColorDrawable(Color.WHITE)
|
||||
}
|
||||
setImage(actualSource, false, imageConfig)
|
||||
|
@ -642,7 +642,7 @@ class PagerPageHolder(
|
|||
val imageBitmap = try {
|
||||
BitmapFactory.decodeStream(imageSource.inputStream())
|
||||
} catch (e: Exception) {
|
||||
Timber.e("Cannot split page ${e.message}")
|
||||
Logger.e { "Cannot split page ${e.message}" }
|
||||
return imageSource
|
||||
}
|
||||
val isLTR = (viewer !is R2LPagerViewer).xor(viewer.config.invertDoublePages)
|
||||
|
@ -663,7 +663,7 @@ class PagerPageHolder(
|
|||
} catch (e: Exception) {
|
||||
page.longPage = true
|
||||
splitDoublePages()
|
||||
Timber.e("Cannot split page ${e.message}")
|
||||
Logger.e { "Cannot split page ${e.message}" }
|
||||
return imageSource
|
||||
}
|
||||
val height = imageBitmap.height
|
||||
|
@ -696,7 +696,7 @@ class PagerPageHolder(
|
|||
closeSources(imageSource2)
|
||||
page.fullPage = true
|
||||
splitDoublePages()
|
||||
Timber.e("Cannot combine pages ${e.message}")
|
||||
Logger.e { "Cannot combine pages ${e.message}" }
|
||||
return supportHingeIfThere(imageSource)
|
||||
}
|
||||
scope.launchUI { progressBar.setProgress(96) }
|
||||
|
@ -780,7 +780,7 @@ class PagerPageHolder(
|
|||
extraPage?.fullPage = true
|
||||
page.isolatedPage = true
|
||||
splitDoublePages()
|
||||
Timber.e("Cannot combine pages ${e.message}")
|
||||
Logger.e { "Cannot combine pages ${e.message}" }
|
||||
return supportHingeIfThere(imageSource)
|
||||
}
|
||||
scope.launchUI { progressBar.setProgress(97) }
|
||||
|
|
|
@ -9,6 +9,7 @@ import android.view.ViewGroup.LayoutParams
|
|||
import androidx.core.view.children
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.viewpager.widget.ViewPager
|
||||
import co.touchlab.kermit.Logger
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.download.DownloadManager
|
||||
import eu.kanade.tachiyomi.ui.reader.ReaderActivity
|
||||
|
@ -21,7 +22,6 @@ import eu.kanade.tachiyomi.ui.reader.viewer.BaseViewer
|
|||
import eu.kanade.tachiyomi.ui.reader.viewer.ViewerNavigation
|
||||
import kotlinx.coroutines.MainScope
|
||||
import kotlinx.coroutines.cancel
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
|
||||
/**
|
||||
|
@ -251,14 +251,14 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer {
|
|||
val offset = if (hasExtraPage) 1 else 0
|
||||
val pages = page.chapter.pages ?: return
|
||||
if (hasExtraPage) {
|
||||
Timber.d("onReaderPageSelected: ${page.number}-${page.number + offset}/${pages.size}")
|
||||
Logger.d { "onReaderPageSelected: ${page.number}-${page.number + offset}/${pages.size}" }
|
||||
} else {
|
||||
Timber.d("onReaderPageSelected: ${page.number}/${pages.size}")
|
||||
Logger.d { "onReaderPageSelected: ${page.number}/${pages.size}" }
|
||||
}
|
||||
// Preload next chapter once we're within the last 5 pages of the current chapter
|
||||
val inPreloadRange = pages.size - page.number < 5
|
||||
if (inPreloadRange && allowPreload && page.chapter == adapter.currentChapter) {
|
||||
Timber.d("Request preload next chapter because we're at page ${page.number} of ${pages.size}")
|
||||
Logger.d { "Request preload next chapter because we're at page ${page.number} of ${pages.size}" }
|
||||
adapter.nextTransition?.to?.let {
|
||||
activity.requestPreloadChapter(it)
|
||||
}
|
||||
|
@ -270,10 +270,10 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer {
|
|||
* preload of the destination chapter of the transition.
|
||||
*/
|
||||
private fun onTransitionSelected(transition: ChapterTransition) {
|
||||
Timber.d("onTransitionSelected: $transition")
|
||||
Logger.d { "onTransitionSelected: $transition" }
|
||||
val toChapter = transition.to
|
||||
if (toChapter != null) {
|
||||
Timber.d("Request preload destination chapter because we're on the transition")
|
||||
Logger.d { "Request preload destination chapter because we're on the transition" }
|
||||
activity.requestPreloadChapter(toChapter)
|
||||
} else if (transition is ChapterTransition.Next) {
|
||||
// No more chapters, show menu because the user is probably going to close the reader
|
||||
|
@ -332,7 +332,7 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer {
|
|||
* Sets the active [chapters] on this pager.
|
||||
*/
|
||||
private fun setChaptersInternal(chapters: ViewerChapters) {
|
||||
Timber.d("setChaptersInternal")
|
||||
Logger.d { "setChaptersInternal" }
|
||||
val forceTransition = config.alwaysShowChapterTransition || adapter.joinedItems.getOrNull(
|
||||
pager
|
||||
.currentItem,
|
||||
|
@ -341,7 +341,7 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer {
|
|||
|
||||
// Layout the pager once a chapter is being set
|
||||
if (pager.visibility == View.GONE) {
|
||||
Timber.d("Pager first layout")
|
||||
Logger.d { "Pager first layout" }
|
||||
val pages = chapters.currChapter.pages ?: return
|
||||
moveToPage(pages[chapters.currChapter.requestedPage])
|
||||
pager.isVisible = true
|
||||
|
@ -353,7 +353,7 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer {
|
|||
* Tells this viewer to move to the given [page].
|
||||
*/
|
||||
override fun moveToPage(page: ReaderPage, animated: Boolean) {
|
||||
Timber.d("moveToPage ${page.number}")
|
||||
Logger.d { "moveToPage ${page.number}" }
|
||||
val position = adapter.joinedItems.indexOfFirst {
|
||||
it.first == page || it.second == page ||
|
||||
(
|
||||
|
@ -378,7 +378,7 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer {
|
|||
)
|
||||
}
|
||||
} else {
|
||||
Timber.d("Page $page not found in adapter")
|
||||
Logger.d { "Page $page not found in adapter" }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.ui.reader.viewer.pager
|
|||
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import co.touchlab.kermit.Logger
|
||||
import eu.kanade.tachiyomi.ui.reader.model.ChapterTransition
|
||||
import eu.kanade.tachiyomi.ui.reader.model.InsertPage
|
||||
import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter
|
||||
|
@ -11,7 +12,6 @@ import eu.kanade.tachiyomi.ui.reader.viewer.hasMissingChapters
|
|||
import eu.kanade.tachiyomi.util.system.launchUI
|
||||
import eu.kanade.tachiyomi.widget.ViewPagerAdapter
|
||||
import kotlinx.coroutines.delay
|
||||
import timber.log.Timber
|
||||
import kotlin.math.max
|
||||
|
||||
/**
|
||||
|
@ -154,7 +154,7 @@ class PagerViewerAdapter(private val viewer: PagerViewer) : ViewPagerAdapter() {
|
|||
if (position != -1) {
|
||||
return position
|
||||
} else {
|
||||
Timber.d("Position for ${view.item} not found")
|
||||
Logger.d { "Position for ${view.item} not found" }
|
||||
}
|
||||
}
|
||||
return POSITION_NONE
|
||||
|
|
|
@ -11,6 +11,7 @@ import android.view.ViewGroup.LayoutParams.WRAP_CONTENT
|
|||
import android.widget.FrameLayout
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.core.view.updatePaddingRelative
|
||||
import co.touchlab.kermit.Logger
|
||||
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
|
||||
import eu.kanade.tachiyomi.databinding.ReaderErrorBinding
|
||||
import eu.kanade.tachiyomi.source.model.Page
|
||||
|
@ -20,6 +21,7 @@ import eu.kanade.tachiyomi.ui.reader.viewer.ReaderPageImageView
|
|||
import eu.kanade.tachiyomi.ui.reader.viewer.ReaderProgressBar
|
||||
import eu.kanade.tachiyomi.util.system.ImageUtil
|
||||
import eu.kanade.tachiyomi.util.system.dpToPx
|
||||
import eu.kanade.tachiyomi.util.system.e
|
||||
import eu.kanade.tachiyomi.util.system.launchIO
|
||||
import eu.kanade.tachiyomi.util.system.withIOContext
|
||||
import eu.kanade.tachiyomi.util.system.withUIContext
|
||||
|
@ -30,7 +32,6 @@ import kotlinx.coroutines.launch
|
|||
import kotlinx.coroutines.supervisorScope
|
||||
import okio.Buffer
|
||||
import okio.BufferedSource
|
||||
import timber.log.Timber
|
||||
|
||||
/**
|
||||
* Holder of the webtoon reader for a single page of a chapter.
|
||||
|
@ -238,7 +239,7 @@ class WebtoonPageHolder(
|
|||
Pair(source, isAnimated)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e)
|
||||
Logger.e(e)
|
||||
setError()
|
||||
return
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@ import androidx.core.view.isGone
|
|||
import androidx.core.view.isVisible
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.recyclerview.widget.WebtoonLayoutManager
|
||||
import co.touchlab.kermit.Logger
|
||||
import eu.kanade.tachiyomi.data.download.DownloadManager
|
||||
import eu.kanade.tachiyomi.ui.reader.ReaderActivity
|
||||
import eu.kanade.tachiyomi.ui.reader.model.ChapterTransition
|
||||
|
@ -20,7 +21,6 @@ import eu.kanade.tachiyomi.ui.reader.viewer.BaseViewer
|
|||
import eu.kanade.tachiyomi.ui.reader.viewer.ViewerNavigation
|
||||
import kotlinx.coroutines.MainScope
|
||||
import kotlinx.coroutines.cancel
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
import kotlin.math.max
|
||||
import kotlin.math.min
|
||||
|
@ -186,15 +186,15 @@ class WebtoonViewer(val activity: ReaderActivity, val hasMargins: Boolean = fals
|
|||
activity.onPageSelected(page, false)
|
||||
|
||||
val pages = page.chapter.pages ?: return
|
||||
Timber.d("onReaderPageSelected: ${page.number}/${pages.size}")
|
||||
Logger.d { "onReaderPageSelected: ${page.number}/${pages.size}" }
|
||||
// Preload next chapter once we're within the last 5 pages of the current chapter
|
||||
val inPreloadRange = pages.size - page.number < 5
|
||||
if (inPreloadRange && allowPreload && page.chapter == adapter.currentChapter) {
|
||||
Timber.d("Request preload next chapter because we're at page ${page.number} of ${pages.size}")
|
||||
Logger.d { "Request preload next chapter because we're at page ${page.number} of ${pages.size}" }
|
||||
val nextItem = adapter.items.getOrNull(adapter.items.size - 1)
|
||||
val transitionChapter = (nextItem as? ChapterTransition.Next)?.to ?: (nextItem as?ReaderPage)?.chapter
|
||||
if (transitionChapter != null) {
|
||||
Timber.d("Requesting to preload chapter ${transitionChapter.chapter.chapter_number}")
|
||||
Logger.d { "Requesting to preload chapter ${transitionChapter.chapter.chapter_number}" }
|
||||
activity.requestPreloadChapter(transitionChapter)
|
||||
}
|
||||
}
|
||||
|
@ -205,10 +205,10 @@ class WebtoonViewer(val activity: ReaderActivity, val hasMargins: Boolean = fals
|
|||
* preload of the destination chapter of the transition.
|
||||
*/
|
||||
private fun onTransitionSelected(transition: ChapterTransition) {
|
||||
Timber.d("onTransitionSelected: $transition")
|
||||
Logger.d { "onTransitionSelected: $transition" }
|
||||
val toChapter = transition.to
|
||||
if (toChapter != null) {
|
||||
Timber.d("Request preload destination chapter because we're on the transition")
|
||||
Logger.d { "Request preload destination chapter because we're on the transition" }
|
||||
activity.requestPreloadChapter(toChapter)
|
||||
}
|
||||
}
|
||||
|
@ -217,12 +217,12 @@ class WebtoonViewer(val activity: ReaderActivity, val hasMargins: Boolean = fals
|
|||
* Tells this viewer to set the given [chapters] as active.
|
||||
*/
|
||||
override fun setChapters(chapters: ViewerChapters) {
|
||||
Timber.d("setChapters")
|
||||
Logger.d { "setChapters" }
|
||||
val forceTransition = config.alwaysShowChapterTransition || currentPage is ChapterTransition
|
||||
adapter.setChapters(chapters, forceTransition)
|
||||
|
||||
if (recycler.isGone) {
|
||||
Timber.d("Recycler first layout")
|
||||
Logger.d { "Recycler first layout" }
|
||||
val pages = chapters.currChapter.pages ?: return
|
||||
moveToPage(pages[min(chapters.currChapter.requestedPage, pages.lastIndex)])
|
||||
recycler.isVisible = true
|
||||
|
@ -233,7 +233,7 @@ class WebtoonViewer(val activity: ReaderActivity, val hasMargins: Boolean = fals
|
|||
* Tells this viewer to move to the given [page].
|
||||
*/
|
||||
override fun moveToPage(page: ReaderPage, animated: Boolean) {
|
||||
Timber.d("moveToPage")
|
||||
Logger.d { "moveToPage" }
|
||||
val position = adapter.items.indexOf(page)
|
||||
if (position != -1) {
|
||||
recycler.scrollToPosition(position)
|
||||
|
@ -241,7 +241,7 @@ class WebtoonViewer(val activity: ReaderActivity, val hasMargins: Boolean = fals
|
|||
onScrolled(position)
|
||||
}
|
||||
} else {
|
||||
Timber.d("Page $page not found in adapter")
|
||||
Logger.d { "Page $page not found in adapter" }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@ import androidx.appcompat.app.AppCompatActivity
|
|||
import androidx.core.net.toUri
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.preference.PreferenceScreen
|
||||
import co.touchlab.kermit.Logger
|
||||
import com.hippo.unifile.UniFile
|
||||
import dev.yokai.domain.base.BasePreferences.ExtensionInstaller
|
||||
import dev.yokai.domain.extension.interactor.TrustExtension
|
||||
|
@ -56,6 +57,7 @@ import eu.kanade.tachiyomi.ui.setting.switchPreference
|
|||
import eu.kanade.tachiyomi.ui.setting.titleRes
|
||||
import eu.kanade.tachiyomi.util.CrashLogUtil
|
||||
import eu.kanade.tachiyomi.util.system.disableItems
|
||||
import eu.kanade.tachiyomi.util.system.e
|
||||
import eu.kanade.tachiyomi.util.system.isPackageInstalled
|
||||
import eu.kanade.tachiyomi.util.system.launchIO
|
||||
import eu.kanade.tachiyomi.util.system.launchUI
|
||||
|
@ -73,7 +75,6 @@ import kotlinx.coroutines.Job
|
|||
import kotlinx.coroutines.launch
|
||||
import okhttp3.Headers
|
||||
import rikka.sui.Sui
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
|
@ -455,7 +456,7 @@ class SettingsAdvancedController : SettingsLegacyController() {
|
|||
activity?.applicationInfo?.dataDir?.let { File("$it/app_webview/").deleteRecursively() }
|
||||
activity?.toast(R.string.webview_data_deleted)
|
||||
} catch (e: Throwable) {
|
||||
Timber.e(e)
|
||||
Logger.e(e)
|
||||
activity?.toast(R.string.cache_delete_error)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ import androidx.core.view.updatePadding
|
|||
import androidx.recyclerview.widget.DividerItemDecoration
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import co.touchlab.kermit.Logger
|
||||
import com.bluelinelabs.conductor.ControllerChangeHandler
|
||||
import com.bluelinelabs.conductor.ControllerChangeType
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
|
@ -41,6 +42,7 @@ import eu.kanade.tachiyomi.ui.webview.WebViewActivity
|
|||
import eu.kanade.tachiyomi.util.addOrRemoveToFavorites
|
||||
import eu.kanade.tachiyomi.util.system.connectivityManager
|
||||
import eu.kanade.tachiyomi.util.system.dpToPx
|
||||
import eu.kanade.tachiyomi.util.system.e
|
||||
import eu.kanade.tachiyomi.util.system.openInBrowser
|
||||
import eu.kanade.tachiyomi.util.system.toast
|
||||
import eu.kanade.tachiyomi.util.view.activityBinding
|
||||
|
@ -55,7 +57,6 @@ import eu.kanade.tachiyomi.util.view.withFadeTransaction
|
|||
import eu.kanade.tachiyomi.widget.AutofitRecyclerView
|
||||
import eu.kanade.tachiyomi.widget.EmptyView
|
||||
import eu.kanade.tachiyomi.widget.LinearLayoutManagerAccurateOffset
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
|
@ -555,7 +556,7 @@ open class BrowseSourceController(bundle: Bundle) :
|
|||
* @param error the error received.
|
||||
*/
|
||||
fun onAddPageError(error: Throwable) {
|
||||
Timber.e(error)
|
||||
Logger.e(error)
|
||||
val adapter = adapter ?: return
|
||||
adapter.onLoadMoreComplete(null)
|
||||
hideProgressBar()
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package eu.kanade.tachiyomi.ui.source.browse
|
||||
|
||||
import co.touchlab.kermit.Logger
|
||||
import dev.yokai.domain.ui.UiPreferences
|
||||
import eu.davidea.flexibleadapter.items.IFlexible
|
||||
import eu.kanade.tachiyomi.data.cache.CoverCache
|
||||
|
@ -27,6 +28,7 @@ import eu.kanade.tachiyomi.ui.source.filter.TextItem
|
|||
import eu.kanade.tachiyomi.ui.source.filter.TextSectionItem
|
||||
import eu.kanade.tachiyomi.ui.source.filter.TriStateItem
|
||||
import eu.kanade.tachiyomi.ui.source.filter.TriStateSectionItem
|
||||
import eu.kanade.tachiyomi.util.system.e
|
||||
import eu.kanade.tachiyomi.util.system.launchIO
|
||||
import eu.kanade.tachiyomi.util.system.withUIContext
|
||||
import kotlinx.coroutines.Job
|
||||
|
@ -36,7 +38,6 @@ import kotlinx.coroutines.flow.collect
|
|||
import kotlinx.coroutines.flow.filter
|
||||
import kotlinx.coroutines.flow.map
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
|
||||
|
@ -185,7 +186,7 @@ open class BrowseSourcePresenter(
|
|||
this@BrowseSourcePresenter.items.addAll(items)
|
||||
withUIContext { view?.onAddPage(page, items) }
|
||||
} catch (error: Exception) {
|
||||
Timber.e(error)
|
||||
Logger.e(error)
|
||||
}
|
||||
}.collect()
|
||||
}
|
||||
|
@ -256,7 +257,7 @@ open class BrowseSourcePresenter(
|
|||
.onEach {
|
||||
withUIContext { view?.onMangaInitialized(it) }
|
||||
}
|
||||
.catch { e -> Timber.e(e) }
|
||||
.catch { e -> Logger.e(e) }
|
||||
.collect()
|
||||
}
|
||||
}
|
||||
|
@ -274,7 +275,7 @@ open class BrowseSourcePresenter(
|
|||
manga.initialized = true
|
||||
db.insertManga(manga).executeAsBlocking()
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e)
|
||||
Logger.e(e)
|
||||
}
|
||||
return manga
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@ import android.webkit.WebView
|
|||
import androidx.activity.OnBackPressedCallback
|
||||
import androidx.activity.addCallback
|
||||
import androidx.core.graphics.ColorUtils
|
||||
import co.touchlab.kermit.Logger
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.network.NetworkHelper
|
||||
import eu.kanade.tachiyomi.source.SourceManager
|
||||
|
@ -21,7 +22,6 @@ import eu.kanade.tachiyomi.util.system.getResourceColor
|
|||
import eu.kanade.tachiyomi.util.system.openInBrowser
|
||||
import eu.kanade.tachiyomi.util.system.toast
|
||||
import okhttp3.HttpUrl.Companion.toHttpUrl
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
|
||||
open class WebViewActivity : BaseWebViewActivity() {
|
||||
|
@ -70,7 +70,7 @@ open class WebViewActivity : BaseWebViewActivity() {
|
|||
try {
|
||||
headers = source.headers.toMultimap().mapValues { it.value.getOrNull(0) ?: "" }
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e, "Failed to build headers")
|
||||
Logger.e(e) { "Failed to build headers" }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ import android.content.DialogInterface
|
|||
import android.view.View
|
||||
import android.widget.Toast
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import co.touchlab.kermit.Logger
|
||||
import com.bluelinelabs.conductor.Controller
|
||||
import com.google.android.material.snackbar.BaseTransientBottomBar
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
|
@ -36,11 +37,9 @@ import eu.kanade.tachiyomi.util.system.withUIContext
|
|||
import eu.kanade.tachiyomi.util.view.snack
|
||||
import eu.kanade.tachiyomi.util.view.withFadeTransaction
|
||||
import eu.kanade.tachiyomi.widget.TriStateCheckBox
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
import java.util.Date
|
||||
import java.util.Locale
|
||||
import java.util.*
|
||||
|
||||
fun Manga.isLocal() = source == LocalSource.ID
|
||||
|
||||
|
@ -413,7 +412,7 @@ fun Manga.autoAddTrack(db: DatabaseHelper, onMangaMoved: () -> Unit) {
|
|||
}
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Timber.w(e, "Could not match manga: ${this@autoAddTrack.title} with service $service")
|
||||
Logger.w(e) { "Could not match manga: ${this@autoAddTrack.title} with service $service" }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package eu.kanade.tachiyomi.util.chapter
|
||||
|
||||
import co.touchlab.kermit.Logger
|
||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
|
||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||
import eu.kanade.tachiyomi.data.database.models.Track
|
||||
|
@ -7,11 +8,12 @@ import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
|||
import eu.kanade.tachiyomi.data.track.DelayedTrackingUpdateJob
|
||||
import eu.kanade.tachiyomi.data.track.TrackManager
|
||||
import eu.kanade.tachiyomi.data.track.TrackService
|
||||
import eu.kanade.tachiyomi.util.system.e
|
||||
import eu.kanade.tachiyomi.util.system.isOnline
|
||||
import eu.kanade.tachiyomi.util.system.launchIO
|
||||
import eu.kanade.tachiyomi.util.system.w
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.delay
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
|
||||
|
@ -41,7 +43,7 @@ fun syncChaptersWithTrackServiceTwoWay(db: DatabaseHelper, chapters: List<Chapte
|
|||
service.update(remoteTrack)
|
||||
db.insertTrack(remoteTrack).executeAsBlocking()
|
||||
} catch (e: Throwable) {
|
||||
Timber.w(e)
|
||||
Logger.w(e)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -100,7 +102,7 @@ suspend fun updateTrackChapterRead(
|
|||
service.update(track, true)
|
||||
db.insertTrack(track).executeAsBlocking()
|
||||
} catch (e: Exception) {
|
||||
Timber.e(e)
|
||||
Logger.e(e)
|
||||
failures.add(service to e.localizedMessage)
|
||||
if (retryWhenOnline) {
|
||||
delayTrackingUpdate(preferences, mangaId, newChapterRead, track)
|
||||
|
|
|
@ -7,6 +7,7 @@ import android.content.pm.ShortcutManager
|
|||
import android.graphics.Bitmap
|
||||
import android.graphics.drawable.BitmapDrawable
|
||||
import android.graphics.drawable.Icon
|
||||
import co.touchlab.kermit.Logger
|
||||
import coil3.imageLoader
|
||||
import coil3.request.ImageRequest
|
||||
import eu.kanade.tachiyomi.R
|
||||
|
@ -23,7 +24,6 @@ import eu.kanade.tachiyomi.ui.main.SearchActivity
|
|||
import eu.kanade.tachiyomi.ui.recents.RecentsPresenter
|
||||
import eu.kanade.tachiyomi.ui.source.browse.BrowseSourceController
|
||||
import eu.kanade.tachiyomi.util.system.launchIO
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
import kotlin.math.min
|
||||
|
@ -138,7 +138,7 @@ class MangaShortcutManager(
|
|||
}
|
||||
}
|
||||
}
|
||||
Timber.d("Shortcuts: ${shortcuts.joinToString(", ") { it.longLabel ?: "n/a" }}")
|
||||
Logger.d { "Shortcuts: ${shortcuts.joinToString(", ") { it.longLabel ?: "n/a" }}" }
|
||||
shortcutManager.dynamicShortcuts = shortcuts
|
||||
}
|
||||
}
|
||||
|
|
|
@ -36,6 +36,7 @@ import androidx.core.net.toUri
|
|||
import androidx.work.CoroutineWorker
|
||||
import androidx.work.WorkInfo
|
||||
import androidx.work.WorkManager
|
||||
import co.touchlab.kermit.Logger
|
||||
import com.hippo.unifile.UniFile
|
||||
import eu.kanade.tachiyomi.App
|
||||
import eu.kanade.tachiyomi.R
|
||||
|
@ -45,7 +46,6 @@ import eu.kanade.tachiyomi.ui.main.MainActivity
|
|||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.NonCancellable
|
||||
import kotlinx.coroutines.withContext
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
import java.io.File
|
||||
|
@ -453,7 +453,7 @@ suspend fun CoroutineWorker.tryToSetForeground() {
|
|||
try {
|
||||
setForeground(getForegroundInfo())
|
||||
} catch (e: IllegalStateException) {
|
||||
Timber.e(e, "Not allowed to set foreground job")
|
||||
Logger.e(e) { "Not allowed to set foreground job" }
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -486,6 +486,6 @@ suspend fun <T> withNonCancellableContext(block: suspend CoroutineScope.() -> T)
|
|||
fun Context.tryTakePersistableUriPermission(uri: Uri, flags: Int) = try {
|
||||
contentResolver.takePersistableUriPermission(uri, flags)
|
||||
} catch (e: SecurityException) {
|
||||
Timber.e(e)
|
||||
Logger.e(e)
|
||||
toast(R.string.file_picker_uri_permission_unsupported)
|
||||
}
|
||||
|
|
|
@ -8,9 +8,7 @@ import android.view.Display
|
|||
import android.view.Window
|
||||
import androidx.core.content.getSystemService
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import timber.log.Timber
|
||||
import java.lang.reflect.InvocationTargetException
|
||||
|
||||
import co.touchlab.kermit.Logger
|
||||
|
||||
|
||||
object DeviceUtil {
|
||||
|
@ -80,7 +78,7 @@ object DeviceUtil {
|
|||
.getDeclaredMethod("get", String::class.java)
|
||||
.invoke(null, key) as String
|
||||
} catch (e: Exception) {
|
||||
Timber.w(e, "Unable to use SystemProperties.get")
|
||||
Logger.w(e) { "Unable to use SystemProperties.get" }
|
||||
null
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,13 +23,13 @@ import androidx.core.graphics.blue
|
|||
import androidx.core.graphics.green
|
||||
import androidx.core.graphics.red
|
||||
import androidx.core.graphics.scale
|
||||
import co.touchlab.kermit.Logger
|
||||
import com.hippo.unifile.UniFile
|
||||
import eu.kanade.tachiyomi.R
|
||||
import okio.Buffer
|
||||
import okio.BufferedSource
|
||||
import tachiyomi.decoder.Format
|
||||
import tachiyomi.decoder.ImageDecoder
|
||||
import timber.log.Timber
|
||||
import java.io.File
|
||||
import java.io.FileOutputStream
|
||||
import java.io.InputStream
|
||||
|
@ -553,7 +553,7 @@ object ImageUtil {
|
|||
}
|
||||
|
||||
if (bitmapRegionDecoder == null) {
|
||||
Timber.d("Failed to create new instance of BitmapRegionDecoder")
|
||||
Logger.d { "Failed to create new instance of BitmapRegionDecoder" }
|
||||
return false
|
||||
}
|
||||
|
||||
|
@ -573,9 +573,9 @@ object ImageUtil {
|
|||
splitBitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream)
|
||||
splitBitmap.recycle()
|
||||
}
|
||||
Timber.d(
|
||||
"Success: Split #${splitData.index + 1} with topOffset=${splitData.topOffset} height=${splitData.splitHeight} bottomOffset=${splitData.bottomOffset}",
|
||||
)
|
||||
Logger.d {
|
||||
"Success: Split #${splitData.index + 1} with topOffset=${splitData.topOffset} height=${splitData.splitHeight} bottomOffset=${splitData.bottomOffset}"
|
||||
}
|
||||
}
|
||||
imageFile.delete()
|
||||
true
|
||||
|
@ -584,7 +584,7 @@ object ImageUtil {
|
|||
splitDataList
|
||||
.map { splitImagePath(imageFilePath, it.index) }
|
||||
.forEach { File(it).delete() }
|
||||
Timber.e(e)
|
||||
Logger.e(e)
|
||||
false
|
||||
} finally {
|
||||
bitmapRegionDecoder.recycle()
|
||||
|
@ -605,9 +605,9 @@ object ImageUtil {
|
|||
val partCount = (imageHeight - 1) / optimalImageHeight + 1
|
||||
val optimalSplitHeight = imageHeight / partCount
|
||||
|
||||
Timber.d(
|
||||
"Splitting image with height of $imageHeight into $partCount part with estimated ${optimalSplitHeight}px height per split",
|
||||
)
|
||||
Logger.d {
|
||||
"Splitting image with height of $imageHeight into $partCount part with estimated ${optimalSplitHeight}px height per split"
|
||||
}
|
||||
|
||||
return mutableListOf<SplitData>().apply {
|
||||
val range = 0 until partCount
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
package eu.kanade.tachiyomi.util.system
|
||||
|
||||
import co.touchlab.kermit.Logger
|
||||
|
||||
fun Logger.w(e: Throwable) = w(e) { "Something is not right..." }
|
||||
fun Logger.e(e: Throwable) = e(e) { "Something went wrong!" }
|
|
@ -6,7 +6,7 @@ import android.content.pm.PackageManager
|
|||
import android.webkit.CookieManager
|
||||
import android.webkit.WebSettings
|
||||
import android.webkit.WebView
|
||||
import timber.log.Timber
|
||||
import co.touchlab.kermit.Logger
|
||||
|
||||
object WebViewUtil {
|
||||
const val MINIMUM_WEBVIEW_VERSION = 114
|
||||
|
@ -17,7 +17,7 @@ object WebViewUtil {
|
|||
// is not installed
|
||||
CookieManager.getInstance()
|
||||
} catch (e: Throwable) {
|
||||
Timber.e(e)
|
||||
Logger.e(e)
|
||||
return false
|
||||
}
|
||||
|
||||
|
|
|
@ -39,6 +39,7 @@ gradle = { module = "com.android.tools.build:gradle", version = "8.2.0" }
|
|||
guava = { module = "com.google.guava:guava", version = "31.1-android" }
|
||||
image-decoder = { module = "com.github.tachiyomiorg:image-decoder", version = "e08e9be535" }
|
||||
injekt-core = { module = "com.github.inorichi.injekt:injekt-core", version = "65b0440" }
|
||||
kermit = { module = "co.touchlab:kermit", version = "2.0.3" }
|
||||
material = { module = "com.google.android.material:material", version = "1.12.0" }
|
||||
material-design-dimens = { module = "com.dmitrymalkovich.android:material-design-dimens", version = "1.4" }
|
||||
markwon = { module = "io.noties.markwon:core", version = "4.6.2" }
|
||||
|
@ -82,7 +83,6 @@ subsamplingscaleimageview = { module = "com.github.null2264:subsampling-scale-im
|
|||
shizuku-api = { module = "dev.rikka.shizuku:api", version.ref = "shizuku" }
|
||||
shizuku-provider = { module = "dev.rikka.shizuku:provider", version.ref = "shizuku" }
|
||||
taptargetview = { module = "com.getkeepsafe.taptargetview:taptargetview", version = "1.13.3" }
|
||||
timber = { module = "com.jakewharton.timber:timber", version = "4.7.1" }
|
||||
oss-licenses-plugin = { module = "com.google.android.gms:oss-licenses-plugin", version = "0.10.6" }
|
||||
unifile = { module = "com.github.tachiyomiorg:unifile", version = "7c257e1c64" }
|
||||
viewstatepageradapter = { module = "com.nightlynexus.viewstatepageradapter:viewstatepageradapter", version = "1.1.0" }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue