diff --git a/app/build.gradle b/app/build.gradle index 7664b69c1..2858c37ef 100755 --- a/app/build.gradle +++ b/app/build.gradle @@ -366,7 +366,7 @@ task copyResources(type: Copy) { include '**/*' } -preBuild.dependsOn(ktlintFormat, copyResources) +preBuild.dependsOn(formatKotlin, copyResources) if (!getGradle().getStartParameter().getTaskRequests().toString().contains("Debug")) { apply plugin: 'com.google.gms.google-services' diff --git a/app/src/main/java/eu/kanade/tachiyomi/App.kt b/app/src/main/java/eu/kanade/tachiyomi/App.kt index 4d554f907..2568b719e 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/App.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/App.kt @@ -39,13 +39,6 @@ import exh.log.EHLogLevel import exh.syDebugVersion import io.realm.Realm import io.realm.RealmConfiguration -import java.io.File -import java.security.NoSuchAlgorithmException -import java.security.Security -import javax.net.ssl.SSLContext -import kotlin.concurrent.thread -import kotlin.time.ExperimentalTime -import kotlin.time.days import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import org.conscrypt.Conscrypt @@ -54,6 +47,13 @@ import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.InjektScope import uy.kohesive.injekt.injectLazy import uy.kohesive.injekt.registry.default.DefaultRegistrar +import java.io.File +import java.security.NoSuchAlgorithmException +import java.security.Security +import javax.net.ssl.SSLContext +import kotlin.concurrent.thread +import kotlin.time.ExperimentalTime +import kotlin.time.days open class App : Application(), LifecycleObserver { @@ -196,11 +196,13 @@ open class App : Application(), LifecycleObserver { @OptIn(ExperimentalTime::class) printers += FilePrinter .Builder(logFolder.absolutePath) - .fileNameGenerator(object : DateFileNameGenerator() { - override fun generateFileName(logLevel: Int, timestamp: Long): String { - return super.generateFileName(logLevel, timestamp) + "-${BuildConfig.BUILD_TYPE}.log" + .fileNameGenerator( + object : DateFileNameGenerator() { + override fun generateFileName(logLevel: Int, timestamp: Long): String { + return super.generateFileName(logLevel, timestamp) + "-${BuildConfig.BUILD_TYPE}.log" + } } - }) + ) .cleanStrategy(FileLastModifiedCleanStrategy(7.days.toLongMilliseconds())) .backupStrategy(NeverBackupStrategy()) .build() diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupCreatorJob.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupCreatorJob.kt index 8c62e9476..c78f87011 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupCreatorJob.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupCreatorJob.kt @@ -8,9 +8,9 @@ import androidx.work.WorkManager import androidx.work.Worker import androidx.work.WorkerParameters import eu.kanade.tachiyomi.data.preference.PreferencesHelper -import java.util.concurrent.TimeUnit import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import java.util.concurrent.TimeUnit class BackupCreatorJob(private val context: Context, workerParams: WorkerParameters) : Worker(context, workerParams) { @@ -36,8 +36,10 @@ class BackupCreatorJob(private val context: Context, workerParams: WorkerParamet val interval = prefInterval ?: preferences.backupInterval().get() if (interval > 0) { val request = PeriodicWorkRequestBuilder( - interval.toLong(), TimeUnit.HOURS, - 10, TimeUnit.MINUTES + interval.toLong(), + TimeUnit.HOURS, + 10, + TimeUnit.MINUTES ) .addTag(TAG) .build() diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt index f209af853..f8104db1e 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt @@ -66,8 +66,6 @@ import exh.MERGED_SOURCE_ID import exh.eh.EHentaiThrottleManager import exh.merged.sql.models.MergedMangaReference import exh.util.asObservable -import java.lang.RuntimeException -import kotlin.math.max import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.runBlocking import rx.Observable @@ -76,6 +74,8 @@ import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy import xyz.nulldev.ts.api.http.serializer.FilterSerializer +import java.lang.RuntimeException +import kotlin.math.max class BackupManager(val context: Context, version: Int = CURRENT_VERSION) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupNotifier.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupNotifier.kt index e48f2d334..d7e24e6eb 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupNotifier.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupNotifier.kt @@ -11,9 +11,9 @@ import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.util.storage.getUriCompat import eu.kanade.tachiyomi.util.system.notificationBuilder import eu.kanade.tachiyomi.util.system.notificationManager +import uy.kohesive.injekt.injectLazy import java.io.File import java.util.concurrent.TimeUnit -import uy.kohesive.injekt.injectLazy internal class BackupNotifier(private val context: Context) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupRestoreService.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupRestoreService.kt index 69a36506b..21fc9c001 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupRestoreService.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupRestoreService.kt @@ -38,10 +38,6 @@ import eu.kanade.tachiyomi.util.system.acquireWakeLock import eu.kanade.tachiyomi.util.system.isServiceRunning import exh.EXHMigrations import exh.eh.EHentaiThrottleManager -import java.io.File -import java.text.SimpleDateFormat -import java.util.Date -import java.util.Locale import kotlinx.coroutines.CoroutineExceptionHandler import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.Job @@ -49,6 +45,10 @@ import kotlinx.coroutines.launch import rx.Observable import timber.log.Timber import uy.kohesive.injekt.injectLazy +import java.io.File +import java.text.SimpleDateFormat +import java.util.Date +import java.util.Locale /** * Restores backup from a JSON file. diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/cache/ChapterCache.kt b/app/src/main/java/eu/kanade/tachiyomi/data/cache/ChapterCache.kt index ff1328529..29f1d54ea 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/cache/ChapterCache.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/cache/ChapterCache.kt @@ -10,8 +10,6 @@ import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.util.storage.DiskUtil import eu.kanade.tachiyomi.util.storage.saveTo -import java.io.File -import java.io.IOException import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -22,6 +20,8 @@ import okio.buffer import okio.sink import rx.Observable import uy.kohesive.injekt.injectLazy +import java.io.File +import java.io.IOException /** * Class used to create chapter cache diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/RawQueries.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/RawQueries.kt index 16a114be8..d4f04081b 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/RawQueries.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/RawQueries.kt @@ -1,11 +1,11 @@ package eu.kanade.tachiyomi.data.database.queries +import exh.MERGED_SOURCE_ID import eu.kanade.tachiyomi.data.database.tables.CategoryTable as Category import eu.kanade.tachiyomi.data.database.tables.ChapterTable as Chapter import eu.kanade.tachiyomi.data.database.tables.HistoryTable as History import eu.kanade.tachiyomi.data.database.tables.MangaCategoryTable as MangaCategory import eu.kanade.tachiyomi.data.database.tables.MangaTable as Manga -import exh.MERGED_SOURCE_ID import exh.merged.sql.tables.MergedTable as Merged // SY --> diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadCache.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadCache.kt index 59e3a4c26..95eb8a6db 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadCache.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadCache.kt @@ -7,10 +7,10 @@ import eu.kanade.tachiyomi.data.database.models.Chapter import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.source.SourceManager -import java.util.concurrent.TimeUnit import kotlinx.coroutines.flow.onEach import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import java.util.concurrent.TimeUnit /** * Cache where we dump the downloads directory from the filesystem. This class is needed because diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadNotifier.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadNotifier.kt index f2136e7c1..16bcee8de 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadNotifier.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadNotifier.kt @@ -12,8 +12,8 @@ import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.util.lang.chop import eu.kanade.tachiyomi.util.system.notificationBuilder import eu.kanade.tachiyomi.util.system.notificationManager -import java.util.regex.Pattern import uy.kohesive.injekt.injectLazy +import java.util.regex.Pattern /** * DownloadNotifier is used to show notifications when downloading one or multiple chapters. @@ -107,7 +107,9 @@ internal class DownloadNotifier(private val context: Context) { } val downloadingProgressText = context.getString( - R.string.chapter_downloading_progress, download.downloadedImages, download.pages!!.size + R.string.chapter_downloading_progress, + download.downloadedImages, + download.pages!!.size ) if (preferences.hideNotificationContent()) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt index 57052cfb5..6fed8ca8e 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt @@ -23,11 +23,6 @@ import eu.kanade.tachiyomi.util.lang.plusAssign import eu.kanade.tachiyomi.util.storage.DiskUtil import eu.kanade.tachiyomi.util.storage.saveTo import eu.kanade.tachiyomi.util.system.ImageUtil -import java.io.BufferedOutputStream -import java.io.File -import java.util.zip.CRC32 -import java.util.zip.ZipEntry -import java.util.zip.ZipOutputStream import kotlinx.coroutines.async import okhttp3.Response import rx.Observable @@ -37,6 +32,11 @@ import rx.subscriptions.CompositeSubscription import timber.log.Timber import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy +import java.io.BufferedOutputStream +import java.io.File +import java.util.zip.CRC32 +import java.util.zip.ZipEntry +import java.util.zip.ZipOutputStream /** * This class is the one in charge of downloading chapters. diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/model/DownloadQueue.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/model/DownloadQueue.kt index 79dde6a6e..90207b9e1 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/model/DownloadQueue.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/model/DownloadQueue.kt @@ -5,9 +5,9 @@ import eu.kanade.tachiyomi.data.database.models.Chapter import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.download.DownloadStore import eu.kanade.tachiyomi.source.model.Page -import java.util.concurrent.CopyOnWriteArrayList import rx.Observable import rx.subjects.PublishSubject +import java.util.concurrent.CopyOnWriteArrayList class DownloadQueue( private val store: DownloadStore, diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/glide/FileFetcher.kt b/app/src/main/java/eu/kanade/tachiyomi/data/glide/FileFetcher.kt index 91da7c558..a54c3cede 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/glide/FileFetcher.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/glide/FileFetcher.kt @@ -5,12 +5,12 @@ import android.util.Log import com.bumptech.glide.Priority import com.bumptech.glide.load.DataSource import com.bumptech.glide.load.data.DataFetcher +import timber.log.Timber import java.io.File import java.io.FileInputStream import java.io.FileNotFoundException import java.io.IOException import java.io.InputStream -import timber.log.Timber open class FileFetcher(private val filePath: String = "") : DataFetcher { diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/glide/MangaThumbnailModelLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/data/glide/MangaThumbnailModelLoader.kt index ca478cc74..b3cf79a15 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/glide/MangaThumbnailModelLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/glide/MangaThumbnailModelLoader.kt @@ -14,10 +14,10 @@ import eu.kanade.tachiyomi.network.NetworkHelper import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.online.HttpSource import eu.kanade.tachiyomi.util.isLocal -import java.io.InputStream import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy +import java.io.InputStream /** * A class for loading a cover associated with a [Manga] that can be present in our own cache. diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/glide/TachiGlideModule.kt b/app/src/main/java/eu/kanade/tachiyomi/data/glide/TachiGlideModule.kt index 2182fa868..dca2e0879 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/glide/TachiGlideModule.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/glide/TachiGlideModule.kt @@ -14,9 +14,9 @@ import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions import com.bumptech.glide.module.AppGlideModule import com.bumptech.glide.request.RequestOptions import eu.kanade.tachiyomi.network.NetworkHelper -import java.io.InputStream import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import java.io.InputStream /** * Class used to update Glide module settings diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/library/CustomMangaManager.kt b/app/src/main/java/eu/kanade/tachiyomi/data/library/CustomMangaManager.kt index 6ce0ce311..743bada22 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/library/CustomMangaManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/library/CustomMangaManager.kt @@ -29,7 +29,8 @@ class CustomMangaManager(val context: Context) { val json = try { Gson().fromJson( - Scanner(editJson).useDelimiter("\\Z").next(), JsonObject::class.java + Scanner(editJson).useDelimiter("\\Z").next(), + JsonObject::class.java ) } catch (e: Exception) { null @@ -83,7 +84,12 @@ class CustomMangaManager(val context: Context) { fun Manga.toJson(): MangaJson { return MangaJson( - id!!, title, author, artist, description, genre?.split(", ")?.toTypedArray() + id!!, + title, + author, + artist, + description, + genre?.split(", ")?.toTypedArray() ) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt index 9e9731030..f2055a654 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateJob.kt @@ -9,9 +9,9 @@ import androidx.work.WorkManager import androidx.work.Worker import androidx.work.WorkerParameters import eu.kanade.tachiyomi.data.preference.PreferencesHelper -import java.util.concurrent.TimeUnit import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import java.util.concurrent.TimeUnit class LibraryUpdateJob(private val context: Context, workerParams: WorkerParameters) : Worker(context, workerParams) { @@ -45,8 +45,10 @@ class LibraryUpdateJob(private val context: Context, workerParams: WorkerParamet .build() val request = PeriodicWorkRequestBuilder( - interval.toLong(), TimeUnit.HOURS, - 10, TimeUnit.MINUTES + interval.toLong(), + TimeUnit.HOURS, + 10, + TimeUnit.MINUTES ) .addTag(TAG) .setConstraints(constraints) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateNotifier.kt b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateNotifier.kt index da1cc3944..fb4510d15 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateNotifier.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateNotifier.kt @@ -23,9 +23,9 @@ import eu.kanade.tachiyomi.util.lang.chop import eu.kanade.tachiyomi.util.system.notification import eu.kanade.tachiyomi.util.system.notificationBuilder import eu.kanade.tachiyomi.util.system.notificationManager +import uy.kohesive.injekt.injectLazy import java.text.DecimalFormat import java.text.DecimalFormatSymbols -import uy.kohesive.injekt.injectLazy class LibraryUpdateNotifier(private val context: Context) { @@ -199,18 +199,23 @@ class LibraryUpdateNotifier(private val context: Context) { // Mark chapters as read action addAction( - R.drawable.ic_glasses_black_24dp, context.getString(R.string.action_mark_as_read), + R.drawable.ic_glasses_black_24dp, + context.getString(R.string.action_mark_as_read), NotificationReceiver.markAsReadPendingBroadcast( context, - manga, chapters, Notifications.ID_NEW_CHAPTERS + manga, + chapters, + Notifications.ID_NEW_CHAPTERS ) ) // View chapters action addAction( - R.drawable.ic_book_24dp, context.getString(R.string.action_view_chapters), + R.drawable.ic_book_24dp, + context.getString(R.string.action_view_chapters), NotificationReceiver.openChapterPendingActivity( context, - manga, Notifications.ID_NEW_CHAPTERS + manga, + Notifications.ID_NEW_CHAPTERS ) ) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt index 11f95ca89..a4ab4e623 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt @@ -44,9 +44,6 @@ import exh.util.asObservable import exh.util.await import exh.util.awaitSingle import exh.util.nullIfBlank -import java.io.File -import java.util.Date -import java.util.concurrent.atomic.AtomicInteger import kotlinx.coroutines.runBlocking import rx.Observable import rx.Subscription @@ -54,6 +51,9 @@ import rx.schedulers.Schedulers import timber.log.Timber import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import java.io.File +import java.util.Date +import java.util.concurrent.atomic.AtomicInteger /** * This class will take care of updating the chapters of the manga from the library. It can be diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt b/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt index 695b608bb..4960327b9 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt @@ -7,7 +7,6 @@ import android.content.Intent import android.net.Uri import android.os.Build import android.os.Handler -import eu.kanade.tachiyomi.BuildConfig.APPLICATION_ID as ID import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.backup.BackupRestoreService import eu.kanade.tachiyomi.data.database.DatabaseHelper @@ -26,10 +25,11 @@ import eu.kanade.tachiyomi.util.storage.DiskUtil import eu.kanade.tachiyomi.util.storage.getUriCompat import eu.kanade.tachiyomi.util.system.notificationManager import eu.kanade.tachiyomi.util.system.toast -import java.io.File import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy +import java.io.File +import eu.kanade.tachiyomi.BuildConfig.APPLICATION_ID as ID /** * Global [BroadcastReceiver] that runs on UI thread @@ -56,19 +56,22 @@ class NotificationReceiver : BroadcastReceiver() { // Launch share activity and dismiss notification ACTION_SHARE_IMAGE -> shareImage( - context, intent.getStringExtra(EXTRA_FILE_LOCATION), + context, + intent.getStringExtra(EXTRA_FILE_LOCATION), intent.getIntExtra(EXTRA_NOTIFICATION_ID, -1) ) // Delete image from path and dismiss notification ACTION_DELETE_IMAGE -> deleteImage( - context, intent.getStringExtra(EXTRA_FILE_LOCATION), + context, + intent.getStringExtra(EXTRA_FILE_LOCATION), intent.getIntExtra(EXTRA_NOTIFICATION_ID, -1) ) // Share backup file ACTION_SHARE_BACKUP -> shareBackup( - context, intent.getParcelableExtra(EXTRA_URI), + context, + intent.getParcelableExtra(EXTRA_URI), intent.getIntExtra(EXTRA_NOTIFICATION_ID, -1) ) ACTION_CANCEL_RESTORE -> cancelRestore( @@ -80,7 +83,8 @@ class NotificationReceiver : BroadcastReceiver() { // Open reader activity ACTION_OPEN_CHAPTER -> { openChapter( - context, intent.getLongExtra(EXTRA_MANGA_ID, -1), + context, + intent.getLongExtra(EXTRA_MANGA_ID, -1), intent.getLongExtra(EXTRA_CHAPTER_ID, -1) ) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/notification/Notifications.kt b/app/src/main/java/eu/kanade/tachiyomi/data/notification/Notifications.kt index 0bd84af86..b55b53fed 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/notification/Notifications.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/notification/Notifications.kt @@ -82,53 +82,62 @@ object Notifications { listOf( NotificationChannel( - CHANNEL_COMMON, context.getString(R.string.channel_common), + CHANNEL_COMMON, + context.getString(R.string.channel_common), NotificationManager.IMPORTANCE_LOW ), NotificationChannel( - CHANNEL_LIBRARY, context.getString(R.string.channel_library), + CHANNEL_LIBRARY, + context.getString(R.string.channel_library), NotificationManager.IMPORTANCE_LOW ).apply { setShowBadge(false) }, NotificationChannel( - CHANNEL_DOWNLOADER_PROGRESS, context.getString(R.string.channel_progress), + CHANNEL_DOWNLOADER_PROGRESS, + context.getString(R.string.channel_progress), NotificationManager.IMPORTANCE_LOW ).apply { group = GROUP_DOWNLOADER setShowBadge(false) }, NotificationChannel( - CHANNEL_DOWNLOADER_COMPLETE, context.getString(R.string.channel_complete), + CHANNEL_DOWNLOADER_COMPLETE, + context.getString(R.string.channel_complete), NotificationManager.IMPORTANCE_LOW ).apply { group = GROUP_DOWNLOADER setShowBadge(false) }, NotificationChannel( - CHANNEL_DOWNLOADER_ERROR, context.getString(R.string.channel_errors), + CHANNEL_DOWNLOADER_ERROR, + context.getString(R.string.channel_errors), NotificationManager.IMPORTANCE_LOW ).apply { group = GROUP_DOWNLOADER setShowBadge(false) }, NotificationChannel( - CHANNEL_NEW_CHAPTERS, context.getString(R.string.channel_new_chapters), + CHANNEL_NEW_CHAPTERS, + context.getString(R.string.channel_new_chapters), NotificationManager.IMPORTANCE_DEFAULT ), NotificationChannel( - CHANNEL_UPDATES_TO_EXTS, context.getString(R.string.channel_ext_updates), + CHANNEL_UPDATES_TO_EXTS, + context.getString(R.string.channel_ext_updates), NotificationManager.IMPORTANCE_DEFAULT ), NotificationChannel( - CHANNEL_BACKUP_RESTORE_PROGRESS, context.getString(R.string.channel_progress), + CHANNEL_BACKUP_RESTORE_PROGRESS, + context.getString(R.string.channel_progress), NotificationManager.IMPORTANCE_LOW ).apply { group = GROUP_BACKUP_RESTORE setShowBadge(false) }, NotificationChannel( - CHANNEL_BACKUP_RESTORE_COMPLETE, context.getString(R.string.channel_complete), + CHANNEL_BACKUP_RESTORE_COMPLETE, + context.getString(R.string.channel_complete), NotificationManager.IMPORTANCE_HIGH ).apply { group = GROUP_BACKUP_RESTORE diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt index dbbbc3784..e6bddddf0 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt @@ -7,19 +7,19 @@ import androidx.preference.PreferenceManager import com.tfcporciuncula.flow.FlowSharedPreferences import com.tfcporciuncula.flow.Preference import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys -import eu.kanade.tachiyomi.data.preference.PreferenceValues as Values import eu.kanade.tachiyomi.data.preference.PreferenceValues.DisplayMode import eu.kanade.tachiyomi.data.preference.PreferenceValues.NsfwAllowance import eu.kanade.tachiyomi.data.track.TrackService import eu.kanade.tachiyomi.data.track.anilist.Anilist +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.onEach import java.io.File import java.text.DateFormat import java.text.SimpleDateFormat import java.util.Locale -import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.onEach +import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys +import eu.kanade.tachiyomi.data.preference.PreferenceValues as Values @OptIn(ExperimentalCoroutinesApi::class) fun Preference.asImmediateFlow(block: (value: T) -> Unit): Flow { diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistApi.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistApi.kt index 5f0afdf4e..125867750 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistApi.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistApi.kt @@ -13,12 +13,12 @@ import com.google.gson.JsonParser import eu.kanade.tachiyomi.data.database.models.Track import eu.kanade.tachiyomi.data.track.model.TrackSearch import eu.kanade.tachiyomi.network.asObservableSuccess -import java.util.Calendar import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.RequestBody.Companion.toRequestBody import rx.Observable +import java.util.Calendar class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) { @@ -271,9 +271,14 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) { } return ALManga( - struct["id"].asInt, struct["title"]["romaji"].asString, struct["coverImage"]["large"].asString, - struct["description"].nullString.orEmpty(), struct["type"].asString, struct["status"].nullString.orEmpty(), - date, struct["chapters"].nullInt ?: 0 + struct["id"].asInt, + struct["title"]["romaji"].asString, + struct["coverImage"]["large"].asString, + struct["description"].nullString.orEmpty(), + struct["type"].asString, + struct["status"].nullString.orEmpty(), + date, + struct["chapters"].nullInt ?: 0 ) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistModels.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistModels.kt index 8c8cfd576..f589e3b4d 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistModels.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistModels.kt @@ -4,9 +4,9 @@ import eu.kanade.tachiyomi.data.database.models.Track import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.data.track.model.TrackSearch +import uy.kohesive.injekt.injectLazy import java.text.SimpleDateFormat import java.util.Locale -import uy.kohesive.injekt.injectLazy data class ALManga( val media_id: Int, diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/BangumiApi.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/BangumiApi.kt index 24d95c78b..fedb1a956 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/BangumiApi.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/BangumiApi.kt @@ -12,13 +12,13 @@ import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.data.track.model.TrackSearch import eu.kanade.tachiyomi.network.POST import eu.kanade.tachiyomi.network.asObservableSuccess -import java.net.URLEncoder import okhttp3.CacheControl import okhttp3.FormBody import okhttp3.OkHttpClient import okhttp3.Request import rx.Observable import uy.kohesive.injekt.injectLazy +import java.net.URLEncoder class BangumiApi(private val client: OkHttpClient, interceptor: BangumiInterceptor) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/Kitsu.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/Kitsu.kt index 8b5ef74f1..412f04b55 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/Kitsu.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/Kitsu.kt @@ -7,10 +7,10 @@ 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 java.text.DecimalFormat import rx.Completable import rx.Observable import uy.kohesive.injekt.injectLazy +import java.text.DecimalFormat class Kitsu(private val context: Context, id: Int) : TrackService(id) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/myanimelist/MyAnimeListApi.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/myanimelist/MyAnimeListApi.kt index 0939726b2..39ae21125 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/myanimelist/MyAnimeListApi.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/myanimelist/MyAnimeListApi.kt @@ -11,13 +11,6 @@ import eu.kanade.tachiyomi.network.asObservableSuccess import eu.kanade.tachiyomi.util.lang.toCalendar import eu.kanade.tachiyomi.util.selectInt import eu.kanade.tachiyomi.util.selectText -import java.io.BufferedReader -import java.io.InputStreamReader -import java.text.SimpleDateFormat -import java.util.Calendar -import java.util.GregorianCalendar -import java.util.Locale -import java.util.zip.GZIPInputStream import okhttp3.FormBody import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.OkHttpClient @@ -30,6 +23,13 @@ import org.jsoup.nodes.Document import org.jsoup.nodes.Element import org.jsoup.parser.Parser import rx.Observable +import java.io.BufferedReader +import java.io.InputStreamReader +import java.text.SimpleDateFormat +import java.util.Calendar +import java.util.GregorianCalendar +import java.util.Locale +import java.util.zip.GZIPInputStream class MyAnimeListApi(private val client: OkHttpClient, interceptor: MyAnimeListInterceptor) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/updater/UpdaterJob.kt b/app/src/main/java/eu/kanade/tachiyomi/data/updater/UpdaterJob.kt index 524060c32..fd8d96521 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/updater/UpdaterJob.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/updater/UpdaterJob.kt @@ -15,8 +15,8 @@ import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.notification.Notifications import eu.kanade.tachiyomi.data.updater.github.GithubUpdateChecker import eu.kanade.tachiyomi.util.system.notificationManager -import java.util.concurrent.TimeUnit import kotlinx.coroutines.runBlocking +import java.util.concurrent.TimeUnit class UpdaterJob(private val context: Context, workerParams: WorkerParameters) : Worker(context, workerParams) { @@ -66,8 +66,10 @@ class UpdaterJob(private val context: Context, workerParams: WorkerParameters) : .build() val request = PeriodicWorkRequestBuilder( - 3, TimeUnit.DAYS, - 3, TimeUnit.HOURS + 3, + TimeUnit.DAYS, + 3, + TimeUnit.HOURS ) .addTag(TAG) .setConstraints(constraints) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/updater/UpdaterService.kt b/app/src/main/java/eu/kanade/tachiyomi/data/updater/UpdaterService.kt index 39596ea22..81103643e 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/updater/UpdaterService.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/updater/UpdaterService.kt @@ -20,9 +20,9 @@ import eu.kanade.tachiyomi.util.storage.getUriCompat import eu.kanade.tachiyomi.util.storage.saveTo import eu.kanade.tachiyomi.util.system.acquireWakeLock import eu.kanade.tachiyomi.util.system.isServiceRunning -import java.io.File import timber.log.Timber import uy.kohesive.injekt.injectLazy +import java.io.File class UpdaterService : Service() { diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionUpdateJob.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionUpdateJob.kt index d9d2ed398..974b42827 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionUpdateJob.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionUpdateJob.kt @@ -16,10 +16,10 @@ import eu.kanade.tachiyomi.data.notification.Notifications import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.extension.api.ExtensionGithubApi import eu.kanade.tachiyomi.util.system.notification -import java.util.concurrent.TimeUnit import kotlinx.coroutines.coroutineScope import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import java.util.concurrent.TimeUnit class ExtensionUpdateJob(private val context: Context, workerParams: WorkerParameters) : CoroutineWorker(context, workerParams) { @@ -73,8 +73,10 @@ class ExtensionUpdateJob(private val context: Context, workerParams: WorkerParam .build() val request = PeriodicWorkRequestBuilder( - 12, TimeUnit.HOURS, - 1, TimeUnit.HOURS + 12, + TimeUnit.HOURS, + 1, + TimeUnit.HOURS ) .addTag(TAG) .setConstraints(constraints) diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionGithubApi.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionGithubApi.kt index 4f45c3f24..93065dc51 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionGithubApi.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/api/ExtensionGithubApi.kt @@ -10,10 +10,10 @@ import eu.kanade.tachiyomi.extension.model.Extension import eu.kanade.tachiyomi.extension.model.LoadResult import eu.kanade.tachiyomi.extension.util.ExtensionLoader import exh.source.BlacklistedSources -import java.util.Date import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import uy.kohesive.injekt.injectLazy +import java.util.Date internal class ExtensionGithubApi { diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstaller.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstaller.kt index 7b698ee15..02ae9ae9f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstaller.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstaller.kt @@ -13,11 +13,11 @@ import com.jakewharton.rxrelay.PublishRelay import eu.kanade.tachiyomi.extension.model.Extension import eu.kanade.tachiyomi.extension.model.InstallStep import eu.kanade.tachiyomi.util.storage.getUriCompat -import java.io.File -import java.util.concurrent.TimeUnit import rx.Observable import rx.android.schedulers.AndroidSchedulers import timber.log.Timber +import java.io.File +import java.util.concurrent.TimeUnit /** * The installer which installs, updates and uninstalls the extensions. diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt index a2f51c731..f84a2337d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt @@ -178,7 +178,13 @@ internal object ExtensionLoader { } val extension = Extension.Installed( - extName, pkgName, versionName, versionCode, lang, isNsfw, sources, + extName, + pkgName, + versionName, + versionCode, + lang, + isNsfw, + sources, isUnofficial = signatureHash != officialSignature ) return LoadResult.Success(extension) diff --git a/app/src/main/java/eu/kanade/tachiyomi/network/CloudflareInterceptor.kt b/app/src/main/java/eu/kanade/tachiyomi/network/CloudflareInterceptor.kt index 5b2cccde2..de143801b 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/network/CloudflareInterceptor.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/network/CloudflareInterceptor.kt @@ -16,15 +16,15 @@ import eu.kanade.tachiyomi.util.system.WebViewUtil import eu.kanade.tachiyomi.util.system.isOutdated import eu.kanade.tachiyomi.util.system.setDefaultSettings import eu.kanade.tachiyomi.util.system.toast -import java.io.IOException -import java.util.concurrent.CountDownLatch -import java.util.concurrent.TimeUnit import okhttp3.Cookie import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.Interceptor import okhttp3.Request import okhttp3.Response import uy.kohesive.injekt.injectLazy +import java.io.IOException +import java.util.concurrent.CountDownLatch +import java.util.concurrent.TimeUnit class CloudflareInterceptor(private val context: Context) : Interceptor { diff --git a/app/src/main/java/eu/kanade/tachiyomi/network/NetworkHelper.kt b/app/src/main/java/eu/kanade/tachiyomi/network/NetworkHelper.kt index 608e0dcf1..d61ae870c 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/network/NetworkHelper.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/network/NetworkHelper.kt @@ -3,15 +3,15 @@ package eu.kanade.tachiyomi.network import android.content.Context import eu.kanade.tachiyomi.BuildConfig import eu.kanade.tachiyomi.data.preference.PreferencesHelper -import java.io.File -import java.net.InetAddress -import java.util.concurrent.TimeUnit import okhttp3.Cache import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.dnsoverhttps.DnsOverHttps import okhttp3.logging.HttpLoggingInterceptor import uy.kohesive.injekt.injectLazy +import java.io.File +import java.net.InetAddress +import java.util.concurrent.TimeUnit /* SY --> */ open /* SY <-- */ class NetworkHelper(context: Context) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/network/OkHttpExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/network/OkHttpExtensions.kt index 8d86629cf..5e8b660d3 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/network/OkHttpExtensions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/network/OkHttpExtensions.kt @@ -1,9 +1,5 @@ package eu.kanade.tachiyomi.network -import java.io.IOException -import java.util.concurrent.atomic.AtomicBoolean -import kotlin.coroutines.resume -import kotlin.coroutines.resumeWithException import kotlinx.coroutines.suspendCancellableCoroutine import okhttp3.Call import okhttp3.Callback @@ -13,6 +9,10 @@ import okhttp3.Response import rx.Observable import rx.Producer import rx.Subscription +import java.io.IOException +import java.util.concurrent.atomic.AtomicBoolean +import kotlin.coroutines.resume +import kotlin.coroutines.resumeWithException fun Call.asObservable(): Observable { return Observable.unsafeCreate { subscriber -> @@ -54,22 +54,24 @@ fun Call.asObservable(): Observable { // Based on https://github.com/gildor/kotlin-coroutines-okhttp suspend fun Call.await(assertSuccess: Boolean = false): Response { return suspendCancellableCoroutine { continuation -> - enqueue(object : Callback { - override fun onResponse(call: Call, response: Response) { - if (assertSuccess && !response.isSuccessful) { - continuation.resumeWithException(Exception("HTTP error ${response.code}")) - return + enqueue( + object : Callback { + override fun onResponse(call: Call, response: Response) { + if (assertSuccess && !response.isSuccessful) { + continuation.resumeWithException(Exception("HTTP error ${response.code}")) + return + } + + continuation.resume(response) } - continuation.resume(response) + override fun onFailure(call: Call, e: IOException) { + // Don't bother with resuming the continuation if it is already cancelled. + if (continuation.isCancelled) return + continuation.resumeWithException(e) + } } - - override fun onFailure(call: Call, e: IOException) { - // Don't bother with resuming the continuation if it is already cancelled. - if (continuation.isCancelled) return - continuation.resumeWithException(e) - } - }) + ) continuation.invokeOnCancellation { try { diff --git a/app/src/main/java/eu/kanade/tachiyomi/network/ProgressResponseBody.kt b/app/src/main/java/eu/kanade/tachiyomi/network/ProgressResponseBody.kt index 53799e9ca..ff56520b5 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/network/ProgressResponseBody.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/network/ProgressResponseBody.kt @@ -1,6 +1,5 @@ package eu.kanade.tachiyomi.network -import java.io.IOException import okhttp3.MediaType import okhttp3.ResponseBody import okio.Buffer @@ -8,6 +7,7 @@ import okio.BufferedSource import okio.ForwardingSource import okio.Source import okio.buffer +import java.io.IOException class ProgressResponseBody(private val responseBody: ResponseBody, private val progressListener: ProgressListener) : ResponseBody() { diff --git a/app/src/main/java/eu/kanade/tachiyomi/network/Requests.kt b/app/src/main/java/eu/kanade/tachiyomi/network/Requests.kt index 8fc2b9a6f..3d3b88b54 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/network/Requests.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/network/Requests.kt @@ -1,11 +1,11 @@ package eu.kanade.tachiyomi.network -import java.util.concurrent.TimeUnit.MINUTES import okhttp3.CacheControl import okhttp3.FormBody import okhttp3.Headers import okhttp3.Request import okhttp3.RequestBody +import java.util.concurrent.TimeUnit.MINUTES private val DEFAULT_CACHE_CONTROL = CacheControl.Builder().maxAge(10, MINUTES).build() private val DEFAULT_HEADERS = Headers.Builder().build() diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt b/app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt index fb3459382..5c4fdd099 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt @@ -16,6 +16,12 @@ import eu.kanade.tachiyomi.util.lang.compareToCaseInsensitiveNaturalOrder import eu.kanade.tachiyomi.util.storage.DiskUtil import eu.kanade.tachiyomi.util.storage.EpubFile import eu.kanade.tachiyomi.util.system.ImageUtil +import junrar.Archive +import junrar.rarfile.FileHeader +import rx.Observable +import timber.log.Timber +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get import java.io.File import java.io.FileInputStream import java.io.InputStream @@ -23,12 +29,6 @@ import java.util.Locale import java.util.concurrent.TimeUnit import java.util.zip.ZipEntry import java.util.zip.ZipFile -import junrar.Archive -import junrar.rarfile.FileHeader -import rx.Observable -import timber.log.Timber -import uy.kohesive.injekt.Injekt -import uy.kohesive.injekt.api.get class LocalSource(private val context: Context) : CatalogueSource { companion object { diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/SourceManager.kt b/app/src/main/java/eu/kanade/tachiyomi/source/SourceManager.kt index 07621cc3d..c8175ac16 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/source/SourceManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/SourceManager.kt @@ -32,13 +32,13 @@ import exh.TSUMINO_SOURCE_ID import exh.source.BlacklistedSources import exh.source.DelegatedHttpSource import exh.source.EnhancedHttpSource -import kotlin.reflect.KClass import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.flow.launchIn import rx.Observable import uy.kohesive.injekt.injectLazy +import kotlin.reflect.KClass open class SourceManager(private val context: Context) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/HttpSource.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/HttpSource.kt index c3d9e2128..d6d69f144 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/HttpSource.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/HttpSource.kt @@ -16,9 +16,6 @@ import eu.kanade.tachiyomi.source.model.SManga import exh.log.maybeInjectEHLogger import exh.patch.injectPatches import exh.source.DelegatedHttpSource -import java.net.URI -import java.net.URISyntaxException -import java.security.MessageDigest import okhttp3.Headers import okhttp3.OkHttpClient import okhttp3.Request @@ -26,6 +23,9 @@ import okhttp3.Response import rx.Observable import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import java.net.URI +import java.net.URISyntaxException +import java.security.MessageDigest /** * A simple implementation for sources from a website. diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/MetadataSource.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/MetadataSource.kt index 11355adfd..eb4ac72c9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/MetadataSource.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/MetadataSource.kt @@ -13,11 +13,11 @@ import exh.metadata.metadata.base.RaisedSearchMetadata import exh.metadata.metadata.base.getFlatMetadataForManga import exh.metadata.metadata.base.insertFlatMetadata import exh.source.EnhancedHttpSource -import kotlin.reflect.KClass import rx.Completable import rx.Single import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import kotlin.reflect.KClass /** * LEWD! diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/SuspendHttpSource.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/SuspendHttpSource.kt index ac85911ec..6a446fb4a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/SuspendHttpSource.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/SuspendHttpSource.kt @@ -9,7 +9,6 @@ import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga import exh.util.asObservable -import kotlin.jvm.Throws import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow @@ -17,6 +16,7 @@ import kotlinx.coroutines.runBlocking import okhttp3.Request import okhttp3.Response import rx.Observable +import kotlin.jvm.Throws /** * A simple implementation for sources from a website, but for Coroutines. diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/EHentai.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/EHentai.kt index c1aaed0d9..64fafb9a5 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/EHentai.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/EHentai.kt @@ -53,8 +53,6 @@ import exh.util.ignore import exh.util.nullIfBlank import exh.util.trimOrNull import exh.util.urlImportFetchSearchManga -import java.net.URLEncoder -import java.util.ArrayList import kotlinx.coroutines.runBlocking import okhttp3.CacheControl import okhttp3.CookieJar @@ -70,6 +68,8 @@ import org.jsoup.nodes.TextNode import rx.Observable import rx.Single import uy.kohesive.injekt.injectLazy +import java.net.URLEncoder +import java.util.ArrayList // TODO Consider gallery updating when doing tabbed browsing @Nsfw @@ -747,7 +747,8 @@ class EHentai( return FilterList( AutoCompleteTags( EHTags.getNameSpaces().map { "$it:" } + EHTags.getAllTags(), - EHTags.getNameSpaces().map { "$it:" }, excludePrefix + EHTags.getNameSpaces().map { "$it:" }, + excludePrefix ), if (preferences.eh_watchedListDefaultState().get()) { Watched(isEnabled = true) diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/Hitomi.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/Hitomi.kt index 67f2a9ff7..34072addb 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/Hitomi.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/Hitomi.kt @@ -18,10 +18,10 @@ import exh.metadata.metadata.base.RaisedTag import exh.source.DelegatedHttpSource import exh.ui.metadata.adapters.HitomiDescriptionAdapter import exh.util.urlImportFetchSearchManga -import java.text.SimpleDateFormat -import java.util.Locale import org.jsoup.nodes.Document import rx.Observable +import java.text.SimpleDateFormat +import java.util.Locale class Hitomi(delegate: HttpSource, val context: Context) : DelegatedHttpSource(delegate), @@ -85,7 +85,8 @@ class Hitomi(delegate: HttpSource, val context: Context) : characters = content.select("a").map { it.text() } tags += characters.map { RaisedTag( - "character", it, + "character", + it, HitomiSearchMetadata.TAG_TYPE_DEFAULT ) } @@ -96,7 +97,8 @@ class Hitomi(delegate: HttpSource, val context: Context) : else if (it.attr("href").startsWith("/tag/female")) "female" else "misc" RaisedTag( - ns, it.text().dropLast(if (ns == "misc") 0 else 2), + ns, + it.text().dropLast(if (ns == "misc") 0 else 2), HitomiSearchMetadata.TAG_TYPE_DEFAULT ) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/MangaDex.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/MangaDex.kt index ecf394a9d..78d82aef0 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/MangaDex.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/MangaDex.kt @@ -41,7 +41,6 @@ import exh.source.DelegatedHttpSource import exh.ui.metadata.adapters.MangaDexDescriptionAdapter import exh.util.urlImportFetchSearchManga import exh.widget.preference.MangadexLoginDialog -import kotlin.reflect.KClass import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow @@ -57,6 +56,7 @@ import rx.Observable import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy +import kotlin.reflect.KClass class MangaDex(delegate: HttpSource, val context: Context) : DelegatedHttpSource(delegate), diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/PervEden.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/PervEden.kt index 0aa3dccf7..1652a8cda 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/PervEden.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/PervEden.kt @@ -77,7 +77,8 @@ class PervEden(delegate: HttpSource, val context: Context) : if (it is Element && it.tagName() == "a") { artist = it.text() tags += RaisedTag( - "artist", it.text().toLowerCase(), + "artist", + it.text().toLowerCase(), RaisedSearchMetadata.TAG_TYPE_VIRTUAL ) } @@ -85,7 +86,8 @@ class PervEden(delegate: HttpSource, val context: Context) : "Genres" -> { if (it is Element && it.tagName() == "a") { tags += RaisedTag( - null, it.text().toLowerCase(), + null, + it.text().toLowerCase(), PervEdenSearchMetadata.TAG_TYPE_DEFAULT ) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/english/EightMuses.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/english/EightMuses.kt index 961e557ff..c823b0ad2 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/english/EightMuses.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/english/EightMuses.kt @@ -65,8 +65,8 @@ class EightMuses(delegate: HttpSource, val context: Context) : thumbnailUrl = parseSelf(input).let { it.albums + it.images }.firstOrNull() ?.selectFirst(".lazyload") ?.attr("data-src")?.let { - baseUrl + it - } + baseUrl + it + } tags.clear() tags += RaisedTag( diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/english/Tsumino.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/english/Tsumino.kt index 3b64bdf3c..5ad29caa6 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/english/Tsumino.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/english/Tsumino.kt @@ -20,10 +20,10 @@ import exh.ui.metadata.adapters.TsuminoDescriptionAdapter import exh.util.dropBlank import exh.util.trimAll import exh.util.urlImportFetchSearchManga -import java.text.SimpleDateFormat -import java.util.Locale import org.jsoup.nodes.Document import rx.Observable +import java.text.SimpleDateFormat +import java.util.Locale class Tsumino(delegate: HttpSource, val context: Context) : DelegatedHttpSource(delegate), diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/base/activity/BaseActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/base/activity/BaseActivity.kt index 786e2e2da..0f4438689 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/base/activity/BaseActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/base/activity/BaseActivity.kt @@ -7,11 +7,11 @@ import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.lifecycleScope import androidx.viewbinding.ViewBinding import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.data.preference.PreferenceValues as Values import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.ui.security.SecureActivityDelegate import eu.kanade.tachiyomi.util.system.LocaleHelper import uy.kohesive.injekt.injectLazy +import eu.kanade.tachiyomi.data.preference.PreferenceValues as Values abstract class BaseActivity : AppCompatActivity() { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/BaseController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/BaseController.kt index f1e980a7d..8d4fea215 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/BaseController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/BaseController.kt @@ -22,27 +22,29 @@ abstract class BaseController(bundle: Bundle? = null) : lateinit var binding: VB init { - addLifecycleListener(object : LifecycleListener() { - override fun postCreateView(controller: Controller, view: View) { - onViewCreated(view) - } + addLifecycleListener( + object : LifecycleListener() { + override fun postCreateView(controller: Controller, view: View) { + onViewCreated(view) + } - override fun preCreateView(controller: Controller) { - Timber.d("Create view for ${controller.instance()}") - } + override fun preCreateView(controller: Controller) { + Timber.d("Create view for ${controller.instance()}") + } - override fun preAttach(controller: Controller, view: View) { - Timber.d("Attach view for ${controller.instance()}") - } + override fun preAttach(controller: Controller, view: View) { + Timber.d("Attach view for ${controller.instance()}") + } - override fun preDetach(controller: Controller, view: View) { - Timber.d("Detach view for ${controller.instance()}") - } + override fun preDetach(controller: Controller, view: View) { + Timber.d("Detach view for ${controller.instance()}") + } - override fun preDestroyView(controller: Controller, view: View) { - Timber.d("Destroy view for ${controller.instance()}") + override fun preDestroyView(controller: Controller, view: View) { + Timber.d("Destroy view for ${controller.instance()}") + } } - }) + ) } override val containerView: View? @@ -98,17 +100,19 @@ abstract class BaseController(bundle: Bundle? = null) : var expandActionViewFromInteraction = false fun MenuItem.fixExpand(onExpand: ((MenuItem) -> Boolean)? = null, onCollapse: ((MenuItem) -> Boolean)? = null) { - setOnActionExpandListener(object : MenuItem.OnActionExpandListener { - override fun onMenuItemActionExpand(item: MenuItem): Boolean { - return onExpand?.invoke(item) ?: true - } + setOnActionExpandListener( + object : MenuItem.OnActionExpandListener { + override fun onMenuItemActionExpand(item: MenuItem): Boolean { + return onExpand?.invoke(item) ?: true + } - override fun onMenuItemActionCollapse(item: MenuItem): Boolean { - activity?.invalidateOptionsMenu() + override fun onMenuItemActionCollapse(item: MenuItem): Boolean { + activity?.invalidateOptionsMenu() - return onCollapse?.invoke(item) ?: true + return onCollapse?.invoke(item) ?: true + } } - }) + ) if (expandActionViewFromInteraction) { expandActionViewFromInteraction = false diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionPresenter.kt index 1742b29e8..468857a74 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionPresenter.kt @@ -10,12 +10,12 @@ import eu.kanade.tachiyomi.extension.model.Extension import eu.kanade.tachiyomi.extension.model.InstallStep import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter import eu.kanade.tachiyomi.util.system.LocaleHelper -import java.util.concurrent.TimeUnit import rx.Observable import rx.Subscription import rx.android.schedulers.AndroidSchedulers import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import java.util.concurrent.TimeUnit private typealias ExtensionTuple = Triple, List, List> diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/MigrationMangaDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/MigrationMangaDialog.kt index 6409afcb7..3a6370f2b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/MigrationMangaDialog.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/MigrationMangaDialog.kt @@ -24,7 +24,8 @@ class MigrationMangaDialog(bundle: Bundle? = null) : DialogController(bundle) override fun onCreateDialog(savedViewState: Bundle?): Dialog { val confirmRes = if (copy) R.plurals.copy_manga else R.plurals.migrate_manga val confirmString = applicationContext?.resources?.getQuantityString( - confirmRes, mangaSet, + confirmRes, + mangaSet, mangaSet, ( if (mangaSkipped > 0) " " + applicationContext?.getString(R.string.skipping_, mangaSkipped) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigratingManga.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigratingManga.kt index 55fecdf1f..a77681da5 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigratingManga.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigratingManga.kt @@ -6,10 +6,10 @@ import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.SourceManager import exh.util.DeferredField import exh.util.await -import kotlin.coroutines.CoroutineContext import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.SupervisorJob import kotlinx.coroutines.channels.ConflatedBroadcastChannel +import kotlin.coroutines.CoroutineContext class MigratingManga( private val db: DatabaseHelper, diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationListController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationListController.kt index c8f92b013..1ad1a633f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationListController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationListController.kt @@ -36,7 +36,6 @@ import eu.kanade.tachiyomi.util.system.toast import exh.smartsearch.SmartSearchEngine import exh.util.await import exh.util.executeOnIO -import java.util.concurrent.atomic.AtomicInteger import kotlinx.coroutines.CancellationException import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -51,6 +50,7 @@ import kotlinx.coroutines.withContext import rx.schedulers.Schedulers import timber.log.Timber import uy.kohesive.injekt.injectLazy +import java.util.concurrent.atomic.AtomicInteger class MigrationListController(bundle: Bundle? = null) : BaseController(bundle), @@ -287,7 +287,9 @@ class MigrationListController(bundle: Bundle? = null) : if (res != null) { activity?.toast( res.getQuantityString( - R.plurals.manga_migrated, manualMigrations, manualMigrations + R.plurals.manga_migrated, + manualMigrations, + manualMigrations ) ) } @@ -433,7 +435,9 @@ class MigrationListController(bundle: Bundle? = null) : if (adapter?.itemCount == 1) { menuMigrate.icon = VectorDrawableCompat.create( - resources!!, R.drawable.ic_done_24dp, null + resources!!, + R.drawable.ic_done_24dp, + null ) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationProcessAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationProcessAdapter.kt index f1d054d90..f2ea08212 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationProcessAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationProcessAdapter.kt @@ -8,11 +8,11 @@ import eu.kanade.tachiyomi.data.database.models.MangaCategory import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.ui.browse.migration.MigrationFlags import eu.kanade.tachiyomi.util.lang.launchUI -import java.util.Date import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.cancel import kotlinx.coroutines.withContext import uy.kohesive.injekt.injectLazy +import java.util.Date class MigrationProcessAdapter( val controller: MigrationListController @@ -80,7 +80,9 @@ class MigrationProcessAdapter( db.getManga(manga.searchResult.get() ?: return@launchUI).executeAsBlocking() ?: return@launchUI migrateMangaInternal( - manga.manga() ?: return@launchUI, toMangaObj, !copy + manga.manga() ?: return@launchUI, + toMangaObj, + !copy ) } removeManga(position) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationProcessHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationProcessHolder.kt index d02b73615..ddb764a82 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationProcessHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationProcessHolder.kt @@ -20,7 +20,6 @@ import eu.kanade.tachiyomi.util.system.getResourceColor import eu.kanade.tachiyomi.util.view.setVectorCompat import exh.MERGED_SOURCE_ID import exh.util.await -import java.text.DecimalFormat import kotlinx.android.synthetic.main.migration_manga_card.view.gradient import kotlinx.android.synthetic.main.migration_manga_card.view.loading_group import kotlinx.android.synthetic.main.migration_manga_card.view.manga_chapters @@ -41,6 +40,7 @@ import kotlinx.coroutines.withContext import reactivecircus.flowbinding.android.view.clicks import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy +import java.text.DecimalFormat class MigrationProcessHolder( private val view: View, @@ -124,7 +124,8 @@ class MigrationProcessHolder( .onEach { adapter.controller.router.pushController( MangaController( - searchResult, true + searchResult, + true ).withFadeTransaction() ) }.launchIn(scope) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaPresenter.kt index 27393ce52..b8b4337cb 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaPresenter.kt @@ -11,12 +11,12 @@ import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter import eu.kanade.tachiyomi.ui.browse.migration.MigrationFlags import eu.kanade.tachiyomi.util.chapter.syncChaptersWithSource import exh.debug.DebugFunctions.sourceManager -import java.util.Date import rx.Observable import rx.android.schedulers.AndroidSchedulers import rx.schedulers.Schedulers import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import java.util.Date class MigrationMangaPresenter( private val sourceId: Long, diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchController.kt index ba4a842a4..102d3ae0f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchController.kt @@ -170,17 +170,19 @@ class SearchController( val searchItem = menu.findItem(R.id.action_search) val searchView = searchItem.actionView as SearchView - searchItem.setOnActionExpandListener(object : MenuItem.OnActionExpandListener { - override fun onMenuItemActionExpand(item: MenuItem?): Boolean { - searchView.onActionViewExpanded() // Required to show the query in the view - searchView.setQuery(presenter.query, false) - return true - } + searchItem.setOnActionExpandListener( + object : MenuItem.OnActionExpandListener { + override fun onMenuItemActionExpand(item: MenuItem?): Boolean { + searchView.onActionViewExpanded() // Required to show the query in the view + searchView.setQuery(presenter.query, false) + return true + } - override fun onMenuItemActionCollapse(item: MenuItem?): Boolean { - return true + override fun onMenuItemActionCollapse(item: MenuItem?): Boolean { + return true + } } - }) + ) searchView.queryTextEvents() .filter { it is QueryTextEvent.QuerySubmitted } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/SelectionHeader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/SelectionHeader.kt index c39a1fbda..8619cdfbf 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/SelectionHeader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/SelectionHeader.kt @@ -45,7 +45,7 @@ class SelectionHeader : AbstractHeaderItem() { // Intentionally empty } - class Holder(view: View, adapter: FlexibleAdapter */ IFlexible /* SY <-- */ >) : BaseFlexibleViewHolder(view, adapter) { + class Holder(view: View, adapter: FlexibleAdapter */ IFlexible /* SY <-- */>) : BaseFlexibleViewHolder(view, adapter) { init { title.text = view.context.getString(/* SY --> */ R.string.select_a_source_to_migrate_from /* SY <-- */) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourceFilterController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourceFilterController.kt index 3599ebf28..030d0a6c2 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourceFilterController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourceFilterController.kt @@ -20,13 +20,13 @@ import eu.kanade.tachiyomi.util.preference.switchPreferenceCategory import eu.kanade.tachiyomi.util.preference.titleRes import eu.kanade.tachiyomi.util.system.LocaleHelper import eu.kanade.tachiyomi.widget.preference.SwitchPreferenceCategory -import java.util.TreeMap import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import reactivecircus.flowbinding.appcompat.queryTextChanges import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import java.util.TreeMap class SourceFilterController : SettingsController() { @@ -194,16 +194,18 @@ class SourceFilterController : SettingsController() { .launchIn(scope) // Fixes problem with the overflow icon showing up in lieu of search - searchItem.setOnActionExpandListener(object : MenuItem.OnActionExpandListener { - override fun onMenuItemActionExpand(item: MenuItem): Boolean { - return true - } + searchItem.setOnActionExpandListener( + object : MenuItem.OnActionExpandListener { + override fun onMenuItemActionExpand(item: MenuItem): Boolean { + return true + } - override fun onMenuItemActionCollapse(item: MenuItem): Boolean { - activity?.invalidateOptionsMenu() - return true + override fun onMenuItemActionCollapse(item: MenuItem): Boolean { + activity?.invalidateOptionsMenu() + return true + } } - }) + ) } private fun drawSources() { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcePresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcePresenter.kt index 80ca24534..830d5819d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcePresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcePresenter.kt @@ -6,7 +6,6 @@ import eu.kanade.tachiyomi.source.CatalogueSource import eu.kanade.tachiyomi.source.LocalSource import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter -import java.util.TreeMap import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -21,6 +20,7 @@ import rx.Observable import rx.Subscription import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import java.util.TreeMap /** * Presenter of [SourceController] diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourcePresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourcePresenter.kt index 16d1a3731..0d3d778a9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourcePresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourcePresenter.kt @@ -38,8 +38,6 @@ import eu.kanade.tachiyomi.ui.browse.source.filter.TriStateItem import eu.kanade.tachiyomi.ui.browse.source.filter.TriStateSectionItem import eu.kanade.tachiyomi.util.removeCovers import exh.EXHSavedSearch -import java.lang.RuntimeException -import java.util.Date import rx.Observable import rx.Subscription import rx.android.schedulers.AndroidSchedulers @@ -49,6 +47,8 @@ import timber.log.Timber import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import xyz.nulldev.ts.api.http.serializer.FilterSerializer +import java.lang.RuntimeException +import java.util.Date /** * Presenter of [BrowseSourceController]. diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/Pager.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/Pager.kt index 9a796c342..267ffea7c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/Pager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/Pager.kt @@ -15,9 +15,9 @@ abstract class Pager(var currentPage: Int = 1) { var hasNextPage = true private set - protected val results: PublishRelay< /* SY --> */ Triple /* SY <-- */ /* SY --> */, List? /* SY <-- */ >> = PublishRelay.create() + protected val results: PublishRelay */ Triple /* SY <-- */ /* SY --> */, List? /* SY <-- */>> = PublishRelay.create() - fun results(): Observable< /* SY --> */ Triple /* SY <-- */ /* SY --> */, List?> /* SY <-- */> { + fun results(): Observable */ Triple /* SY <-- */ /* SY --> */, List?> /* SY <-- */> { return results.asObservable() } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SourceEnhancedEHentaiListHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SourceEnhancedEHentaiListHolder.kt index d75b810a2..9ff22bbc1 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SourceEnhancedEHentaiListHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SourceEnhancedEHentaiListHolder.kt @@ -17,7 +17,6 @@ import exh.metadata.metadata.EHentaiSearchMetadata import exh.metadata.metadata.base.RaisedSearchMetadata import exh.util.SourceTagsUtil import exh.util.SourceTagsUtil.Companion.getLocaleSourceUtil -import java.util.Date import kotlinx.android.synthetic.main.source_enhanced_ehentai_list_item.date_posted import kotlinx.android.synthetic.main.source_enhanced_ehentai_list_item.genre import kotlinx.android.synthetic.main.source_enhanced_ehentai_list_item.language @@ -25,6 +24,7 @@ import kotlinx.android.synthetic.main.source_enhanced_ehentai_list_item.rating_b import kotlinx.android.synthetic.main.source_enhanced_ehentai_list_item.thumbnail import kotlinx.android.synthetic.main.source_enhanced_ehentai_list_item.title import kotlinx.android.synthetic.main.source_enhanced_ehentai_list_item.uploader +import java.util.Date /** * Class used to hold the displayed data of a manga in the catalogue, like the cover or the title. diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SourceItem.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SourceItem.kt index a399b5fab..aed3c26e0 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SourceItem.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SourceItem.kt @@ -50,10 +50,13 @@ class SourceItem(val manga: Manga, private val displayMode: Preference) : AbstractFlexibleItem( holder.itemView.context, - android.R.layout.simple_spinner_item, filter.values + android.R.layout.simple_spinner_item, + filter.values ).apply { setDropDownViewResource(R.layout.common_spinner_item) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/filter/TriStateItem.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/filter/TriStateItem.kt index 1c8feb830..9bc93ee7f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/filter/TriStateItem.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/filter/TriStateItem.kt @@ -9,10 +9,10 @@ import eu.davidea.flexibleadapter.FlexibleAdapter import eu.davidea.flexibleadapter.items.AbstractFlexibleItem import eu.davidea.flexibleadapter.items.IFlexible import eu.davidea.viewholders.FlexibleViewHolder -import eu.kanade.tachiyomi.R as TR import eu.kanade.tachiyomi.source.model.Filter import eu.kanade.tachiyomi.util.system.dpToPx import eu.kanade.tachiyomi.util.system.getResourceColor +import eu.kanade.tachiyomi.R as TR open class TriStateItem(val filter: Filter.TriState) : AbstractFlexibleItem() { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchController.kt index 04ba78da0..64bbb04c8 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchController.kt @@ -108,17 +108,19 @@ open class GlobalSearchController( val searchView = searchItem.actionView as SearchView searchView.maxWidth = Int.MAX_VALUE - searchItem.setOnActionExpandListener(object : MenuItem.OnActionExpandListener { - override fun onMenuItemActionExpand(item: MenuItem?): Boolean { - searchView.onActionViewExpanded() // Required to show the query in the view - searchView.setQuery(presenter.query, false) - return true - } + searchItem.setOnActionExpandListener( + object : MenuItem.OnActionExpandListener { + override fun onMenuItemActionExpand(item: MenuItem?): Boolean { + searchView.onActionViewExpanded() // Required to show the query in the view + searchView.setQuery(presenter.query, false) + return true + } - override fun onMenuItemActionCollapse(item: MenuItem?): Boolean { - return true + override fun onMenuItemActionCollapse(item: MenuItem?): Boolean { + return true + } } - }) + ) searchView.queryTextEvents() .filterIsInstance() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/index/IndexPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/index/IndexPresenter.kt index 308cc227c..ef09d1865 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/index/IndexPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/index/IndexPresenter.kt @@ -17,7 +17,6 @@ import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourcePresenter.Companion.toItems import exh.EXHSavedSearch import exh.util.asFlow -import java.lang.RuntimeException import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -33,6 +32,7 @@ import timber.log.Timber import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import xyz.nulldev.ts.api.http.serializer.FilterSerializer +import java.lang.RuntimeException /** * Presenter of [IndexController] diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryController.kt index 5a5c27928..e1fac83de 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryController.kt @@ -198,8 +198,11 @@ class CategoryController : R.id.action_delete -> { undoHelper = UndoHelper(adapter, this) undoHelper?.start( - adapter.selectedPositions, activity!!.root_coordinator, - R.string.snack_categories_deleted, R.string.action_undo, 3000 + adapter.selectedPositions, + activity!!.root_coordinator, + R.string.snack_categories_deleted, + R.string.action_undo, + 3000 ) mode.finish() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/category/biometric/BiometricTimesController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/category/biometric/BiometricTimesController.kt index 243815534..84c5be808 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/category/biometric/BiometricTimesController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/category/biometric/BiometricTimesController.kt @@ -20,12 +20,12 @@ import eu.kanade.tachiyomi.ui.base.controller.FabController import eu.kanade.tachiyomi.ui.base.controller.NucleusController import eu.kanade.tachiyomi.util.system.toast import eu.kanade.tachiyomi.util.view.shrinkOnScroll -import kotlin.time.Duration -import kotlin.time.ExperimentalTime import kotlinx.android.synthetic.main.main_activity.root_coordinator import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import reactivecircus.flowbinding.android.view.clicks +import kotlin.time.Duration +import kotlin.time.ExperimentalTime /** * Controller to manage the lock times for the biometric lock. @@ -197,8 +197,11 @@ class BiometricTimesController : R.id.action_delete -> { undoHelper = UndoHelper(adapter, this) undoHelper?.start( - adapter.selectedPositions, activity!!.root_coordinator, - R.string.biometric_lock_time_deleted_snack, R.string.action_undo, 3000 + adapter.selectedPositions, + activity!!.root_coordinator, + R.string.biometric_lock_time_deleted_snack, + R.string.action_undo, + 3000 ) mode.finish() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/category/biometric/BiometricTimesHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/category/biometric/BiometricTimesHolder.kt index b9abdc8cb..a6a2943d4 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/category/biometric/BiometricTimesHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/category/biometric/BiometricTimesHolder.kt @@ -3,9 +3,9 @@ package eu.kanade.tachiyomi.ui.category.biometric import android.view.View import androidx.core.view.isVisible import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder -import kotlin.time.ExperimentalTime import kotlinx.android.synthetic.main.categories_item.reorder import kotlinx.android.synthetic.main.categories_item.title +import kotlin.time.ExperimentalTime /** * Holder used to display category items. diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/category/biometric/BiometricTimesPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/category/biometric/BiometricTimesPresenter.kt index f399100bf..c669bcef2 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/category/biometric/BiometricTimesPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/category/biometric/BiometricTimesPresenter.kt @@ -5,7 +5,6 @@ import com.elvishew.xlog.XLog import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.preference.plusAssign import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter -import kotlin.time.ExperimentalTime import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -15,6 +14,7 @@ import rx.Observable import rx.android.schedulers.AndroidSchedulers import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import kotlin.time.ExperimentalTime /** * Presenter of [BiometricTimesController]. Used to manage the categories of the library. diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/category/sources/SourceCategoryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/category/sources/SourceCategoryController.kt index a21e843ff..324e3ed77 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/category/sources/SourceCategoryController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/category/sources/SourceCategoryController.kt @@ -195,8 +195,11 @@ class SourceCategoryController : R.id.action_delete -> { undoHelper = UndoHelper(adapter, this) undoHelper?.start( - adapter.selectedPositions, activity!!.root_coordinator, - R.string.snack_categories_deleted, R.string.action_undo, 3000 + adapter.selectedPositions, + activity!!.root_coordinator, + R.string.snack_categories_deleted, + R.string.action_undo, + 3000 ) mode.finish() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadController.kt index eba0cba6b..5fb2d934a 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadController.kt @@ -18,13 +18,13 @@ import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.ui.base.controller.FabController import eu.kanade.tachiyomi.ui.base.controller.NucleusController import eu.kanade.tachiyomi.util.view.shrinkOnScroll -import java.util.concurrent.TimeUnit import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import reactivecircus.flowbinding.android.view.clicks import rx.Observable import rx.Subscription import rx.android.schedulers.AndroidSchedulers +import java.util.concurrent.TimeUnit /** * Controller that shows the currently active downloads. diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryView.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryView.kt index c4c0e3ae6..f6e455323 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryView.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryView.kt @@ -22,7 +22,6 @@ import eu.kanade.tachiyomi.util.system.toast import eu.kanade.tachiyomi.util.view.inflate import eu.kanade.tachiyomi.widget.AutofitRecyclerView import exh.ui.LoadingHandle -import java.util.concurrent.TimeUnit import kotlinx.android.synthetic.main.library_category.view.fast_scroller import kotlinx.android.synthetic.main.library_category.view.swipe_refresh import kotlinx.coroutines.CoroutineScope @@ -40,6 +39,7 @@ import rx.android.schedulers.AndroidSchedulers import rx.subscriptions.CompositeSubscription import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy +import java.util.concurrent.TimeUnit /** * Fragment containing the library manga for a certain category. @@ -131,16 +131,16 @@ class LibraryCategoryView @JvmOverloads constructor(context: Context, attrs: Att .onEach { // SY --> if (LibraryUpdateService.start( - context, - if (controller.presenter.groupType == LibraryGroup.BY_DEFAULT) category else null, - group = controller.presenter.groupType, - groupExtra = when (controller.presenter.groupType) { - LibraryGroup.BY_DEFAULT -> null - LibraryGroup.BY_SOURCE -> category.name - LibraryGroup.BY_STATUS, LibraryGroup.BY_TRACK_STATUS -> category.id.toString() - else -> null - } - ) + context, + if (controller.presenter.groupType == LibraryGroup.BY_DEFAULT) category else null, + group = controller.presenter.groupType, + groupExtra = when (controller.presenter.groupType) { + LibraryGroup.BY_DEFAULT -> null + LibraryGroup.BY_SOURCE -> category.name + LibraryGroup.BY_STATUS, LibraryGroup.BY_TRACK_STATUS -> category.id.toString() + else -> null + } + ) ) { context.toast( when { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt index aba08c0a5..c15b4b79b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt @@ -52,7 +52,6 @@ import exh.favorites.FavoritesSyncStatus import exh.mangaDexSourceIds import exh.nHentaiSourceIds import exh.ui.LoaderManager -import java.util.concurrent.TimeUnit import kotlinx.android.synthetic.main.main_activity.tabs import kotlinx.coroutines.flow.drop import kotlinx.coroutines.flow.filter @@ -65,6 +64,7 @@ import rx.Subscription import rx.android.schedulers.AndroidSchedulers import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import java.util.concurrent.TimeUnit class LibraryController( bundle: Bundle? = null, diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryItem.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryItem.kt index 1f342debd..35498797b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryItem.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryItem.kt @@ -64,7 +64,9 @@ class LibraryItem(val manga: LibraryManga, private val libraryDisplayMode: Prefe view.apply { card.layoutParams = FrameLayout.LayoutParams(MATCH_PARENT, coverHeight) gradient.layoutParams = FrameLayout.LayoutParams( - MATCH_PARENT, coverHeight / 2, Gravity.BOTTOM + MATCH_PARENT, + coverHeight / 2, + Gravity.BOTTOM ) } LibraryCompactGridHolder(view, adapter) @@ -74,7 +76,8 @@ class LibraryItem(val manga: LibraryManga, private val libraryDisplayMode: Prefe val coverHeight = parent.itemWidth / 3 * 4 view.apply { card.layoutParams = ConstraintLayout.LayoutParams( - MATCH_PARENT, coverHeight + MATCH_PARENT, + coverHeight ) } LibraryComfortableGridHolder(view, adapter, libraryDisplayMode.get() != DisplayMode.NO_TITLE_GRID) @@ -156,7 +159,8 @@ class LibraryItem(val manga: LibraryManga, private val libraryDisplayMode: Prefe } cleanConstraint.split(",").all { if (raisedTags == null) containsGenre(it.trim(), genres) else containsRaisedGenre( - parseTag(it.trim()), raisedTags + parseTag(it.trim()), + raisedTags ) } } else if (raisedTags == null) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt index 164be76b0..d8adac4d2 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt @@ -35,8 +35,6 @@ import exh.md.utils.MdUtil import exh.util.await import exh.util.isLewd import exh.util.nullIfBlank -import java.util.Collections -import java.util.Comparator import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.singleOrNull import kotlinx.coroutines.runBlocking @@ -46,6 +44,8 @@ import rx.android.schedulers.AndroidSchedulers import rx.schedulers.Schedulers import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import java.util.Collections +import java.util.Comparator /** * Class containing library information. diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt index 983c3492b..ac5ec0c18 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt @@ -48,14 +48,14 @@ import exh.EXH_SOURCE_ID import exh.eh.EHentaiUpdateWorker import exh.source.BlacklistedSources import exh.uconfig.WarnConfigureDialogController -import java.util.Date -import java.util.LinkedList -import java.util.concurrent.TimeUnit import kotlinx.android.synthetic.main.main_activity.appbar import kotlinx.android.synthetic.main.main_activity.tabs import kotlinx.coroutines.delay import kotlinx.coroutines.flow.launchIn import timber.log.Timber +import java.util.Date +import java.util.LinkedList +import java.util.concurrent.TimeUnit class MainActivity : BaseActivity() { @@ -150,26 +150,28 @@ class MainActivity : BaseActivity() { onBackPressed() } - router.addChangeListener(object : ControllerChangeHandler.ControllerChangeListener { - override fun onChangeStarted( - to: Controller?, - from: Controller?, - isPush: Boolean, - container: ViewGroup, - handler: ControllerChangeHandler - ) { - syncActivityViewWithController(to, from) - } + router.addChangeListener( + object : ControllerChangeHandler.ControllerChangeListener { + override fun onChangeStarted( + to: Controller?, + from: Controller?, + isPush: Boolean, + container: ViewGroup, + handler: ControllerChangeHandler + ) { + syncActivityViewWithController(to, from) + } - override fun onChangeCompleted( - to: Controller?, - from: Controller?, - isPush: Boolean, - container: ViewGroup, - handler: ControllerChangeHandler - ) { + override fun onChangeCompleted( + to: Controller?, + from: Controller?, + isPush: Boolean, + container: ViewGroup, + handler: ControllerChangeHandler + ) { + } } - }) + ) syncActivityViewWithController(router.backstack.lastOrNull()?.controller()) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/EditMangaDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/EditMangaDialog.kt index 8e4b3efb2..abb4dfa46 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/EditMangaDialog.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/EditMangaDialog.kt @@ -129,7 +129,8 @@ class EditMangaDialog : DialogController { if (manga.originalDescription != null) { view.manga_description.hint = "${resources?.getString(R.string.description)}: ${manga.originalDescription?.replace( - "\n", " " + "\n", + " " )?.chop(20)}" } } @@ -174,9 +175,12 @@ class EditMangaDialog : DialogController { private fun onPositiveButtonClick() { infoController.presenter.updateMangaInfo( dialogView?.title?.text.toString(), - dialogView?.manga_author?.text.toString(), dialogView?.manga_artist?.text.toString(), - dialogView?.manga_description?.text.toString(), dialogView?.manga_genres_tags?.getTextStrings(), - customCoverUri, willResetCover + dialogView?.manga_author?.text.toString(), + dialogView?.manga_artist?.text.toString(), + dialogView?.manga_description?.text.toString(), + dialogView?.manga_genres_tags?.getTextStrings(), + customCoverUri, + willResetCover ) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt index e1972edad..f534e3c05 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt @@ -92,8 +92,6 @@ import exh.MERGED_SOURCE_ID import exh.isEhBasedSource import exh.metadata.metadata.base.FlatMetadata import exh.source.EnhancedHttpSource.Companion.getMainSource -import java.io.IOException -import kotlin.math.min import kotlinx.android.synthetic.main.main_activity.root_coordinator import kotlinx.android.synthetic.main.main_activity.toolbar import kotlinx.coroutines.CancellationException @@ -109,6 +107,8 @@ import timber.log.Timber import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy +import java.io.IOException +import kotlin.math.min class MangaController : NucleusController, @@ -362,10 +362,10 @@ class MangaController : // Get coordinates and start animation actionFab?.getCoordinates()?.let { coordinates -> if (!binding.revealView.showRevealEffect( - coordinates.x, - coordinates.y, - revealAnimationListener - ) + coordinates.x, + coordinates.y, + revealAnimationListener + ) ) { openChapter(item.chapter) } @@ -445,7 +445,8 @@ class MangaController : // SY --> R.id.action_edit -> { editMangaDialog = EditMangaDialog( - this, presenter.manga + this, + presenter.manga ) editMangaDialog?.showDialog(router) } @@ -455,7 +456,8 @@ class MangaController : } R.id.action_merged -> { editMergedSettingsDialog = EditMergedSettingsDialog( - this, presenter.manga + this, + presenter.manga ) editMergedSettingsDialog?.showDialog(router) } @@ -790,15 +792,17 @@ class MangaController : } duration = resources?.getInteger(android.R.integer.config_shortAnimTime)?.toLong() ?: 150L interpolator = DecelerateInterpolator() - addListener(object : AnimatorListenerAdapter() { - override fun onAnimationEnd(animation: Animator) { - currentAnimator = null - } + addListener( + object : AnimatorListenerAdapter() { + override fun onAnimationEnd(animation: Animator) { + currentAnimator = null + } - override fun onAnimationCancel(animation: Animator) { - currentAnimator = null + override fun onAnimationCancel(animation: Animator) { + currentAnimator = null + } } - }) + ) start() } @@ -814,22 +818,24 @@ class MangaController : } duration = resources?.getInteger(android.R.integer.config_shortAnimTime)?.toLong() ?: 150L interpolator = DecelerateInterpolator() - addListener(object : AnimatorListenerAdapter() { + addListener( + object : AnimatorListenerAdapter() { - override fun onAnimationEnd(animation: Animator) { - thumbView.alpha = 1f - binding.expandedImage.isVisible = false - actionFab?.isVisible = true - currentAnimator = null - } + override fun onAnimationEnd(animation: Animator) { + thumbView.alpha = 1f + binding.expandedImage.isVisible = false + actionFab?.isVisible = true + currentAnimator = null + } - override fun onAnimationCancel(animation: Animator) { - thumbView.alpha = 1f - binding.expandedImage.isVisible = false - actionFab?.isVisible = true - currentAnimator = null + override fun onAnimationCancel(animation: Animator) { + thumbView.alpha = 1f + binding.expandedImage.isVisible = false + actionFab?.isVisible = true + currentAnimator = null + } } - }) + ) start() } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt index 336957b76..fb9aab600 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt @@ -46,7 +46,6 @@ import exh.source.EnhancedHttpSource.Companion.getMainSource import exh.util.asObservable import exh.util.await import exh.util.trimOrNull -import java.util.Date import kotlinx.coroutines.NonCancellable import kotlinx.coroutines.withContext import rx.Observable @@ -57,6 +56,7 @@ import timber.log.Timber import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy +import java.util.Date class MangaPresenter( val manga: Manga, diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChapterHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChapterHolder.kt index 3716867e0..df955add1 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChapterHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChapterHolder.kt @@ -11,11 +11,11 @@ import eu.kanade.tachiyomi.data.download.model.Download import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder import exh.EH_SOURCE_ID import exh.EXH_SOURCE_ID -import java.util.Date import kotlinx.android.synthetic.main.chapters_item.bookmark_icon import kotlinx.android.synthetic.main.chapters_item.chapter_description import kotlinx.android.synthetic.main.chapters_item.chapter_title import kotlinx.android.synthetic.main.chapters_item.download_text +import java.util.Date class ChapterHolder( view: View, diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChaptersAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChaptersAdapter.kt index 9dee0ee87..4e80a79e1 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChaptersAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChaptersAdapter.kt @@ -6,10 +6,10 @@ import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.ui.manga.MangaController import eu.kanade.tachiyomi.util.system.getResourceColor +import uy.kohesive.injekt.injectLazy import java.text.DateFormat import java.text.DecimalFormat import java.text.DecimalFormatSymbols -import uy.kohesive.injekt.injectLazy class ChaptersAdapter( controller: MangaController, diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/merged/EditMergedSettingsHeaderAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/merged/EditMergedSettingsHeaderAdapter.kt index 9d56906fe..bcb55a9e0 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/merged/EditMergedSettingsHeaderAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/merged/EditMergedSettingsHeaderAdapter.kt @@ -38,7 +38,8 @@ class EditMergedSettingsHeaderAdapter(private val controller: EditMergedSettings inner class HeaderViewHolder(view: View) : RecyclerView.ViewHolder(view) { fun bind() { val dedupeAdapter: ArrayAdapter = ArrayAdapter( - itemView.context, android.R.layout.simple_spinner_item, + itemView.context, + android.R.layout.simple_spinner_item, listOf( "No dedupe", "Dedupe by priority", diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/SetTrackReadingDatesDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/SetTrackReadingDatesDialog.kt index 00aed713b..a5d60509a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/SetTrackReadingDatesDialog.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/SetTrackReadingDatesDialog.kt @@ -9,9 +9,9 @@ import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.database.models.Track import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.ui.base.controller.DialogController -import java.util.Calendar import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import java.util.Calendar class SetTrackReadingDatesDialog : DialogController where T : Controller, T : SetTrackReadingDatesDialog.Listener { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackHolder.kt index a35353e04..1279335aa 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackHolder.kt @@ -5,8 +5,8 @@ import androidx.core.view.isVisible import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.databinding.TrackItemBinding import eu.kanade.tachiyomi.ui.base.holder.BaseViewHolder -import java.text.DateFormat import uy.kohesive.injekt.injectLazy +import java.text.DateFormat class TrackHolder(private val binding: TrackItemBinding, adapter: TrackAdapter) : BaseViewHolder(binding.root) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackSearchDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackSearchDialog.kt index e949ab29e..2671042b5 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackSearchDialog.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/track/TrackSearchDialog.kt @@ -13,7 +13,6 @@ import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.data.track.TrackService import eu.kanade.tachiyomi.data.track.model.TrackSearch import eu.kanade.tachiyomi.ui.base.controller.DialogController -import java.util.concurrent.TimeUnit import kotlinx.android.synthetic.main.track_search_dialog.view.progress import kotlinx.android.synthetic.main.track_search_dialog.view.track_search import kotlinx.android.synthetic.main.track_search_dialog.view.track_search_list @@ -26,6 +25,7 @@ import reactivecircus.flowbinding.android.widget.itemClicks import reactivecircus.flowbinding.android.widget.textChanges import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import java.util.concurrent.TimeUnit class TrackSearchDialog : DialogController { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/more/AboutController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/more/AboutController.kt index bba0b1159..72167f671 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/more/AboutController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/more/AboutController.kt @@ -25,12 +25,12 @@ import eu.kanade.tachiyomi.util.preference.titleRes import eu.kanade.tachiyomi.util.system.copyToClipboard import eu.kanade.tachiyomi.util.system.toast import exh.syDebugVersion +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 timber.log.Timber class AboutController : SettingsController() { @@ -225,7 +225,9 @@ class AboutController : SettingsController() { val buildTime = inputDf.parse(BuildConfig.BUILD_TIME) val outputDf = DateFormat.getDateTimeInstance( - DateFormat.MEDIUM, DateFormat.SHORT, Locale.getDefault() + DateFormat.MEDIUM, + DateFormat.SHORT, + Locale.getDefault() ) outputDf.timeZone = TimeZone.getDefault() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/more/MoreController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/more/MoreController.kt index f09051f49..da1fca7ab 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/more/MoreController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/more/MoreController.kt @@ -7,7 +7,6 @@ import androidx.preference.PreferenceScreen import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.download.DownloadManager import eu.kanade.tachiyomi.data.download.DownloadService -import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys import eu.kanade.tachiyomi.ui.base.controller.NoToolbarElevationController import eu.kanade.tachiyomi.ui.base.controller.RootController import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction @@ -29,6 +28,7 @@ import eu.kanade.tachiyomi.util.system.openInBrowser import exh.ui.batchadd.BatchAddController import rx.android.schedulers.AndroidSchedulers import uy.kohesive.injekt.injectLazy +import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys class MoreController : SettingsController(), diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt index 82d10d0bd..68581621b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt @@ -68,9 +68,6 @@ import eu.kanade.tachiyomi.util.view.snack import eu.kanade.tachiyomi.widget.SimpleAnimationListener import eu.kanade.tachiyomi.widget.SimpleSeekBarListener import exh.util.defaultReaderType -import java.io.File -import kotlin.math.abs -import kotlin.math.roundToLong import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.FlowPreview @@ -88,6 +85,9 @@ import reactivecircus.flowbinding.android.widget.checkedChanges import reactivecircus.flowbinding.android.widget.textChanges import timber.log.Timber import uy.kohesive.injekt.injectLazy +import java.io.File +import kotlin.math.abs +import kotlin.math.roundToLong /** * Activity containing the reader of Tachiyomi. This activity is mostly a container of the @@ -374,13 +374,15 @@ class ReaderActivity : BaseRxActivity() } // Init listeners on bottom menu - binding.pageSeekbar.setOnSeekBarChangeListener(object : SimpleSeekBarListener() { - override fun onProgressChanged(seekBar: SeekBar, value: Int, fromUser: Boolean) { - if (viewer != null && fromUser) { - moveToPageIndex(value) + binding.pageSeekbar.setOnSeekBarChangeListener( + object : SimpleSeekBarListener() { + override fun onProgressChanged(seekBar: SeekBar, value: Int, fromUser: Boolean) { + if (viewer != null && fromUser) { + moveToPageIndex(value) + } } } - }) + ) /* SY --> binding.leftChapter.setOnClickListener { if (viewer != null) { @@ -588,12 +590,14 @@ class ReaderActivity : BaseRxActivity() if (animate) { val toolbarAnimation = AnimationUtils.loadAnimation(this, R.anim.enter_from_top) - toolbarAnimation.setAnimationListener(object : SimpleAnimationListener() { - override fun onAnimationStart(animation: Animation) { - // Fix status bar being translucent the first time it's opened. - window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) + toolbarAnimation.setAnimationListener( + object : SimpleAnimationListener() { + override fun onAnimationStart(animation: Animation) { +// Fix status bar being translucent the first time it's opened. + window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) + } } - }) + ) // EXH --> binding.header.startAnimation(toolbarAnimation) // EXH <-- @@ -614,11 +618,13 @@ class ReaderActivity : BaseRxActivity() if (animate) { val toolbarAnimation = AnimationUtils.loadAnimation(this, R.anim.exit_to_top) - toolbarAnimation.setAnimationListener(object : SimpleAnimationListener() { - override fun onAnimationEnd(animation: Animation) { - binding.readerMenu.isVisible = false + toolbarAnimation.setAnimationListener( + object : SimpleAnimationListener() { + override fun onAnimationEnd(animation: Animation) { + binding.readerMenu.isVisible = false + } } - }) + ) // EXH --> binding.header.startAnimation(toolbarAnimation) // EXH <-- @@ -643,7 +649,10 @@ class ReaderActivity : BaseRxActivity() } val intent = WebViewActivity.newIntent( - applicationContext, url, source.id, presenter.manga!!.title + applicationContext, + url, + source.id, + presenter.manga!!.title ) startActivity(intent) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderColorFilterSheet.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderColorFilterSheet.kt index 7fe1a4609..8dee52cb5 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderColorFilterSheet.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderColorFilterSheet.kt @@ -74,45 +74,55 @@ class ReaderColorFilterSheet(private val activity: ReaderActivity) : BottomSheet } binding.colorFilterMode.setSelection(preferences.colorFilterMode().get(), false) - binding.seekbarColorFilterAlpha.setOnSeekBarChangeListener(object : SimpleSeekBarListener() { - override fun onProgressChanged(seekBar: SeekBar, value: Int, fromUser: Boolean) { - if (fromUser) { - setColorValue(value, ALPHA_MASK, 24) + binding.seekbarColorFilterAlpha.setOnSeekBarChangeListener( + object : SimpleSeekBarListener() { + override fun onProgressChanged(seekBar: SeekBar, value: Int, fromUser: Boolean) { + if (fromUser) { + setColorValue(value, ALPHA_MASK, 24) + } } } - }) + ) - binding.seekbarColorFilterRed.setOnSeekBarChangeListener(object : SimpleSeekBarListener() { - override fun onProgressChanged(seekBar: SeekBar, value: Int, fromUser: Boolean) { - if (fromUser) { - setColorValue(value, RED_MASK, 16) + binding.seekbarColorFilterRed.setOnSeekBarChangeListener( + object : SimpleSeekBarListener() { + override fun onProgressChanged(seekBar: SeekBar, value: Int, fromUser: Boolean) { + if (fromUser) { + setColorValue(value, RED_MASK, 16) + } } } - }) + ) - binding.seekbarColorFilterGreen.setOnSeekBarChangeListener(object : SimpleSeekBarListener() { - override fun onProgressChanged(seekBar: SeekBar, value: Int, fromUser: Boolean) { - if (fromUser) { - setColorValue(value, GREEN_MASK, 8) + binding.seekbarColorFilterGreen.setOnSeekBarChangeListener( + object : SimpleSeekBarListener() { + override fun onProgressChanged(seekBar: SeekBar, value: Int, fromUser: Boolean) { + if (fromUser) { + setColorValue(value, GREEN_MASK, 8) + } } } - }) + ) - binding.seekbarColorFilterBlue.setOnSeekBarChangeListener(object : SimpleSeekBarListener() { - override fun onProgressChanged(seekBar: SeekBar, value: Int, fromUser: Boolean) { - if (fromUser) { - setColorValue(value, BLUE_MASK, 0) + binding.seekbarColorFilterBlue.setOnSeekBarChangeListener( + object : SimpleSeekBarListener() { + override fun onProgressChanged(seekBar: SeekBar, value: Int, fromUser: Boolean) { + if (fromUser) { + setColorValue(value, BLUE_MASK, 0) + } } } - }) + ) - binding.brightnessSeekbar.setOnSeekBarChangeListener(object : SimpleSeekBarListener() { - override fun onProgressChanged(seekBar: SeekBar, value: Int, fromUser: Boolean) { - if (fromUser) { - preferences.customBrightnessValue().set(value) + binding.brightnessSeekbar.setOnSeekBarChangeListener( + object : SimpleSeekBarListener() { + override fun onProgressChanged(seekBar: SeekBar, value: Int, fromUser: Boolean) { + if (fromUser) { + preferences.customBrightnessValue().set(value) + } } } - }) + ) } override fun onStart() { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt index dccc8bc9c..e654a956c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt @@ -35,11 +35,6 @@ import exh.EH_SOURCE_ID import exh.EXH_SOURCE_ID import exh.MERGED_SOURCE_ID import exh.util.defaultReaderType -import java.io.File -import java.text.DecimalFormat -import java.text.DecimalFormatSymbols -import java.util.Date -import java.util.concurrent.TimeUnit import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.singleOrNull import kotlinx.coroutines.runBlocking @@ -52,6 +47,11 @@ import rx.schedulers.Schedulers import timber.log.Timber import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import java.io.File +import java.text.DecimalFormat +import java.text.DecimalFormatSymbols +import java.util.Date +import java.util.concurrent.TimeUnit /** * Presenter used by the activity to perform background operations. diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/chapter/ReaderChapterSheet.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/chapter/ReaderChapterSheet.kt index baabb0912..bd4438fd9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/chapter/ReaderChapterSheet.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/chapter/ReaderChapterSheet.kt @@ -56,25 +56,27 @@ class ReaderChapterSheet(private val activity: ReaderActivity) : BottomSheetDial true } } - adapter?.addEventHook(object : ClickEventHook() { - override fun onBind(viewHolder: RecyclerView.ViewHolder): View? { - return if (viewHolder is ReaderChapterItem.ViewHolder) { - viewHolder.bookmarkButton - } else { - null + adapter?.addEventHook( + object : ClickEventHook() { + override fun onBind(viewHolder: RecyclerView.ViewHolder): View? { + return if (viewHolder is ReaderChapterItem.ViewHolder) { + viewHolder.bookmarkButton + } else { + null + } + } + + override fun onClick( + v: View, + position: Int, + fastAdapter: FastAdapter, + item: ReaderChapterItem + ) { + presenter.toggleBookmark(item.chapter) + refreshList() } } - - override fun onClick( - v: View, - position: Int, - fastAdapter: FastAdapter, - item: ReaderChapterItem - ) { - presenter.toggleBookmark(item.chapter) - refreshList() - } - }) + ) binding.chapterRecycler.layoutManager = LinearLayoutManager(context) refreshList() @@ -82,16 +84,19 @@ class ReaderChapterSheet(private val activity: ReaderActivity) : BottomSheetDial .onEach { activity.openMangaInBrowser() } .launchIn(activity.scope) - binding.pageSeekbar.setOnSeekBarChangeListener(object : SimpleSeekBarListener() { - @SuppressLint("SetTextI18n") - override fun onProgressChanged(seekBar: SeekBar, value: Int, fromUser: Boolean) { - if (activity.viewer != null && fromUser) { - binding.pageText.text = "${value + 1}/${binding.pageSeekbar.max + 1}" - binding.pageSeekbar.progress = value - activity.moveToPageIndex(value) + binding.pageSeekbar.setOnSeekBarChangeListener( + object : SimpleSeekBarListener() { + + @SuppressLint("SetTextI18n") + override fun onProgressChanged(seekBar: SeekBar, value: Int, fromUser: Boolean) { + if (activity.viewer != null && fromUser) { + binding.pageText.text = "${value + 1}/${binding.pageSeekbar.max + 1}" + binding.pageSeekbar.progress = value + activity.moveToPageIndex(value) + } } } - }) + ) } override fun onStart() { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DirectoryPageLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DirectoryPageLoader.kt index 95e7c6e5e..71671b6fc 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DirectoryPageLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DirectoryPageLoader.kt @@ -4,9 +4,9 @@ import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.ui.reader.model.ReaderPage import eu.kanade.tachiyomi.util.lang.compareToCaseInsensitiveNaturalOrder import eu.kanade.tachiyomi.util.system.ImageUtil +import rx.Observable import java.io.File import java.io.FileInputStream -import rx.Observable /** * Loader used to load a chapter from a directory given on [file]. diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DownloadPageLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DownloadPageLoader.kt index 0c44f6cf1..36c46f0a5 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DownloadPageLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/DownloadPageLoader.kt @@ -11,10 +11,10 @@ import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter import eu.kanade.tachiyomi.ui.reader.model.ReaderPage import eu.kanade.tachiyomi.util.lang.compareToCaseInsensitiveNaturalOrder import eu.kanade.tachiyomi.util.system.ImageUtil -import java.io.File -import java.util.zip.ZipFile import rx.Observable import uy.kohesive.injekt.injectLazy +import java.io.File +import java.util.zip.ZipFile /** * Loader used to load a chapter from the downloaded chapters. diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/EpubPageLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/EpubPageLoader.kt index 00895e901..99764ac7b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/EpubPageLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/EpubPageLoader.kt @@ -3,8 +3,8 @@ package eu.kanade.tachiyomi.ui.reader.loader import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.ui.reader.model.ReaderPage import eu.kanade.tachiyomi.util.storage.EpubFile -import java.io.File import rx.Observable +import java.io.File /** * Loader used to load a chapter from a .epub file. diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt index ec16c98ec..919579502 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt @@ -12,9 +12,6 @@ import eu.kanade.tachiyomi.util.lang.plusAssign import eu.kanade.tachiyomi.util.system.ImageUtil import exh.EH_SOURCE_ID import exh.EXH_SOURCE_ID -import java.util.concurrent.PriorityBlockingQueue -import java.util.concurrent.atomic.AtomicInteger -import kotlin.math.min import rx.Completable import rx.Observable import rx.schedulers.Schedulers @@ -25,6 +22,9 @@ import timber.log.Timber import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy +import java.util.concurrent.PriorityBlockingQueue +import java.util.concurrent.atomic.AtomicInteger +import kotlin.math.min /** * Loader used to load chapters from an online source. @@ -194,9 +194,9 @@ class HttpPageLoader( } if (prefs.eh_readerInstantRetry().get()) // EXH <-- - { - boostPage(page) - } else { + { + boostPage(page) + } else { // EXH <-- queue.offer(PriorityPage(page, 2)) } @@ -267,7 +267,9 @@ class HttpPageLoader( val stream = chapterCache.getImageFile(imageUrl).inputStream() val image = BitmapFactory.decodeStream(stream) page.bg = ImageUtil.autoSetBackground( - image, readerTheme == 2, prefs.context + image, + readerTheme == 2, + prefs.context ) page.bgType = PagerPageHolder.getBGType(readerTheme, prefs.context) stream.close() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/RarPageLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/RarPageLoader.kt index 37b35a97c..9a6a6b88c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/RarPageLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/RarPageLoader.kt @@ -4,14 +4,14 @@ import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.ui.reader.model.ReaderPage import eu.kanade.tachiyomi.util.lang.compareToCaseInsensitiveNaturalOrder import eu.kanade.tachiyomi.util.system.ImageUtil +import junrar.Archive +import junrar.rarfile.FileHeader +import rx.Observable import java.io.File import java.io.InputStream import java.io.PipedInputStream import java.io.PipedOutputStream import java.util.concurrent.Executors -import junrar.Archive -import junrar.rarfile.FileHeader -import rx.Observable /** * Loader used to load a chapter from a .rar or .cbr file. diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ZipPageLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ZipPageLoader.kt index f65ebc594..a48c404a6 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ZipPageLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ZipPageLoader.kt @@ -5,11 +5,11 @@ import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.ui.reader.model.ReaderPage import eu.kanade.tachiyomi.util.lang.compareToCaseInsensitiveNaturalOrder import eu.kanade.tachiyomi.util.system.ImageUtil +import rx.Observable import java.io.File import java.nio.charset.StandardCharsets import java.util.zip.ZipEntry import java.util.zip.ZipFile -import rx.Observable /** * Loader used to load a chapter from a .zip or .cbz file. diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ReaderProgressBar.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ReaderProgressBar.kt index 4161bf4f0..3afc4da31 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ReaderProgressBar.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ReaderProgressBar.kt @@ -63,9 +63,12 @@ class ReaderProgressBar @JvmOverloads constructor( */ private val rotationAnimation by lazy { RotateAnimation( - 0f, 360f, - Animation.RELATIVE_TO_SELF, 0.5f, - Animation.RELATIVE_TO_SELF, 0.5f + 0f, + 360f, + Animation.RELATIVE_TO_SELF, + 0.5f, + Animation.RELATIVE_TO_SELF, + 0.5f ).apply { interpolator = LinearInterpolator() repeatCount = Animation.INFINITE diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ReaderTransitionView.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ReaderTransitionView.kt index 5d442dd22..13394c87b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ReaderTransitionView.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ReaderTransitionView.kt @@ -8,11 +8,11 @@ import androidx.core.text.buildSpannedString import androidx.core.view.isVisible import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.ui.reader.model.ChapterTransition -import kotlin.math.floor import kotlinx.android.synthetic.main.reader_transition_view.view.lower_text import kotlinx.android.synthetic.main.reader_transition_view.view.upper_text import kotlinx.android.synthetic.main.reader_transition_view.view.warning import kotlinx.android.synthetic.main.reader_transition_view.view.warning_text +import kotlin.math.floor class ReaderTransitionView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : LinearLayout(context, attrs) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt index 732664640..982468498 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt @@ -40,8 +40,6 @@ import eu.kanade.tachiyomi.util.system.ImageUtil import eu.kanade.tachiyomi.util.system.dpToPx import eu.kanade.tachiyomi.widget.ViewPagerAdapter import exh.util.isInNightMode -import java.io.InputStream -import java.util.concurrent.TimeUnit import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import rx.Observable @@ -49,6 +47,8 @@ import rx.Subscription import rx.android.schedulers.AndroidSchedulers import rx.schedulers.Schedulers import uy.kohesive.injekt.injectLazy +import java.io.InputStream +import java.util.concurrent.TimeUnit /** * View of the ViewPager that contains a page of a chapter. @@ -254,9 +254,9 @@ class PagerPageHolder( if (viewer.config.readerTheme >= 3) { val imageView = initSubsamplingImageView() if (page.bg != null && page.bgType == getBGType( - viewer.config.readerTheme, - context - ) + viewer.config.readerTheme, + context + ) ) { imageView.setImage(ImageSource.inputStream(openStream!!)) imageView.background = page.bg @@ -294,9 +294,12 @@ class PagerPageHolder( val preferences by injectLazy() ImageUtil.autoSetBackground( BitmapFactory.decodeByteArray( - bytesArray, 0, bytesArray.size + bytesArray, + 0, + bytesArray.size ), - preferences.readerTheme().get() == 3, context + preferences.readerTheme().get() == 3, + context ) } } @@ -356,20 +359,22 @@ class PagerPageHolder( setMinimumDpi(90) setMinimumTileDpi(180) setCropBorders(config.imageCropBorders) - setOnImageEventListener(object : SubsamplingScaleImageView.DefaultOnImageEventListener() { - override fun onReady() { - when (config.imageZoomType) { - ZoomType.Left -> setScaleAndCenter(scale, PointF(0f, 0f)) - ZoomType.Right -> setScaleAndCenter(scale, PointF(sWidth.toFloat(), 0f)) - ZoomType.Center -> setScaleAndCenter(scale, center.also { it?.y = 0f }) + setOnImageEventListener( + object : SubsamplingScaleImageView.DefaultOnImageEventListener() { + override fun onReady() { + when (config.imageZoomType) { + ZoomType.Left -> setScaleAndCenter(scale, PointF(0f, 0f)) + ZoomType.Right -> setScaleAndCenter(scale, PointF(sWidth.toFloat(), 0f)) + ZoomType.Center -> setScaleAndCenter(scale, center.also { it?.y = 0f }) + } + onImageDecoded() } - onImageDecoded() - } - override fun onImageLoadError(e: Exception) { - onImageDecodeError() + override fun onImageLoadError(e: Exception) { + onImageDecodeError() + } } - }) + ) } addView(subsamplingImageView) return subsamplingImageView!! @@ -387,16 +392,18 @@ class PagerPageHolder( setZoomTransitionDuration(viewer.config.doubleTapAnimDuration) setScaleLevels(1f, 2f, 3f) // Force 2 scale levels on double tap - setOnDoubleTapListener(object : GestureDetector.SimpleOnGestureListener() { - override fun onDoubleTap(e: MotionEvent): Boolean { - if (scale > 1f) { - setScale(1f, e.x, e.y, true) - } else { - setScale(2f, e.x, e.y, true) + setOnDoubleTapListener( + object : GestureDetector.SimpleOnGestureListener() { + override fun onDoubleTap(e: MotionEvent): Boolean { + if (scale > 1f) { + setScale(1f, e.x, e.y, true) + } else { + setScale(2f, e.x, e.y, true) + } + return true } - return true } - }) + ) } addView(imageView) return imageView!! @@ -486,31 +493,33 @@ class PagerPageHolder( .skipMemoryCache(true) .diskCacheStrategy(DiskCacheStrategy.NONE) .transition(DrawableTransitionOptions.with(NoTransition.getFactory())) - .listener(object : RequestListener { - override fun onLoadFailed( - e: GlideException?, - model: Any?, - target: Target?, - isFirstResource: Boolean - ): Boolean { - onImageDecodeError() - return false - } - - override fun onResourceReady( - resource: Drawable?, - model: Any?, - target: Target?, - dataSource: DataSource?, - isFirstResource: Boolean - ): Boolean { - if (resource is GifDrawable) { - resource.setLoopCount(GifDrawable.LOOP_INTRINSIC) + .listener( + object : RequestListener { + override fun onLoadFailed( + e: GlideException?, + model: Any?, + target: Target?, + isFirstResource: Boolean + ): Boolean { + onImageDecodeError() + return false + } + + override fun onResourceReady( + resource: Drawable?, + model: Any?, + target: Target?, + dataSource: DataSource?, + isFirstResource: Boolean + ): Boolean { + if (resource is GifDrawable) { + resource.setLoopCount(GifDrawable.LOOP_INTRINSIC) + } + onImageDecoded() + return false } - onImageDecoded() - return false } - }) + ) .into(this) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt index b7c4ff204..f583216ee 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt @@ -71,15 +71,17 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer { pager.offscreenPageLimit = 1 pager.id = R.id.reader_pager pager.adapter = adapter - pager.addOnPageChangeListener(object : ViewPager.SimpleOnPageChangeListener() { - override fun onPageSelected(position: Int) { - onPageChange(position) - } + pager.addOnPageChangeListener( + object : ViewPager.SimpleOnPageChangeListener() { + override fun onPageSelected(position: Int) { + onPageChange(position) + } - override fun onPageScrollStateChanged(state: Int) { - isIdle = state == ViewPager.SCROLL_STATE_IDLE + override fun onPageScrollStateChanged(state: Int) { + isIdle = state == ViewPager.SCROLL_STATE_IDLE + } } - }) + ) pager.tapListener = f@{ event -> if (!config.tappingEnabled) { activity.toggleMenu() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonPageHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonPageHolder.kt index ea8428588..5d8962339 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonPageHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonPageHolder.kt @@ -32,12 +32,12 @@ import eu.kanade.tachiyomi.ui.reader.viewer.ReaderProgressBar import eu.kanade.tachiyomi.ui.webview.WebViewActivity import eu.kanade.tachiyomi.util.system.ImageUtil import eu.kanade.tachiyomi.util.system.dpToPx -import java.io.InputStream -import java.util.concurrent.TimeUnit import rx.Observable import rx.Subscription import rx.android.schedulers.AndroidSchedulers import rx.schedulers.Schedulers +import java.io.InputStream +import java.util.concurrent.TimeUnit /** * Holder of the webtoon reader for a single page of a chapter. @@ -362,15 +362,17 @@ class WebtoonPageHolder( setMinimumDpi(90) setMinimumTileDpi(180) setCropBorders(config.imageCropBorders) - setOnImageEventListener(object : SubsamplingScaleImageView.DefaultOnImageEventListener() { - override fun onReady() { - onImageDecoded() - } + setOnImageEventListener( + object : SubsamplingScaleImageView.DefaultOnImageEventListener() { + override fun onReady() { + onImageDecoded() + } - override fun onImageLoadError(e: Exception) { - onImageDecodeError() + override fun onImageLoadError(e: Exception) { + onImageDecodeError() + } } - }) + ) } frame.addView(subsamplingImageView, MATCH_PARENT, MATCH_PARENT) return subsamplingImageView!! @@ -492,31 +494,33 @@ class WebtoonPageHolder( .skipMemoryCache(true) .diskCacheStrategy(DiskCacheStrategy.NONE) .transition(DrawableTransitionOptions.with(NoTransition.getFactory())) - .listener(object : RequestListener { - override fun onLoadFailed( - e: GlideException?, - model: Any?, - target: Target?, - isFirstResource: Boolean - ): Boolean { - onImageDecodeError() - return false - } - - override fun onResourceReady( - resource: Drawable?, - model: Any?, - target: Target?, - dataSource: DataSource?, - isFirstResource: Boolean - ): Boolean { - if (resource is GifDrawable) { - resource.setLoopCount(GifDrawable.LOOP_INTRINSIC) + .listener( + object : RequestListener { + override fun onLoadFailed( + e: GlideException?, + model: Any?, + target: Target?, + isFirstResource: Boolean + ): Boolean { + onImageDecodeError() + return false + } + + override fun onResourceReady( + resource: Drawable?, + model: Any?, + target: Target?, + dataSource: DataSource?, + isFirstResource: Boolean + ): Boolean { + if (resource is GifDrawable) { + resource.setLoopCount(GifDrawable.LOOP_INTRINSIC) + } + onImageDecoded() + return false } - onImageDecoded() - return false } - }) + ) .into(this) } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt index 3b7bd164c..88511c166 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt @@ -15,10 +15,10 @@ import eu.kanade.tachiyomi.ui.reader.model.ChapterTransition import eu.kanade.tachiyomi.ui.reader.model.ReaderPage import eu.kanade.tachiyomi.ui.reader.model.ViewerChapters import eu.kanade.tachiyomi.ui.reader.viewer.BaseViewer -import kotlin.math.max -import kotlin.math.min import rx.subscriptions.CompositeSubscription import timber.log.Timber +import kotlin.math.max +import kotlin.math.min /** * Implementation of a [BaseViewer] to display pages with a [RecyclerView]. @@ -71,28 +71,30 @@ class WebtoonViewer(val activity: ReaderActivity, val isContinuous: Boolean = tr recycler.itemAnimator = null recycler.layoutManager = layoutManager recycler.adapter = adapter - recycler.addOnScrollListener(object : RecyclerView.OnScrollListener() { - override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { - val position = layoutManager.findLastEndVisibleItemPosition() - val item = adapter.items.getOrNull(position) - val allowPreload = checkAllowPreload(item as? ReaderPage) - if (item != null && currentPage != item) { - currentPage = item - when (item) { - is ReaderPage -> onPageSelected(item, allowPreload) - is ChapterTransition -> onTransitionSelected(item) + recycler.addOnScrollListener( + object : RecyclerView.OnScrollListener() { + override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { + val position = layoutManager.findLastEndVisibleItemPosition() + val item = adapter.items.getOrNull(position) + val allowPreload = checkAllowPreload(item as? ReaderPage) + if (item != null && currentPage != item) { + currentPage = item + when (item) { + is ReaderPage -> onPageSelected(item, allowPreload) + is ChapterTransition -> onTransitionSelected(item) + } } - } - if (dy < 0) { - val firstIndex = layoutManager.findFirstVisibleItemPosition() - val firstItem = adapter.items.getOrNull(firstIndex) - if (firstItem is ChapterTransition.Prev && firstItem.to != null) { - activity.requestPreloadChapter(firstItem.to) + if (dy < 0) { + val firstIndex = layoutManager.findFirstVisibleItemPosition() + val firstItem = adapter.items.getOrNull(firstIndex) + if (firstItem is ChapterTransition.Prev && firstItem.to != null) { + activity.requestPreloadChapter(firstItem.to) + } } } } - }) + ) recycler.tapListener = f@{ event -> if (!config.tappingEnabled) { activity.toggleMenu() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recent/history/HistoryAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recent/history/HistoryAdapter.kt index e1d761025..d85a41a20 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recent/history/HistoryAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recent/history/HistoryAdapter.kt @@ -3,9 +3,9 @@ package eu.kanade.tachiyomi.ui.recent.history import eu.davidea.flexibleadapter.FlexibleAdapter import eu.davidea.flexibleadapter.items.IFlexible import eu.kanade.tachiyomi.source.SourceManager +import uy.kohesive.injekt.injectLazy import java.text.DecimalFormat import java.text.DecimalFormatSymbols -import uy.kohesive.injekt.injectLazy /** * Adapter of HistoryHolder. diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recent/history/HistoryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recent/history/HistoryController.kt index f12066662..0b9af180e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recent/history/HistoryController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recent/history/HistoryController.kt @@ -192,15 +192,17 @@ class HistoryController : .launchIn(scope) // Fixes problem with the overflow icon showing up in lieu of search - searchItem.setOnActionExpandListener(object : MenuItem.OnActionExpandListener { - override fun onMenuItemActionExpand(item: MenuItem): Boolean { - return true - } + searchItem.setOnActionExpandListener( + object : MenuItem.OnActionExpandListener { + override fun onMenuItemActionExpand(item: MenuItem): Boolean { + return true + } - override fun onMenuItemActionCollapse(item: MenuItem): Boolean { - activity?.invalidateOptionsMenu() - return true + override fun onMenuItemActionCollapse(item: MenuItem): Boolean { + activity?.invalidateOptionsMenu() + return true + } } - }) + ) } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recent/history/HistoryHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recent/history/HistoryHolder.kt index cd9a4799d..595bf640c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recent/history/HistoryHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recent/history/HistoryHolder.kt @@ -8,13 +8,13 @@ import eu.kanade.tachiyomi.data.glide.GlideApp import eu.kanade.tachiyomi.data.glide.toMangaThumbnail import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder import eu.kanade.tachiyomi.util.lang.toTimestampString -import java.util.Date import kotlinx.android.synthetic.main.history_item.cover import kotlinx.android.synthetic.main.history_item.holder import kotlinx.android.synthetic.main.history_item.manga_subtitle import kotlinx.android.synthetic.main.history_item.manga_title import kotlinx.android.synthetic.main.history_item.remove import kotlinx.android.synthetic.main.history_item.resume +import java.util.Date /** * Holder that contains recent manga item diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recent/history/HistoryPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recent/history/HistoryPresenter.kt index 93807b896..1b1e2f805 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recent/history/HistoryPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recent/history/HistoryPresenter.kt @@ -9,13 +9,13 @@ import eu.kanade.tachiyomi.data.database.models.MangaChapterHistory import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter import eu.kanade.tachiyomi.ui.recent.DateSectionItem import eu.kanade.tachiyomi.util.lang.toDateKey +import rx.Observable +import rx.android.schedulers.AndroidSchedulers +import uy.kohesive.injekt.injectLazy import java.util.Calendar import java.util.Comparator import java.util.Date import java.util.TreeMap -import rx.Observable -import rx.android.schedulers.AndroidSchedulers -import uy.kohesive.injekt.injectLazy /** * Presenter of HistoryFragment. diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recent/updates/UpdatesPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recent/updates/UpdatesPresenter.kt index 86a75cd2d..84b1c87e1 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recent/updates/UpdatesPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recent/updates/UpdatesPresenter.kt @@ -10,15 +10,15 @@ import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter import eu.kanade.tachiyomi.ui.recent.DateSectionItem import eu.kanade.tachiyomi.util.lang.toDateKey -import java.util.Calendar -import java.util.Date -import java.util.TreeMap import rx.Observable import rx.android.schedulers.AndroidSchedulers import rx.schedulers.Schedulers import timber.log.Timber import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import java.util.Calendar +import java.util.Date +import java.util.TreeMap class UpdatesPresenter( val preferences: PreferencesHelper = Injekt.get(), diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/security/BiometricUnlockActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/security/BiometricUnlockActivity.kt index 9ab2cb267..92a7d778a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/security/BiometricUnlockActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/security/BiometricUnlockActivity.kt @@ -5,9 +5,9 @@ import androidx.appcompat.app.AppCompatActivity import androidx.biometric.BiometricPrompt import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.preference.PreferencesHelper +import uy.kohesive.injekt.injectLazy import java.util.Date import java.util.concurrent.Executors -import uy.kohesive.injekt.injectLazy /** * Blank activity with a BiometricPrompt. @@ -21,7 +21,8 @@ class BiometricUnlockActivity : AppCompatActivity() { super.onCreate(savedInstanceState) val biometricPrompt = BiometricPrompt( - this, executor, + this, + executor, object : BiometricPrompt.AuthenticationCallback() { override fun onAuthenticationError(errorCode: Int, errString: CharSequence) { super.onAuthenticationError(errorCode, errString) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/security/SecureActivityDelegate.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/security/SecureActivityDelegate.kt index bbda30b81..daf4b5965 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/security/SecureActivityDelegate.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/security/SecureActivityDelegate.kt @@ -7,14 +7,14 @@ import androidx.fragment.app.FragmentActivity import androidx.lifecycle.lifecycleScope import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.ui.category.biometric.TimeRange +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.onEach +import uy.kohesive.injekt.injectLazy import java.util.Calendar import java.util.Date import kotlin.time.ExperimentalTime import kotlin.time.hours import kotlin.time.minutes -import kotlinx.coroutines.flow.launchIn -import kotlinx.coroutines.flow.onEach -import uy.kohesive.injekt.injectLazy class SecureActivityDelegate(private val activity: FragmentActivity) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt index 207492600..1fccc2255 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt @@ -19,7 +19,6 @@ import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.download.DownloadManager import eu.kanade.tachiyomi.data.library.LibraryUpdateService import eu.kanade.tachiyomi.data.library.LibraryUpdateService.Target -import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys import eu.kanade.tachiyomi.data.preference.asImmediateFlow import eu.kanade.tachiyomi.network.NetworkHelper import eu.kanade.tachiyomi.source.SourceManager @@ -56,6 +55,7 @@ import rx.schedulers.Schedulers import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy +import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys class SettingsAdvancedController : SettingsController() { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsBackupController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsBackupController.kt index f030d3680..dbcafbb2a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsBackupController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsBackupController.kt @@ -19,7 +19,6 @@ import eu.kanade.tachiyomi.data.backup.BackupCreatorJob import eu.kanade.tachiyomi.data.backup.BackupRestoreService import eu.kanade.tachiyomi.data.backup.BackupRestoreValidator import eu.kanade.tachiyomi.data.backup.models.Backup -import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys import eu.kanade.tachiyomi.data.preference.asImmediateFlow import eu.kanade.tachiyomi.ui.base.controller.DialogController import eu.kanade.tachiyomi.ui.base.controller.requestPermissionsSafe @@ -36,6 +35,7 @@ import eu.kanade.tachiyomi.util.system.getFilePicker import eu.kanade.tachiyomi.util.system.toast import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach +import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys class SettingsBackupController : SettingsController() { @@ -90,9 +90,12 @@ class SettingsBackupController : SettingsController() { key = Keys.backupInterval titleRes = R.string.pref_backup_interval entriesRes = arrayOf( - R.string.update_never, R.string.update_6hour, - R.string.update_12hour, R.string.update_24hour, - R.string.update_48hour, R.string.update_weekly + R.string.update_never, + R.string.update_6hour, + R.string.update_12hour, + R.string.update_24hour, + R.string.update_48hour, + R.string.update_weekly ) entryValues = arrayOf("0", "6", "12", "24", "48", "168") defaultValue = "0" @@ -211,8 +214,11 @@ class SettingsBackupController : SettingsController() { override fun onCreateDialog(savedViewState: Bundle?): Dialog { val activity = activity!! val options = arrayOf( - R.string.manga, R.string.categories, R.string.chapters, - R.string.track, R.string.history + R.string.manga, + R.string.categories, + R.string.chapters, + R.string.track, + R.string.history ) .map { activity.getString(it) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsBrowseController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsBrowseController.kt index af37c8666..855f2cb10 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsBrowseController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsBrowseController.kt @@ -2,7 +2,6 @@ package eu.kanade.tachiyomi.ui.setting import androidx.preference.PreferenceScreen import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys import eu.kanade.tachiyomi.extension.ExtensionUpdateJob import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction import eu.kanade.tachiyomi.ui.category.sources.SourceCategoryController @@ -14,6 +13,7 @@ import eu.kanade.tachiyomi.util.preference.preferenceCategory import eu.kanade.tachiyomi.util.preference.summaryRes import eu.kanade.tachiyomi.util.preference.switchPreference import eu.kanade.tachiyomi.util.preference.titleRes +import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys class SettingsBrowseController : SettingsController() { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsDownloadController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsDownloadController.kt index e10502441..efa21a9b4 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsDownloadController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsDownloadController.kt @@ -15,7 +15,6 @@ import com.hippo.unifile.UniFile import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.models.Category -import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.preference.asImmediateFlow import eu.kanade.tachiyomi.ui.base.controller.DialogController @@ -29,12 +28,13 @@ import eu.kanade.tachiyomi.util.preference.preferenceCategory import eu.kanade.tachiyomi.util.preference.switchPreference import eu.kanade.tachiyomi.util.preference.titleRes import eu.kanade.tachiyomi.util.system.getFilePicker -import java.io.File import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy +import java.io.File +import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys class SettingsDownloadController : SettingsController() { @@ -94,8 +94,11 @@ class SettingsDownloadController : SettingsController() { key = Keys.removeAfterReadSlots titleRes = R.string.pref_remove_after_read entriesRes = arrayOf( - R.string.disabled, R.string.last_read_chapter, - R.string.second_to_last, R.string.third_to_last, R.string.fourth_to_last, + R.string.disabled, + R.string.last_read_chapter, + R.string.second_to_last, + R.string.third_to_last, + R.string.fourth_to_last, R.string.fifth_to_last ) entryValues = arrayOf("-1", "0", "1", "2", "3", "4") diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsEhController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsEhController.kt index ceff85920..647da2f1c 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsEhController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsEhController.kt @@ -47,11 +47,6 @@ import exh.util.await import exh.util.nullIfBlank import exh.util.trans import humanize.Humanize -import java.util.Date -import kotlin.time.Duration -import kotlin.time.ExperimentalTime -import kotlin.time.days -import kotlin.time.hours import kotlinx.android.synthetic.main.eh_dialog_categories.view.artist_cg_checkbox import kotlinx.android.synthetic.main.eh_dialog_categories.view.asian_porn_checkbox import kotlinx.android.synthetic.main.eh_dialog_categories.view.cosplay_checkbox @@ -121,6 +116,11 @@ import kotlinx.coroutines.flow.take import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import uy.kohesive.injekt.injectLazy +import java.util.Date +import kotlin.time.Duration +import kotlin.time.ExperimentalTime +import kotlin.time.days +import kotlin.time.hours /** * EH Settings fragment diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsGeneralController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsGeneralController.kt index e9525edd3..ea0237b83 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsGeneralController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsGeneralController.kt @@ -5,8 +5,6 @@ import android.os.Build import android.provider.Settings import androidx.preference.PreferenceScreen import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys -import eu.kanade.tachiyomi.data.preference.PreferenceValues as Values import eu.kanade.tachiyomi.data.preference.asImmediateFlow import eu.kanade.tachiyomi.util.preference.defaultValue import eu.kanade.tachiyomi.util.preference.entriesRes @@ -20,8 +18,10 @@ import eu.kanade.tachiyomi.util.preference.summaryRes import eu.kanade.tachiyomi.util.preference.switchPreference import eu.kanade.tachiyomi.util.preference.titleRes import eu.kanade.tachiyomi.util.system.LocaleHelper -import java.util.Date import kotlinx.coroutines.flow.launchIn +import java.util.Date +import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys +import eu.kanade.tachiyomi.data.preference.PreferenceValues as Values class SettingsGeneralController : SettingsController() { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsLibraryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsLibraryController.kt index ba4aa755f..7cdd7577d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsLibraryController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsLibraryController.kt @@ -11,7 +11,6 @@ import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.models.Category import eu.kanade.tachiyomi.data.library.LibraryUpdateJob -import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys import eu.kanade.tachiyomi.data.preference.PreferenceValues import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.preference.asImmediateFlow @@ -38,6 +37,7 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys class SettingsLibraryController : SettingsController() { @@ -141,9 +141,14 @@ class SettingsLibraryController : SettingsController() { key = Keys.libraryUpdateInterval titleRes = R.string.pref_library_update_interval entriesRes = arrayOf( - R.string.update_never, R.string.update_1hour, - R.string.update_2hour, R.string.update_3hour, R.string.update_6hour, - R.string.update_12hour, R.string.update_24hour, R.string.update_48hour + R.string.update_never, + R.string.update_1hour, + R.string.update_2hour, + R.string.update_3hour, + R.string.update_6hour, + R.string.update_12hour, + R.string.update_24hour, + R.string.update_48hour ) entryValues = arrayOf("0", "1", "2", "3", "6", "12", "24", "48") defaultValue = "24" diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsParentalControlsController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsParentalControlsController.kt index 016b626c5..60e92af7f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsParentalControlsController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsParentalControlsController.kt @@ -2,14 +2,14 @@ package eu.kanade.tachiyomi.ui.setting import androidx.preference.PreferenceScreen import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys -import eu.kanade.tachiyomi.data.preference.PreferenceValues as Values import eu.kanade.tachiyomi.util.preference.defaultValue import eu.kanade.tachiyomi.util.preference.entriesRes import eu.kanade.tachiyomi.util.preference.infoPreference import eu.kanade.tachiyomi.util.preference.listPreference import eu.kanade.tachiyomi.util.preference.preferenceCategory import eu.kanade.tachiyomi.util.preference.titleRes +import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys +import eu.kanade.tachiyomi.data.preference.PreferenceValues as Values class SettingsParentalControlsController : SettingsController() { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt index 68e9c5cf0..9bd0999e2 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt @@ -3,7 +3,6 @@ package eu.kanade.tachiyomi.ui.setting import android.os.Build import androidx.preference.PreferenceScreen import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys import eu.kanade.tachiyomi.data.preference.PreferenceValues.TappingInvertMode import eu.kanade.tachiyomi.data.preference.asImmediateFlow import eu.kanade.tachiyomi.util.preference.defaultValue @@ -16,6 +15,7 @@ import eu.kanade.tachiyomi.util.preference.switchPreference import eu.kanade.tachiyomi.util.preference.titleRes import eu.kanade.tachiyomi.util.system.hasDisplayCutout import kotlinx.coroutines.flow.launchIn +import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys class SettingsReaderController : SettingsController() { @@ -26,8 +26,11 @@ class SettingsReaderController : SettingsController() { key = Keys.defaultViewer titleRes = R.string.pref_viewer_type entriesRes = arrayOf( - R.string.left_to_right_viewer, R.string.right_to_left_viewer, - R.string.vertical_viewer, R.string.webtoon_viewer, R.string.vertical_plus_viewer + R.string.left_to_right_viewer, + R.string.right_to_left_viewer, + R.string.vertical_viewer, + R.string.webtoon_viewer, + R.string.vertical_plus_viewer ) entryValues = arrayOf("1", "2", "3", "4", "5") defaultValue = "2" @@ -68,8 +71,10 @@ class SettingsReaderController : SettingsController() { key = Keys.rotation titleRes = R.string.pref_rotation_type entriesRes = arrayOf( - R.string.rotation_free, R.string.rotation_lock, - R.string.rotation_force_portrait, R.string.rotation_force_landscape + R.string.rotation_free, + R.string.rotation_lock, + R.string.rotation_force_portrait, + R.string.rotation_force_landscape ) entryValues = arrayOf("1", "2", "3", "4") defaultValue = "1" @@ -246,9 +251,12 @@ class SettingsReaderController : SettingsController() { key = Keys.imageScaleType titleRes = R.string.pref_image_scale_type entriesRes = arrayOf( - R.string.scale_type_fit_screen, R.string.scale_type_stretch, - R.string.scale_type_fit_width, R.string.scale_type_fit_height, - R.string.scale_type_original_size, R.string.scale_type_smart_fit + R.string.scale_type_fit_screen, + R.string.scale_type_stretch, + R.string.scale_type_fit_width, + R.string.scale_type_fit_height, + R.string.scale_type_original_size, + R.string.scale_type_smart_fit ) entryValues = arrayOf("1", "2", "3", "4", "5", "6") defaultValue = "1" @@ -258,8 +266,10 @@ class SettingsReaderController : SettingsController() { key = Keys.zoomStart titleRes = R.string.pref_zoom_start entriesRes = arrayOf( - R.string.zoom_start_automatic, R.string.zoom_start_left, - R.string.zoom_start_right, R.string.zoom_start_center + R.string.zoom_start_automatic, + R.string.zoom_start_left, + R.string.zoom_start_right, + R.string.zoom_start_center ) entryValues = arrayOf("1", "2", "3", "4") defaultValue = "1" diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsSecurityController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsSecurityController.kt index fd2cae681..bec0128be 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsSecurityController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsSecurityController.kt @@ -3,7 +3,6 @@ package eu.kanade.tachiyomi.ui.setting import androidx.biometric.BiometricManager import androidx.preference.PreferenceScreen import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys import eu.kanade.tachiyomi.data.preference.asImmediateFlow import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction import eu.kanade.tachiyomi.ui.category.biometric.BiometricTimesController @@ -15,6 +14,7 @@ import eu.kanade.tachiyomi.util.preference.summaryRes import eu.kanade.tachiyomi.util.preference.switchPreference import eu.kanade.tachiyomi.util.preference.titleRes import kotlinx.coroutines.flow.launchIn +import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys class SettingsSecurityController : SettingsController() { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsTrackingController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsTrackingController.kt index d61cce20a..5099075a0 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsTrackingController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsTrackingController.kt @@ -5,7 +5,6 @@ import android.content.Intent import androidx.browser.customtabs.CustomTabsIntent import androidx.preference.PreferenceScreen import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.data.track.TrackService import eu.kanade.tachiyomi.data.track.anilist.AnilistApi @@ -23,6 +22,7 @@ import eu.kanade.tachiyomi.util.preference.titleRes import eu.kanade.tachiyomi.util.system.getResourceColor import eu.kanade.tachiyomi.widget.preference.LoginPreference import uy.kohesive.injekt.injectLazy +import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys class SettingsTrackingController : SettingsController(), diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterSourceSync.kt b/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterSourceSync.kt index f72554bad..94795ccb5 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterSourceSync.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterSourceSync.kt @@ -9,10 +9,10 @@ import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.online.HttpSource import exh.EH_SOURCE_ID import exh.EXH_SOURCE_ID -import java.util.Date -import java.util.TreeSet import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import java.util.Date +import java.util.TreeSet /** * Helper method for syncing the list of chapters from the source with the ones from the database. diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/lang/RetryWithDelay.kt b/app/src/main/java/eu/kanade/tachiyomi/util/lang/RetryWithDelay.kt index a14825a4b..bc1d9a801 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/lang/RetryWithDelay.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/lang/RetryWithDelay.kt @@ -1,10 +1,10 @@ package eu.kanade.tachiyomi.util.lang -import java.util.concurrent.TimeUnit.MILLISECONDS import rx.Observable import rx.Scheduler import rx.functions.Func1 import rx.schedulers.Schedulers +import java.util.concurrent.TimeUnit.MILLISECONDS class RetryWithDelay( private val maxRetries: Int = 1, diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/lang/StringExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/lang/StringExtensions.kt index 1ae62a62e..74d98276c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/lang/StringExtensions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/lang/StringExtensions.kt @@ -1,7 +1,7 @@ package eu.kanade.tachiyomi.util.lang -import kotlin.math.floor import net.greypanther.natsort.CaseInsensitiveSimpleNaturalComparator +import kotlin.math.floor /** * Replaces the given string to have at most [count] characters using [replacement] at its end. diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/storage/EpubFile.kt b/app/src/main/java/eu/kanade/tachiyomi/util/storage/EpubFile.kt index 8d6c3a59b..656467850 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/storage/EpubFile.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/storage/EpubFile.kt @@ -2,6 +2,8 @@ package eu.kanade.tachiyomi.util.storage import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga +import org.jsoup.Jsoup +import org.jsoup.nodes.Document import java.io.Closeable import java.io.File import java.io.InputStream @@ -10,8 +12,6 @@ import java.text.SimpleDateFormat import java.util.Locale import java.util.zip.ZipEntry import java.util.zip.ZipFile -import org.jsoup.Jsoup -import org.jsoup.nodes.Document /** * Wrapper over ZipFile to load files in epub format. diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/storage/OkioExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/storage/OkioExtensions.kt index 0eac12d48..c3f72c866 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/storage/OkioExtensions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/storage/OkioExtensions.kt @@ -1,10 +1,10 @@ package eu.kanade.tachiyomi.util.storage -import java.io.File -import java.io.OutputStream import okio.BufferedSource import okio.buffer import okio.sink +import java.io.File +import java.io.OutputStream /** * Saves the given source to a file and closes it. Directories will be created if needed. diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt index 925d57dfe..5f6e0da99 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt @@ -33,10 +33,10 @@ import com.nononsenseapps.filepicker.FilePickerActivity import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.util.lang.truncateCenter import eu.kanade.tachiyomi.widget.CustomLayoutPickerActivity -import kotlin.math.roundToInt import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch +import kotlin.math.roundToInt /** * Display a toast in this context. diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/LocaleHelper.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/LocaleHelper.kt index 385e36932..81eda11a3 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/system/LocaleHelper.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/LocaleHelper.kt @@ -8,8 +8,8 @@ import android.view.ContextThemeWrapper import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.ui.browse.source.SourcePresenter -import java.util.Locale import uy.kohesive.injekt.injectLazy +import java.util.Locale /** * Utility class to change the application's language in runtime. diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/WebViewClientCompat.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/WebViewClientCompat.kt index d32cc1141..8d2eea7cf 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/system/WebViewClientCompat.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/WebViewClientCompat.kt @@ -61,8 +61,11 @@ abstract class WebViewClientCompat : WebViewClient() { error: WebResourceError ) { onReceivedErrorCompat( - view, error.errorCode, error.description?.toString(), - request.url.toString(), request.isForMainFrame + view, + error.errorCode, + error.description?.toString(), + request.url.toString(), + request.isForMainFrame ) } @@ -82,7 +85,9 @@ abstract class WebViewClientCompat : WebViewClient() { error: WebResourceResponse ) { onReceivedErrorCompat( - view, error.statusCode, error.reasonPhrase, + view, + error.statusCode, + error.reasonPhrase, request.url .toString(), request.isForMainFrame diff --git a/app/src/main/java/eu/kanade/tachiyomi/widget/ActionToolbar.kt b/app/src/main/java/eu/kanade/tachiyomi/widget/ActionToolbar.kt index eb6f70c93..4b825cfd8 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/widget/ActionToolbar.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/widget/ActionToolbar.kt @@ -59,11 +59,13 @@ class ActionToolbar @JvmOverloads constructor(context: Context, attrs: Attribute */ fun hide() { val bottomAnimation = AnimationUtils.loadAnimation(context, R.anim.exit_to_bottom) - bottomAnimation.setAnimationListener(object : SimpleAnimationListener() { - override fun onAnimationEnd(animation: Animation) { - common_action_toolbar.isVisible = false + bottomAnimation.setAnimationListener( + object : SimpleAnimationListener() { + override fun onAnimationEnd(animation: Animation) { + common_action_toolbar.isVisible = false + } } - }) + ) common_action_toolbar.startAnimation(bottomAnimation) } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/widget/EmptyView.kt b/app/src/main/java/eu/kanade/tachiyomi/widget/EmptyView.kt index 3d56b942e..05bb89d6c 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/widget/EmptyView.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/widget/EmptyView.kt @@ -8,10 +8,10 @@ import androidx.annotation.StringRes import androidx.appcompat.widget.AppCompatButton import androidx.core.view.isVisible import eu.kanade.tachiyomi.R -import kotlin.random.Random import kotlinx.android.synthetic.main.common_view_empty.view.actions_container import kotlinx.android.synthetic.main.common_view_empty.view.text_face import kotlinx.android.synthetic.main.common_view_empty.view.text_label +import kotlin.random.Random class EmptyView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : RelativeLayout(context, attrs) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/widget/ExtendedNavigationView.kt b/app/src/main/java/eu/kanade/tachiyomi/widget/ExtendedNavigationView.kt index d7b84ab47..07f094c02 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/widget/ExtendedNavigationView.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/widget/ExtendedNavigationView.kt @@ -137,11 +137,13 @@ open class ExtendedNavigationView @JvmOverloads constructor( return when (state) { STATE_INCLUDE -> tintVector(context, R.drawable.ic_check_box_24dp) STATE_EXCLUDE -> tintVector( - context, R.drawable.ic_check_box_x_24dp, + context, + R.drawable.ic_check_box_x_24dp, android.R.attr.textColorSecondary ) else -> tintVector( - context, R.drawable.ic_check_box_outline_blank_24dp, + context, + R.drawable.ic_check_box_outline_blank_24dp, android.R.attr.textColorSecondary ) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/widget/MaterialFastScroll.kt b/app/src/main/java/eu/kanade/tachiyomi/widget/MaterialFastScroll.kt index 3f6778089..60549d302 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/widget/MaterialFastScroll.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/widget/MaterialFastScroll.kt @@ -12,7 +12,9 @@ class MaterialFastScroll @JvmOverloads constructor(context: Context, attrs: Attr init { setViewsToUse( - R.layout.material_fastscroll, R.id.fast_scroller_bubble, R.id.fast_scroller_handle + R.layout.material_fastscroll, + R.id.fast_scroller_bubble, + R.id.fast_scroller_handle ) autoHideEnabled = true ignoreTouchesOutsideHandle = true diff --git a/app/src/main/java/eu/kanade/tachiyomi/widget/NegativeSeekBar.kt b/app/src/main/java/eu/kanade/tachiyomi/widget/NegativeSeekBar.kt index 10f4f1296..36f5a7a6c 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/widget/NegativeSeekBar.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/widget/NegativeSeekBar.kt @@ -18,7 +18,9 @@ class NegativeSeekBar @JvmOverloads constructor(context: Context, attrs: Attribu init { val styledAttributes = context.obtainStyledAttributes( attrs, - R.styleable.NegativeSeekBar, 0, 0 + R.styleable.NegativeSeekBar, + 0, + 0 ) try { @@ -28,19 +30,21 @@ class NegativeSeekBar @JvmOverloads constructor(context: Context, attrs: Attribu styledAttributes.recycle() } - super.setOnSeekBarChangeListener(object : OnSeekBarChangeListener { - override fun onProgressChanged(seekBar: SeekBar?, value: Int, fromUser: Boolean) { - listener?.onProgressChanged(seekBar, minValue + value, fromUser) - } + super.setOnSeekBarChangeListener( + object : OnSeekBarChangeListener { + override fun onProgressChanged(seekBar: SeekBar?, value: Int, fromUser: Boolean) { + listener?.onProgressChanged(seekBar, minValue + value, fromUser) + } - override fun onStartTrackingTouch(p0: SeekBar?) { - listener?.onStartTrackingTouch(p0) - } + override fun onStartTrackingTouch(p0: SeekBar?) { + listener?.onStartTrackingTouch(p0) + } - override fun onStopTrackingTouch(p0: SeekBar?) { - listener?.onStopTrackingTouch(p0) + override fun onStopTrackingTouch(p0: SeekBar?) { + listener?.onStopTrackingTouch(p0) + } } - }) + ) } override fun setProgress(progress: Int) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/widget/RevealAnimationView.kt b/app/src/main/java/eu/kanade/tachiyomi/widget/RevealAnimationView.kt index 69dcde091..8201d3b4a 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/widget/RevealAnimationView.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/widget/RevealAnimationView.kt @@ -25,7 +25,11 @@ class RevealAnimationView @JvmOverloads constructor(context: Context, attrs: Att // Create the animation (the final radius is zero). val anim = ViewAnimationUtils.createCircularReveal( - this, centerX, centerY, initialRadius.toFloat(), 0f + this, + centerX, + centerY, + initialRadius.toFloat(), + 0f ) // Set duration of animation. @@ -55,7 +59,11 @@ class RevealAnimationView @JvmOverloads constructor(context: Context, attrs: Att // Create animation val anim = ViewAnimationUtils.createCircularReveal( - this, centerX, centerY, 0f, height.toFloat() + this, + centerX, + centerY, + 0f, + height.toFloat() ) // Set duration of animation diff --git a/app/src/main/java/eu/kanade/tachiyomi/widget/SimpleNavigationView.kt b/app/src/main/java/eu/kanade/tachiyomi/widget/SimpleNavigationView.kt index 1d91b7b76..af0cdcfe4 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/widget/SimpleNavigationView.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/widget/SimpleNavigationView.kt @@ -18,8 +18,8 @@ import androidx.recyclerview.widget.RecyclerView import com.google.android.material.R import com.google.android.material.internal.ScrimInsetsFrameLayout import com.google.android.material.textfield.TextInputLayout -import eu.kanade.tachiyomi.R as TR import eu.kanade.tachiyomi.util.view.inflate +import eu.kanade.tachiyomi.R as TR @Suppress("LeakingThis") @SuppressLint("PrivateResource", "RestrictedApi") @@ -37,20 +37,24 @@ open class SimpleNavigationView @JvmOverloads constructor( init { // Custom attributes val a = TintTypedArray.obtainStyledAttributes( - context, attrs, - R.styleable.NavigationView, defStyleAttr, + context, + attrs, + R.styleable.NavigationView, + defStyleAttr, R.style.Widget_Design_NavigationView ) ViewCompat.setBackground( - this, a.getDrawable(R.styleable.NavigationView_android_background) + this, + a.getDrawable(R.styleable.NavigationView_android_background) ) if (a.hasValue(R.styleable.NavigationView_elevation)) { ViewCompat.setElevation( this, a.getDimensionPixelSize( - R.styleable.NavigationView_elevation, 0 + R.styleable.NavigationView_elevation, + 0 ).toFloat() ) } diff --git a/app/src/main/java/exh/EXHMigrations.kt b/app/src/main/java/exh/EXHMigrations.kt index 60ec990ba..568bd12cd 100644 --- a/app/src/main/java/exh/EXHMigrations.kt +++ b/app/src/main/java/exh/EXHMigrations.kt @@ -28,10 +28,10 @@ import eu.kanade.tachiyomi.source.online.all.Hitomi import eu.kanade.tachiyomi.source.online.all.NHentai import exh.merged.sql.models.MergedMangaReference import exh.source.BlacklistedSources +import uy.kohesive.injekt.injectLazy import java.io.File import java.net.URI import java.net.URISyntaxException -import uy.kohesive.injekt.injectLazy object EXHMigrations { private val db: DatabaseHelper by injectLazy() diff --git a/app/src/main/java/exh/GalleryAdder.kt b/app/src/main/java/exh/GalleryAdder.kt index 54e6f1b2b..fc53379f7 100755 --- a/app/src/main/java/exh/GalleryAdder.kt +++ b/app/src/main/java/exh/GalleryAdder.kt @@ -10,8 +10,8 @@ import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.online.UrlImportableSource import eu.kanade.tachiyomi.source.online.all.EHentai import eu.kanade.tachiyomi.util.chapter.syncChaptersWithSource -import java.util.Date import uy.kohesive.injekt.injectLazy +import java.util.Date class GalleryAdder { diff --git a/app/src/main/java/exh/debug/DebugFunctions.kt b/app/src/main/java/exh/debug/DebugFunctions.kt index 2c3aec7d3..0de4ef32c 100644 --- a/app/src/main/java/exh/debug/DebugFunctions.kt +++ b/app/src/main/java/exh/debug/DebugFunctions.kt @@ -25,7 +25,6 @@ import exh.metadata.metadata.base.insertFlatMetadata import exh.util.await import exh.util.cancellable import exh.util.jobScheduler -import java.lang.RuntimeException import kotlinx.coroutines.FlowPreview import kotlinx.coroutines.flow.asFlow import kotlinx.coroutines.flow.mapNotNull @@ -34,6 +33,7 @@ import kotlinx.coroutines.runBlocking import timber.log.Timber import uy.kohesive.injekt.injectLazy import xyz.nulldev.ts.api.http.serializer.FilterSerializer +import java.lang.RuntimeException @OptIn(FlowPreview::class) object DebugFunctions { diff --git a/app/src/main/java/exh/eh/EHentaiUpdateHelper.kt b/app/src/main/java/exh/eh/EHentaiUpdateHelper.kt index 21ae9dd29..a7ad3eee2 100644 --- a/app/src/main/java/exh/eh/EHentaiUpdateHelper.kt +++ b/app/src/main/java/exh/eh/EHentaiUpdateHelper.kt @@ -8,11 +8,11 @@ import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.database.models.MangaCategory import exh.metadata.metadata.EHentaiSearchMetadata import exh.metadata.metadata.base.getFlatMetadataForManga -import java.io.File -import java.util.Date import rx.Observable import rx.Single import uy.kohesive.injekt.injectLazy +import java.io.File +import java.util.Date data class ChapterChain(val manga: Manga, val chapters: List) diff --git a/app/src/main/java/exh/eh/EHentaiUpdateWorker.kt b/app/src/main/java/exh/eh/EHentaiUpdateWorker.kt index 9497ed9cd..96072aaa0 100644 --- a/app/src/main/java/exh/eh/EHentaiUpdateWorker.kt +++ b/app/src/main/java/exh/eh/EHentaiUpdateWorker.kt @@ -27,11 +27,6 @@ import exh.metadata.metadata.base.insertFlatMetadata import exh.util.await import exh.util.cancellable import exh.util.jobScheduler -import java.util.ArrayList -import kotlin.coroutines.CoroutineContext -import kotlin.time.ExperimentalTime -import kotlin.time.days -import kotlin.time.hours import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi @@ -47,6 +42,11 @@ import rx.schedulers.Schedulers import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy +import java.util.ArrayList +import kotlin.coroutines.CoroutineContext +import kotlin.time.ExperimentalTime +import kotlin.time.days +import kotlin.time.hours class EHentaiUpdateWorker : JobService(), CoroutineScope { override val coroutineContext: CoroutineContext diff --git a/app/src/main/java/exh/eh/MemAutoFlushingLookupTable.kt b/app/src/main/java/exh/eh/MemAutoFlushingLookupTable.kt index 911949289..8acc30b40 100644 --- a/app/src/main/java/exh/eh/MemAutoFlushingLookupTable.kt +++ b/app/src/main/java/exh/eh/MemAutoFlushingLookupTable.kt @@ -3,13 +3,6 @@ package exh.eh import android.util.SparseArray import androidx.core.util.AtomicFile import com.elvishew.xlog.XLog -import java.io.Closeable -import java.io.File -import java.io.FileNotFoundException -import java.io.InputStream -import java.nio.ByteBuffer -import kotlin.concurrent.thread -import kotlin.coroutines.CoroutineContext import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -22,6 +15,13 @@ import kotlinx.coroutines.runBlocking import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock import kotlinx.coroutines.withContext +import java.io.Closeable +import java.io.File +import java.io.FileNotFoundException +import java.io.InputStream +import java.nio.ByteBuffer +import kotlin.concurrent.thread +import kotlin.coroutines.CoroutineContext /** * In memory Int -> Obj lookup table implementation that diff --git a/app/src/main/java/exh/favorites/FavoritesSyncHelper.kt b/app/src/main/java/exh/favorites/FavoritesSyncHelper.kt index ba0335a4c..4b4ed69e9 100644 --- a/app/src/main/java/exh/favorites/FavoritesSyncHelper.kt +++ b/app/src/main/java/exh/favorites/FavoritesSyncHelper.kt @@ -24,13 +24,13 @@ import exh.eh.EHentaiUpdateWorker import exh.util.ignore import exh.util.trans import exh.util.wifiManager -import kotlin.concurrent.thread import okhttp3.FormBody import okhttp3.Request import rx.subjects.BehaviorSubject import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy +import kotlin.concurrent.thread class FavoritesSyncHelper(val context: Context) { private val db: DatabaseHelper by injectLazy() diff --git a/app/src/main/java/exh/favorites/LocalFavoritesStorage.kt b/app/src/main/java/exh/favorites/LocalFavoritesStorage.kt index e09fc75c0..5626e180a 100644 --- a/app/src/main/java/exh/favorites/LocalFavoritesStorage.kt +++ b/app/src/main/java/exh/favorites/LocalFavoritesStorage.kt @@ -8,8 +8,8 @@ import exh.EXH_SOURCE_ID import exh.metadata.metadata.EHentaiSearchMetadata import io.realm.Realm import io.realm.RealmConfiguration -import java.util.Date import uy.kohesive.injekt.injectLazy +import java.util.Date class LocalFavoritesStorage { private val db: DatabaseHelper by injectLazy() diff --git a/app/src/main/java/exh/md/handlers/ApiChapterParser.kt b/app/src/main/java/exh/md/handlers/ApiChapterParser.kt index 0e0c3d250..dfe64fee7 100644 --- a/app/src/main/java/exh/md/handlers/ApiChapterParser.kt +++ b/app/src/main/java/exh/md/handlers/ApiChapterParser.kt @@ -3,8 +3,8 @@ package exh.md.handlers import com.github.salomonbrys.kotson.string import com.google.gson.JsonParser import eu.kanade.tachiyomi.source.model.Page -import java.util.Date import okhttp3.Response +import java.util.Date class ApiChapterParser { fun pageListParse(response: Response): List { diff --git a/app/src/main/java/exh/md/handlers/ApiMangaParser.kt b/app/src/main/java/exh/md/handlers/ApiMangaParser.kt index 8e669fe3c..a06481066 100644 --- a/app/src/main/java/exh/md/handlers/ApiMangaParser.kt +++ b/app/src/main/java/exh/md/handlers/ApiMangaParser.kt @@ -18,12 +18,12 @@ import exh.metadata.metadata.base.RaisedTag import exh.metadata.metadata.base.getFlatMetadataForManga import exh.metadata.metadata.base.insertFlatMetadata import exh.util.floor -import java.util.Date import okhttp3.Response import rx.Completable import rx.Single import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import java.util.Date class ApiMangaParser(private val langs: List) { val db: DatabaseHelper get() = Injekt.get() diff --git a/app/src/main/java/exh/md/handlers/MangaPlusHandler.kt b/app/src/main/java/exh/md/handlers/MangaPlusHandler.kt index f941dd20c..c5303b4d4 100644 --- a/app/src/main/java/exh/md/handlers/MangaPlusHandler.kt +++ b/app/src/main/java/exh/md/handlers/MangaPlusHandler.kt @@ -3,7 +3,6 @@ package exh.md.handlers import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.source.model.Page import exh.md.handlers.serializers.MangaPlusSerializer -import java.util.UUID import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.protobuf.ProtoBuf import okhttp3.Headers @@ -13,6 +12,7 @@ import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response import okhttp3.ResponseBody.Companion.toResponseBody +import java.util.UUID class MangaPlusHandler(currentClient: OkHttpClient) { val baseUrl = "https://jumpg-webapi.tokyo-cdn.com/api" diff --git a/app/src/main/java/exh/md/utils/MdUtil.kt b/app/src/main/java/exh/md/utils/MdUtil.kt index 786d4d1ff..5aea911b1 100644 --- a/app/src/main/java/exh/md/utils/MdUtil.kt +++ b/app/src/main/java/exh/md/utils/MdUtil.kt @@ -6,12 +6,12 @@ import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.all.MangaDex import exh.util.floor -import java.net.URI -import java.net.URISyntaxException import kotlinx.serialization.json.Json import org.jsoup.parser.Parser import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import java.net.URI +import java.net.URISyntaxException class MdUtil { diff --git a/app/src/main/java/exh/metadata/metadata/EHentaiSearchMetadata.kt b/app/src/main/java/exh/metadata/metadata/EHentaiSearchMetadata.kt index 50c4d0f4c..77701d229 100644 --- a/app/src/main/java/exh/metadata/metadata/EHentaiSearchMetadata.kt +++ b/app/src/main/java/exh/metadata/metadata/EHentaiSearchMetadata.kt @@ -9,9 +9,9 @@ import exh.metadata.EX_DATE_FORMAT import exh.metadata.ONGOING_SUFFIX import exh.metadata.humanReadableByteCount import exh.metadata.metadata.base.RaisedSearchMetadata -import java.util.Date import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import java.util.Date class EHentaiSearchMetadata : RaisedSearchMetadata() { var gId: String? diff --git a/app/src/main/java/exh/metadata/metadata/NHentaiSearchMetadata.kt b/app/src/main/java/exh/metadata/metadata/NHentaiSearchMetadata.kt index dd446af01..1f635eb2a 100644 --- a/app/src/main/java/exh/metadata/metadata/NHentaiSearchMetadata.kt +++ b/app/src/main/java/exh/metadata/metadata/NHentaiSearchMetadata.kt @@ -6,8 +6,8 @@ import eu.kanade.tachiyomi.source.model.SManga import exh.metadata.EX_DATE_FORMAT import exh.metadata.ONGOING_SUFFIX import exh.metadata.metadata.base.RaisedSearchMetadata -import java.util.Date import uy.kohesive.injekt.api.get +import java.util.Date class NHentaiSearchMetadata : RaisedSearchMetadata() { var url get() = nhId?.let { BASE_URL + nhIdToPath(it) } diff --git a/app/src/main/java/exh/metadata/metadata/base/FlatMetadata.kt b/app/src/main/java/exh/metadata/metadata/base/FlatMetadata.kt index 8a21f0db8..3b65dae96 100644 --- a/app/src/main/java/exh/metadata/metadata/base/FlatMetadata.kt +++ b/app/src/main/java/exh/metadata/metadata/base/FlatMetadata.kt @@ -5,9 +5,9 @@ import eu.kanade.tachiyomi.data.database.DatabaseHelper import exh.metadata.sql.models.SearchMetadata import exh.metadata.sql.models.SearchTag import exh.metadata.sql.models.SearchTitle -import kotlin.reflect.KClass import rx.Completable import rx.Single +import kotlin.reflect.KClass data class FlatMetadata( val metadata: SearchMetadata, diff --git a/app/src/main/java/exh/uconfig/ConfiguringDialogController.kt b/app/src/main/java/exh/uconfig/ConfiguringDialogController.kt index 5777fbc67..ed9143e50 100644 --- a/app/src/main/java/exh/uconfig/ConfiguringDialogController.kt +++ b/app/src/main/java/exh/uconfig/ConfiguringDialogController.kt @@ -8,8 +8,8 @@ import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.ui.base.controller.DialogController import eu.kanade.tachiyomi.util.lang.launchUI import eu.kanade.tachiyomi.util.system.toast -import kotlin.concurrent.thread import timber.log.Timber +import kotlin.concurrent.thread class ConfiguringDialogController : DialogController() { private var materialDialog: MaterialDialog? = null diff --git a/app/src/main/java/exh/ui/LoaderManager.kt b/app/src/main/java/exh/ui/LoaderManager.kt index f30318e19..7ee55ad2f 100644 --- a/app/src/main/java/exh/ui/LoaderManager.kt +++ b/app/src/main/java/exh/ui/LoaderManager.kt @@ -1,11 +1,11 @@ package exh.ui -import java.util.UUID -import kotlin.coroutines.CoroutineContext -import kotlin.coroutines.EmptyCoroutineContext import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch +import java.util.UUID +import kotlin.coroutines.CoroutineContext +import kotlin.coroutines.EmptyCoroutineContext typealias LoadingHandle = String diff --git a/app/src/main/java/exh/ui/base/BaseExhController.kt b/app/src/main/java/exh/ui/base/BaseExhController.kt index 6d5edb872..9f1fb5835 100644 --- a/app/src/main/java/exh/ui/base/BaseExhController.kt +++ b/app/src/main/java/exh/ui/base/BaseExhController.kt @@ -7,11 +7,11 @@ import android.view.ViewGroup import androidx.annotation.LayoutRes import androidx.viewbinding.ViewBinding import eu.kanade.tachiyomi.ui.base.controller.BaseController -import kotlin.coroutines.CoroutineContext import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.cancel +import kotlin.coroutines.CoroutineContext abstract class BaseExhController(bundle: Bundle? = null) : BaseController(bundle), CoroutineScope { abstract val layoutId: Int diff --git a/app/src/main/java/exh/ui/batchadd/BatchAddController.kt b/app/src/main/java/exh/ui/batchadd/BatchAddController.kt index d61eea9fb..de2fe05f0 100755 --- a/app/src/main/java/exh/ui/batchadd/BatchAddController.kt +++ b/app/src/main/java/exh/ui/batchadd/BatchAddController.kt @@ -93,8 +93,8 @@ class BatchAddController : NucleusController() { diff --git a/app/src/main/java/exh/ui/captcha/AutoSolvingWebViewClient.kt b/app/src/main/java/exh/ui/captcha/AutoSolvingWebViewClient.kt index 386efa38b..895d4b01f 100644 --- a/app/src/main/java/exh/ui/captcha/AutoSolvingWebViewClient.kt +++ b/app/src/main/java/exh/ui/captcha/AutoSolvingWebViewClient.kt @@ -5,9 +5,9 @@ import android.webkit.WebResourceResponse import android.webkit.WebView import eu.kanade.tachiyomi.util.asJsoup import exh.ui.captcha.BrowserActionActivity.Companion.CROSS_WINDOW_SCRIPT_INNER -import java.nio.charset.Charset import org.jsoup.nodes.DataNode import org.jsoup.nodes.Element +import java.nio.charset.Charset class AutoSolvingWebViewClient( activity: BrowserActionActivity, diff --git a/app/src/main/java/exh/ui/captcha/BrowserActionActivity.kt b/app/src/main/java/exh/ui/captcha/BrowserActionActivity.kt index d890108bb..00e576ace 100644 --- a/app/src/main/java/exh/ui/captcha/BrowserActionActivity.kt +++ b/app/src/main/java/exh/ui/captcha/BrowserActionActivity.kt @@ -25,9 +25,6 @@ import eu.kanade.tachiyomi.source.online.HttpSource import eu.kanade.tachiyomi.util.system.setDefaultSettings import exh.source.DelegatedHttpSource import exh.util.melt -import java.io.Serializable -import java.net.URL -import java.util.UUID import kotlinx.android.synthetic.main.eh_activity_captcha.toolbar import kotlinx.android.synthetic.main.eh_activity_captcha.webview import okhttp3.HttpUrl.Companion.toHttpUrlOrNull @@ -40,6 +37,9 @@ import rx.Single import rx.schedulers.Schedulers import timber.log.Timber import uy.kohesive.injekt.injectLazy +import java.io.Serializable +import java.net.URL +import java.util.UUID class BrowserActionActivity : AppCompatActivity() { private val sourceManager: SourceManager by injectLazy() diff --git a/app/src/main/java/exh/ui/intercept/InterceptActivity.kt b/app/src/main/java/exh/ui/intercept/InterceptActivity.kt index 3e219dd88..f4d4805e6 100755 --- a/app/src/main/java/exh/ui/intercept/InterceptActivity.kt +++ b/app/src/main/java/exh/ui/intercept/InterceptActivity.kt @@ -14,10 +14,10 @@ import eu.kanade.tachiyomi.ui.main.MainActivity import eu.kanade.tachiyomi.ui.manga.MangaController import exh.GalleryAddEvent import exh.GalleryAdder -import kotlin.concurrent.thread import rx.Subscription import rx.android.schedulers.AndroidSchedulers import rx.subjects.BehaviorSubject +import kotlin.concurrent.thread class InterceptActivity : BaseActivity() { private var statusSubscription: Subscription? = null diff --git a/app/src/main/java/exh/ui/login/LoginController.kt b/app/src/main/java/exh/ui/login/LoginController.kt index f476fb764..310bc1727 100755 --- a/app/src/main/java/exh/ui/login/LoginController.kt +++ b/app/src/main/java/exh/ui/login/LoginController.kt @@ -15,9 +15,9 @@ import eu.kanade.tachiyomi.ui.base.controller.NucleusController import eu.kanade.tachiyomi.util.lang.launchUI import eu.kanade.tachiyomi.util.system.setDefaultSettings import exh.uconfig.WarnConfigureDialogController -import java.net.HttpCookie import timber.log.Timber import uy.kohesive.injekt.injectLazy +import java.net.HttpCookie /** * LoginController diff --git a/app/src/main/java/exh/ui/metadata/adapters/EHentaiDescriptionAdapter.kt b/app/src/main/java/exh/ui/metadata/adapters/EHentaiDescriptionAdapter.kt index 4505430cd..a998db64a 100644 --- a/app/src/main/java/exh/ui/metadata/adapters/EHentaiDescriptionAdapter.kt +++ b/app/src/main/java/exh/ui/metadata/adapters/EHentaiDescriptionAdapter.kt @@ -16,8 +16,6 @@ import exh.metadata.humanReadableByteCount import exh.metadata.metadata.EHentaiSearchMetadata import exh.ui.metadata.MetadataViewController import exh.util.SourceTagsUtil -import java.util.Date -import kotlin.math.roundToInt import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -25,6 +23,8 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import reactivecircus.flowbinding.android.view.clicks import reactivecircus.flowbinding.android.view.longClicks +import java.util.Date +import kotlin.math.roundToInt class EHentaiDescriptionAdapter( private val controller: MangaController diff --git a/app/src/main/java/exh/ui/metadata/adapters/HitomiDescriptionAdapter.kt b/app/src/main/java/exh/ui/metadata/adapters/HitomiDescriptionAdapter.kt index c711c61c8..7d85e0273 100644 --- a/app/src/main/java/exh/ui/metadata/adapters/HitomiDescriptionAdapter.kt +++ b/app/src/main/java/exh/ui/metadata/adapters/HitomiDescriptionAdapter.kt @@ -14,7 +14,6 @@ import exh.metadata.EX_DATE_FORMAT import exh.metadata.metadata.HitomiSearchMetadata import exh.ui.metadata.MetadataViewController import exh.util.SourceTagsUtil -import java.util.Date import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -22,6 +21,7 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import reactivecircus.flowbinding.android.view.clicks import reactivecircus.flowbinding.android.view.longClicks +import java.util.Date class HitomiDescriptionAdapter( private val controller: MangaController diff --git a/app/src/main/java/exh/ui/metadata/adapters/MangaDexDescriptionAdapter.kt b/app/src/main/java/exh/ui/metadata/adapters/MangaDexDescriptionAdapter.kt index cf685ef57..7626d523c 100644 --- a/app/src/main/java/exh/ui/metadata/adapters/MangaDexDescriptionAdapter.kt +++ b/app/src/main/java/exh/ui/metadata/adapters/MangaDexDescriptionAdapter.kt @@ -12,7 +12,6 @@ import eu.kanade.tachiyomi.ui.manga.MangaController import eu.kanade.tachiyomi.util.system.copyToClipboard import exh.metadata.metadata.MangaDexSearchMetadata import exh.ui.metadata.MetadataViewController -import kotlin.math.roundToInt import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -20,6 +19,7 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import reactivecircus.flowbinding.android.view.clicks import reactivecircus.flowbinding.android.view.longClicks +import kotlin.math.roundToInt class MangaDexDescriptionAdapter( private val controller: MangaController diff --git a/app/src/main/java/exh/ui/metadata/adapters/NHentaiDescriptionAdapter.kt b/app/src/main/java/exh/ui/metadata/adapters/NHentaiDescriptionAdapter.kt index 99d65ca84..c1c446fae 100644 --- a/app/src/main/java/exh/ui/metadata/adapters/NHentaiDescriptionAdapter.kt +++ b/app/src/main/java/exh/ui/metadata/adapters/NHentaiDescriptionAdapter.kt @@ -16,7 +16,6 @@ import exh.metadata.EX_DATE_FORMAT import exh.metadata.metadata.NHentaiSearchMetadata import exh.ui.metadata.MetadataViewController import exh.util.SourceTagsUtil -import java.util.Date import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -24,6 +23,7 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import reactivecircus.flowbinding.android.view.clicks import reactivecircus.flowbinding.android.view.longClicks +import java.util.Date class NHentaiDescriptionAdapter( private val controller: MangaController diff --git a/app/src/main/java/exh/ui/metadata/adapters/PervEdenDescriptionAdapter.kt b/app/src/main/java/exh/ui/metadata/adapters/PervEdenDescriptionAdapter.kt index 81ac3b90a..9c77cd684 100644 --- a/app/src/main/java/exh/ui/metadata/adapters/PervEdenDescriptionAdapter.kt +++ b/app/src/main/java/exh/ui/metadata/adapters/PervEdenDescriptionAdapter.kt @@ -13,8 +13,6 @@ import eu.kanade.tachiyomi.util.system.copyToClipboard import exh.metadata.metadata.PervEdenSearchMetadata import exh.ui.metadata.MetadataViewController import exh.util.SourceTagsUtil -import java.util.Locale -import kotlin.math.roundToInt import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -22,6 +20,8 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import reactivecircus.flowbinding.android.view.clicks import reactivecircus.flowbinding.android.view.longClicks +import java.util.Locale +import kotlin.math.roundToInt class PervEdenDescriptionAdapter( private val controller: MangaController diff --git a/app/src/main/java/exh/ui/metadata/adapters/PururinDescriptionAdapter.kt b/app/src/main/java/exh/ui/metadata/adapters/PururinDescriptionAdapter.kt index 3943a186e..8d69fdf8a 100644 --- a/app/src/main/java/exh/ui/metadata/adapters/PururinDescriptionAdapter.kt +++ b/app/src/main/java/exh/ui/metadata/adapters/PururinDescriptionAdapter.kt @@ -14,7 +14,6 @@ import exh.metadata.metadata.PururinSearchMetadata import exh.metadata.metadata.PururinSearchMetadata.Companion.TAG_NAMESPACE_CATEGORY import exh.ui.metadata.MetadataViewController import exh.util.SourceTagsUtil -import kotlin.math.roundToInt import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -22,6 +21,7 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import reactivecircus.flowbinding.android.view.clicks import reactivecircus.flowbinding.android.view.longClicks +import kotlin.math.roundToInt class PururinDescriptionAdapter( private val controller: MangaController diff --git a/app/src/main/java/exh/ui/metadata/adapters/TsuminoDescriptionAdapter.kt b/app/src/main/java/exh/ui/metadata/adapters/TsuminoDescriptionAdapter.kt index 48f05de39..f3d646053 100644 --- a/app/src/main/java/exh/ui/metadata/adapters/TsuminoDescriptionAdapter.kt +++ b/app/src/main/java/exh/ui/metadata/adapters/TsuminoDescriptionAdapter.kt @@ -14,8 +14,6 @@ import eu.kanade.tachiyomi.util.system.getResourceColor import exh.metadata.metadata.TsuminoSearchMetadata import exh.ui.metadata.MetadataViewController import exh.util.SourceTagsUtil -import java.util.Date -import kotlin.math.roundToInt import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -23,6 +21,8 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import reactivecircus.flowbinding.android.view.clicks import reactivecircus.flowbinding.android.view.longClicks +import java.util.Date +import kotlin.math.roundToInt class TsuminoDescriptionAdapter( private val controller: MangaController diff --git a/app/src/main/java/exh/util/CoroutineUtil.kt b/app/src/main/java/exh/util/CoroutineUtil.kt index 39ec95bfb..05d5b4125 100644 --- a/app/src/main/java/exh/util/CoroutineUtil.kt +++ b/app/src/main/java/exh/util/CoroutineUtil.kt @@ -1,10 +1,10 @@ package exh.util -import kotlin.coroutines.coroutineContext import kotlinx.coroutines.FlowPreview import kotlinx.coroutines.ensureActive import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.onEach +import kotlin.coroutines.coroutineContext @FlowPreview fun Flow.cancellable() = onEach { diff --git a/app/src/main/java/exh/util/MangaType.kt b/app/src/main/java/exh/util/MangaType.kt index 2a1157372..e09173ddc 100644 --- a/app/src/main/java/exh/util/MangaType.kt +++ b/app/src/main/java/exh/util/MangaType.kt @@ -5,9 +5,9 @@ import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.ui.reader.ReaderActivity -import java.util.Locale import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import java.util.Locale fun Manga.mangaType(context: Context): String { return context.getString( diff --git a/app/src/main/java/exh/util/OkHttpExtensions.kt b/app/src/main/java/exh/util/OkHttpExtensions.kt index f7d558589..b3a0321a2 100644 --- a/app/src/main/java/exh/util/OkHttpExtensions.kt +++ b/app/src/main/java/exh/util/OkHttpExtensions.kt @@ -1,11 +1,11 @@ package exh.util -import java.util.concurrent.atomic.AtomicBoolean import okhttp3.Call import okhttp3.Response import rx.Observable import rx.Producer import rx.Subscription +import java.util.concurrent.atomic.AtomicBoolean fun Call.asObservableWithAsyncStacktrace(): Observable> { // Record stacktrace at creation time for easier debugging diff --git a/app/src/main/java/exh/util/RxUtil.kt b/app/src/main/java/exh/util/RxUtil.kt index 0b4cfe7a9..40903211d 100644 --- a/app/src/main/java/exh/util/RxUtil.kt +++ b/app/src/main/java/exh/util/RxUtil.kt @@ -2,8 +2,6 @@ package exh.util import com.pushtorefresh.storio.operations.PreparedOperation import com.pushtorefresh.storio.sqlite.operations.get.PreparedGetObject -import kotlin.coroutines.resume -import kotlin.coroutines.resumeWithException import kotlinx.coroutines.CancellableContinuation import kotlinx.coroutines.CancellationException import kotlinx.coroutines.CoroutineStart @@ -28,6 +26,8 @@ import rx.SingleSubscriber import rx.Subscriber import rx.Subscription import rx.subjects.ReplaySubject +import kotlin.coroutines.resume +import kotlin.coroutines.resumeWithException /** * Transform a cold single to a hot single @@ -103,32 +103,36 @@ suspend fun Completable.awaitSuspending(subscribeOn: Scheduler? = null) { } suspend fun Completable.awaitCompleted(): Unit = suspendCancellableCoroutine { cont -> - subscribe(object : CompletableSubscriber { - override fun onSubscribe(s: Subscription) { - cont.unsubscribeOnCancellation(s) - } + subscribe( + object : CompletableSubscriber { + override fun onSubscribe(s: Subscription) { + cont.unsubscribeOnCancellation(s) + } - override fun onCompleted() { - cont.resume(Unit) - } + override fun onCompleted() { + cont.resume(Unit) + } - override fun onError(e: Throwable) { - cont.resumeWithException(e) + override fun onError(e: Throwable) { + cont.resumeWithException(e) + } } - }) + ) } suspend fun Single.await(): T = suspendCancellableCoroutine { cont -> cont.unsubscribeOnCancellation( - subscribe(object : SingleSubscriber() { - override fun onSuccess(t: T) { - cont.resume(t) - } + subscribe( + object : SingleSubscriber() { + override fun onSuccess(t: T) { + cont.resume(t) + } - override fun onError(error: Throwable) { - cont.resumeWithException(error) + override fun onError(error: Throwable) { + cont.resumeWithException(error) + } } - }) + ) ) } @@ -157,35 +161,37 @@ suspend fun Observable.awaitSingle(): T = single().awaitOne() @OptIn(InternalCoroutinesApi::class, ExperimentalCoroutinesApi::class) private suspend fun Observable.awaitOne(): T = suspendCancellableCoroutine { cont -> cont.unsubscribeOnCancellation( - subscribe(object : Subscriber() { - override fun onStart() { - request(1) - } + subscribe( + object : Subscriber() { + override fun onStart() { + request(1) + } - override fun onNext(t: T) { - cont.resume(t) - } + override fun onNext(t: T) { + cont.resume(t) + } - override fun onCompleted() { - if (cont.isActive) cont.resumeWithException( - IllegalStateException( - "Should have invoked onNext" + override fun onCompleted() { + if (cont.isActive) cont.resumeWithException( + IllegalStateException( + "Should have invoked onNext" + ) ) - ) - } + } - override fun onError(e: Throwable) { - /* + override fun onError(e: Throwable) { + /* * Rx1 observable throws NoSuchElementException if cancellation happened before * element emission. To mitigate this we try to atomically resume continuation with exception: * if resume failed, then we know that continuation successfully cancelled itself */ - val token = cont.tryResumeWithException(e) - if (token != null) { - cont.completeResume(token) + val token = cont.tryResumeWithException(e) + if (token != null) { + cont.completeResume(token) + } } } - }) + ) ) } diff --git a/build.gradle.kts b/build.gradle.kts index 6eab8498c..c61c74454 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -2,7 +2,7 @@ plugins { id("com.android.application") version BuildPluginsVersion.AGP apply false id("com.android.library") version BuildPluginsVersion.AGP apply false kotlin("android") version BuildPluginsVersion.KOTLIN apply false - id("org.jlleitschuh.gradle.ktlint") version BuildPluginsVersion.KTLINT + id("org.jmailen.kotlinter") version BuildPluginsVersion.KOLINTER id("com.github.ben-manes.versions") version BuildPluginsVersion.VERSIONS_PLUGIN } @@ -18,22 +18,10 @@ allprojects { } subprojects { - apply { - plugin("org.jlleitschuh.gradle.ktlint") - } + apply(plugin = "org.jmailen.kotlinter") - ktlint { - debug.set(false) - version.set(Versions.KTLINT) - verbose.set(true) - android.set(false) - outputToConsole.set(true) - ignoreFailures.set(false) - enableExperimentalRules.set(true) - filter { - exclude("**/generated/**") - include("**/kotlin/**") - } + kotlinter { + experimentalRules = true } } diff --git a/buildSrc/src/main/kotlin/Dependencies.kt b/buildSrc/src/main/kotlin/Dependencies.kt index b2597d892..0cbb16733 100644 --- a/buildSrc/src/main/kotlin/Dependencies.kt +++ b/buildSrc/src/main/kotlin/Dependencies.kt @@ -1,10 +1,6 @@ -object Versions { - const val KTLINT = "0.36.0" -} - object BuildPluginsVersion { const val AGP = "4.0.1" const val KOTLIN = "1.4.10" - const val KTLINT = "9.2.1" + const val KOLINTER = "3.0.2" const val VERSIONS_PLUGIN = "0.28.0" }