diff --git a/.editorconfig b/.editorconfig index 05cdb8408c..dcc9c2d990 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,5 +1,19 @@ -[*.{kt,kts}] -indent_size = 4 +[*] +indent_style = space +indent_size = 2 + +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true insert_final_newline = true + +[*.{java,kt,kts,scala,rs,xml,kt.spec,kts.spec}] +indent_size = 4 + +[*.{kt,kts}] +ij_kotlin_imports_layout = * ij_kotlin_allow_trailing_comma = true ij_kotlin_allow_trailing_comma_on_call_site = true + +[*.md] +trim_trailing_whitespace = false diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 3e80a41541..07a15db5d8 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -139,6 +139,7 @@ android { kotlinOptions { jvmTarget = JavaVersion.VERSION_1_8.toString() } + namespace = "eu.kanade.tachiyomi" } dependencies { @@ -206,7 +207,6 @@ dependencies { implementation(libs.bundles.flexibleadapter) - implementation("com.nightlynexus.viewstatepageradapter:viewstatepageradapter:1.1.0") implementation("com.github.chrisbanes:PhotoView:2.3.0") implementation("com.github.CarlosEsco:ViewTooltip:f79a8955ef") implementation("com.getkeepsafe.taptargetview:taptargetview:1.13.3") @@ -235,8 +235,6 @@ dependencies { testImplementation(libs.bundles.tests) - //implementation("com.github.PhilJay:MPAndroidChart:v3.1.0") - } tasks { @@ -272,7 +270,7 @@ tasks { } preBuild { -// dependsOn(formatKotlin) + dependsOn(formatKotlin) } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c098c6e7f9..89241759d8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,7 +1,6 @@ + xmlns:tools="http://schemas.android.com/tools"> diff --git a/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt b/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt index 778109b00d..1419587f02 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt @@ -132,7 +132,6 @@ object Migrations { LibraryUpdateJob.setupTask(context) } - return true } return false 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 e4a583521a..6d5a563308 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 @@ -17,7 +17,6 @@ import com.hippo.unifile.UniFile import eu.kanade.tachiyomi.data.notification.Notifications import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.util.system.notificationManager - import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import java.util.concurrent.TimeUnit diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupFileValidator.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupFileValidator.kt index 8020b2b066..f046751d29 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupFileValidator.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupFileValidator.kt @@ -50,7 +50,6 @@ class BackupFileValidator( .map { context.getString(it.nameRes()) } .sorted() - return Results(missingTrackers, !hasDexEntries) } 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 cf906478db..be4a9333f0 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt @@ -185,7 +185,6 @@ class BackupManager(val context: Context) { databaseHelper.getChapter(history.chapter_id).executeAsBlocking()?.url?.let { BackupHistory(it, history.last_read, history.time_read) } - } if (history.isNotEmpty()) { mangaObject.history = history @@ -203,7 +202,7 @@ class BackupManager(val context: Context) { manga.favorite = dbManga.favorite || manga.favorite databaseHelper.insertManga(manga).executeAsBlocking() } - + /** * Restore the categories from Json * diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupRestorer.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupRestorer.kt index 6801abb12c..dc3b9969b9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupRestorer.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupRestorer.kt @@ -74,7 +74,6 @@ class BackupRestorer(val context: Context, val job: Job?) { restoreCategories(backup.backupCategories) } - dexManga.groupBy { MdUtil.getMangaUUID(it.url) }.forEach { (_, mangaList) -> restoreManga(mangaList.first().title, mangaList, backup.backupCategories) } @@ -138,7 +137,7 @@ class BackupRestorer(val context: Context, val job: Job?) { tracking = tempTracks, ) } - //always make it EN source + // always make it EN source backupManga.source = SourceManager.getId(MdLang.ENGLISH.lang) val manga = backupManga.getMangaImpl() @@ -150,7 +149,6 @@ class BackupRestorer(val context: Context, val job: Job?) { val dbManga = backupManager.getMangaFromDatabase(manga) val dbMangaExists = dbManga != null - if (dbMangaExists) { backupManager.restoreMangaNoFetch(manga, dbManga!!) } else { diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt index 00d411355b..0f822bfaee 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt @@ -46,7 +46,7 @@ data class BackupManga( @ProtoNumber(902) var mergedMangaImageUrl: String? = null, @ProtoNumber(903) var alternativeArtwork: String? = null, - ) { +) { fun getMangaImpl(): MangaImpl { return MangaImpl().apply { url = this@BackupManga.url.replace( diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupTracking.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupTracking.kt index 75d2f33e7d..db44691db7 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupTracking.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupTracking.kt @@ -12,7 +12,9 @@ data class BackupTracking( @ProtoNumber(1) var syncId: Int, // LibraryId is not null in 1.x @ProtoNumber(2) var libraryId: Long, - @Deprecated("Use mediaId instead", level = DeprecationLevel.WARNING) @ProtoNumber(3) var mediaIdInt: Int = 0, + @Deprecated("Use mediaId instead", level = DeprecationLevel.WARNING) + @ProtoNumber(3) + var mediaIdInt: Int = 0, // trackingUrl is called mediaUrl in 1.x @ProtoNumber(4) var trackingUrl: String = "", @ProtoNumber(5) var title: String = "", diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/mappers/ArtworkTypeMapping.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/mappers/ArtworkTypeMapping.kt index 2a1a88b09d..0cc824d4e5 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/mappers/ArtworkTypeMapping.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/mappers/ArtworkTypeMapping.kt @@ -50,7 +50,7 @@ class ArtWorkGetResolver : DefaultGetResolver() { locale = cursor.getString(cursor.getColumnIndex(ArtworkTable.COL_LOCALE)), description = cursor.getString(cursor.getColumnIndex(ArtworkTable.COL_DESCRIPTION)), - ) + ) } class ArtWorkDeleteResolver : DefaultDeleteResolver() { @@ -61,4 +61,3 @@ class ArtWorkDeleteResolver : DefaultDeleteResolver() { .whereArgs(obj.id) .build() } - diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/mappers/MangaTypeMapping.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/mappers/MangaTypeMapping.kt index 85efec54a0..fbc3171734 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/mappers/MangaTypeMapping.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/mappers/MangaTypeMapping.kt @@ -148,7 +148,6 @@ interface BaseMangaGetResolver { user_cover = cursor.getString(cursor.getColumnIndex(COL_USER_COVER)) user_title = cursor.getString(cursor.getColumnIndex(COL_USER_TITLE)) filtered_language = cursor.getString(cursor.getColumnIndex(COL_LANGUAGE_FILTER_FLAG)) - } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Chapter.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Chapter.kt index 3076c666e0..1098b258f3 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Chapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Chapter.kt @@ -70,4 +70,3 @@ fun Chapter.fullUrl(): String { fun Chapter.uuid(): String { return MdUtil.getChapterUUID(this.url) } - diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/MangaImpl.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/MangaImpl.kt index 02241d1df9..f3d4c6bd88 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/MangaImpl.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/MangaImpl.kt @@ -68,7 +68,7 @@ open class MangaImpl : Manga { override var filtered_scanlators: String? = null override var filtered_language: String? = null - + override var missing_chapters: String? = null override var rating: String? = null @@ -110,7 +110,10 @@ open class MangaImpl : Manga { } override fun hashCode(): Int { - return if (::url.isInitialized) url.hashCode() - else (id ?: 0L).hashCode() + return if (::url.isInitialized) { + url.hashCode() + } else { + (id ?: 0L).hashCode() + } } } 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 ba73b7557b..cd553ae177 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 @@ -197,7 +197,7 @@ class DownloadCache( sourceValue.key, ) val id = manga?.id ?: return@mapNotNull null - + val mangadexIds = mangaDir.value.files.map { it.takeLast(36) } .filter { it.isUUID() diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt index a2b979d27c..ed5e7ee22a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadProvider.kt @@ -237,8 +237,11 @@ class DownloadProvider(private val context: Context) { fun getJ2kChapterName(chapter: Chapter): String { return DiskUtil.buildValidFilename( - if (chapter.scanlator != null) "${chapter.scanlator}_${chapter.name}" - else chapter.name, + if (chapter.scanlator != null) { + "${chapter.scanlator}_${chapter.name}" + } else { + chapter.name + }, ) } 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 91e1f0cf62..2a082a9321 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt @@ -411,7 +411,8 @@ class Downloader( chapterCache.getImageFile( page.imageUrl!!, ), - tmpDir, filename, + tmpDir, + filename, ) else -> downloadImage(page, download.source, tmpDir, filename) } @@ -509,7 +510,7 @@ class Downloader( private fun getImageExtension(response: Response, file: UniFile): String { // Read content type if available. val mime = response.body?.contentType()?.let { ct -> "${ct.type}/${ct.subtype}" } - // Else guess from the uri. + // Else guess from the uri. ?: context.contentResolver.getType(file.uri) // Else read magic numbers. ?: ImageUtil.findImageType { file.openInputStream() }?.mime diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/model/Download.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/model/Download.kt index 54c5c58df6..ec60ec60a2 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/model/Download.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/model/Download.kt @@ -65,7 +65,8 @@ class Download(val source: HttpSource, val manga: Manga, val chapter: Chapter) { QUEUE, DOWNLOADING, DOWNLOADED, - ERROR + ERROR, + ; companion object { diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/image/coil/AlternativeMangaCoverFetcher.kt b/app/src/main/java/eu/kanade/tachiyomi/data/image/coil/AlternativeMangaCoverFetcher.kt index e257d86211..960b449cba 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/image/coil/AlternativeMangaCoverFetcher.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/image/coil/AlternativeMangaCoverFetcher.kt @@ -250,7 +250,7 @@ class AlternativeMangaCoverFetcher( else -> null } } - + private enum class Type { File, URL; } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/image/coil/LibraryMangaImageTarget.kt b/app/src/main/java/eu/kanade/tachiyomi/data/image/coil/LibraryMangaImageTarget.kt index 30ab70cb25..b5dd3f0e85 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/image/coil/LibraryMangaImageTarget.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/image/coil/LibraryMangaImageTarget.kt @@ -55,4 +55,3 @@ inline fun ImageView.loadManga( .build() return imageLoader.enqueue(request) } - diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/image/coil/MangaCoverKeyer.kt b/app/src/main/java/eu/kanade/tachiyomi/data/image/coil/MangaCoverKeyer.kt index 81739081fc..7849277887 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/image/coil/MangaCoverKeyer.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/image/coil/MangaCoverKeyer.kt @@ -18,4 +18,3 @@ class ArtworkKeyer : Keyer { } } } - 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 ea1a4b76be..4fbaf69637 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 @@ -170,7 +170,9 @@ class LibraryUpdateNotifier(private val context: Context) { (chapterNames.size - (MAX_CHAPTERS - 1)), (chapterNames.size - (MAX_CHAPTERS - 1)), ) - } else chapterNames.joinToString(", ") + } else { + chapterNames.joinToString(", ") + } setContentText(chaptersNames) setStyle(NotificationCompat.BigTextStyle().bigText(chaptersNames)) priority = NotificationCompat.PRIORITY_HIGH diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateRanker.kt b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateRanker.kt index 32e5aad60f..9322cbe8da 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateRanker.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateRanker.kt @@ -24,8 +24,7 @@ object LibraryUpdateRanker { val time = System.currentTimeMillis() return Comparator { mangaFirst: Manga, - mangaSecond: Manga, - -> + mangaSecond: Manga, -> compareValues(abs(mangaSecond.next_update - time), abs(mangaFirst.next_update - time)) }.reversed() } @@ -42,8 +41,7 @@ object LibraryUpdateRanker { fun latestFirstRanking(): Comparator { return Comparator { mangaFirst: Manga, - mangaSecond: Manga, - -> + mangaSecond: Manga, -> compareValues(mangaSecond.last_update, mangaFirst.last_update) } } @@ -57,8 +55,7 @@ object LibraryUpdateRanker { fun lexicographicRanking(): Comparator { return Comparator { mangaFirst: Manga, - mangaSecond: Manga, - -> + mangaSecond: Manga, -> compareValues(mangaFirst.title, mangaSecond.title) } } 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 96431942b7..0629a6c58c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt @@ -382,10 +382,8 @@ class LibraryUpdateService( manga: LibraryManga, progress: Int, shouldDownload: Boolean, - ): - Boolean { + ): Boolean { return runCatching { - var hasDownloads = false if (job?.isCancelled == true) { return@runCatching false @@ -416,7 +414,7 @@ class LibraryUpdateService( } false -> emptyList() } - + val fetchedChapters = holder.sChapters + merged // delete cover cache image if the thumbnail from network is not empty @@ -430,7 +428,7 @@ class LibraryUpdateService( withIOContext { // dont refresh covers while using cached source if (manga.thumbnail_url != null && preferences.refreshCoversToo() - .get() + .get() ) { coverCache.deleteFromCache(thumbnailUrl, manga.favorite) // load new covers in background @@ -462,7 +460,6 @@ class LibraryUpdateService( } } - if (fetchedChapters.isNotEmpty()) { val newChapters = syncChaptersWithSource(db, fetchedChapters, manga, errorFromMerged) @@ -497,9 +494,11 @@ class LibraryUpdateService( downloadManager.deleteChapters(removedChapters, manga, source) } } - if (newChapters.first.size + newChapters.second.size > 0) listener?.onUpdateManga( - manga, - ) + if (newChapters.first.size + newChapters.second.size > 0) { + listener?.onUpdateManga( + manga, + ) + } if (newChapters.first.size + newChapters.second.size > 0) { listener?.onUpdateManga(manga) @@ -530,7 +529,6 @@ class LibraryUpdateService( launch { updateMissingChapterCount(manga) } - } hasDownloads @@ -675,10 +673,12 @@ class LibraryUpdateService( putExtra(KEY_TARGET, target) category?.id?.let { id -> putExtra(KEY_CATEGORY, id) - if (mangaToUse != null) putExtra( - KEY_MANGAS, - mangaToUse.mapNotNull { it.id }.toLongArray(), - ) + if (mangaToUse != null) { + putExtra( + KEY_MANGAS, + mangaToUse.mapNotNull { it.id }.toLongArray(), + ) + } } } if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { @@ -688,9 +688,14 @@ class LibraryUpdateService( } true } else { - if (target == Target.CHAPTERS) category?.id?.let { - if (mangaToUse != null) instance?.addMangaToQueue(it, mangaToUse) - else instance?.addCategory(it) + if (target == Target.CHAPTERS) { + category?.id?.let { + if (mangaToUse != null) { + instance?.addMangaToQueue(it, mangaToUse) + } else { + instance?.addCategory(it) + } + } } false } 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 a6a612bcb5..1b59ebc05c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt @@ -99,16 +99,18 @@ class NotificationReceiver : BroadcastReceiver() { } ACTION_MARK_AS_READ -> { val notificationId = intent.getIntExtra(EXTRA_NOTIFICATION_ID, -1) - if (notificationId > -1) dismissNotification( - context, - notificationId, - intent.getIntExtra(EXTRA_GROUP_ID, 0), - ) + if (notificationId > -1) { + dismissNotification( + context, + notificationId, + intent.getIntExtra(EXTRA_GROUP_ID, 0), + ) + } val urls = intent.getStringArrayExtra(EXTRA_CHAPTER_URL) ?: return val mangaId = intent.getLongExtra(EXTRA_MANGA_ID, -1) markAsRead(urls, mangaId) } - //download manga chapter + // download manga chapter ACTION_DOWNLOAD_CHAPTER -> { val notificationId = intent.getIntExtra(EXTRA_NOTIFICATION_ID, -1) if (notificationId > -1) { @@ -558,8 +560,7 @@ class NotificationReceiver : BroadcastReceiver() { internal fun openChapterPendingActivity( context: Context, manga: Manga, - chapter: - Chapter, + chapter: Chapter, ): PendingIntent { val newIntent = ReaderActivity.newIntent(context, manga, chapter) return PendingIntent.getActivity( @@ -581,8 +582,7 @@ class NotificationReceiver : BroadcastReceiver() { context: Context, notes: String, downloadLink: String, - ): - PendingIntent { + ): PendingIntent { val newIntent = Intent( context, @@ -605,8 +605,7 @@ class NotificationReceiver : BroadcastReceiver() { * @param context context of application * @param manga manga of chapter */ - internal fun openChapterPendingActivity(context: Context, manga: Manga, groupId: Int): - PendingIntent { + internal fun openChapterPendingActivity(context: Context, manga: Manga, groupId: Int): PendingIntent { val newIntent = Intent(context, MainActivity::class.java).setAction(MainActivity.SHORTCUT_MANGA) .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP) @@ -680,11 +679,9 @@ class NotificationReceiver : BroadcastReceiver() { internal fun markAsReadPendingBroadcast( context: Context, manga: Manga, - chapters: - Array, + chapters: Array, groupId: Int, - ): - PendingIntent { + ): PendingIntent { val newIntent = Intent(context, NotificationReceiver::class.java).apply { action = ACTION_MARK_AS_READ putExtra(EXTRA_CHAPTER_URL, chapters.map { it.url }.toTypedArray()) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/TrackManager.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/TrackManager.kt index ba50b50f0b..3c71a9c661 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/TrackManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/TrackManager.kt @@ -46,7 +46,7 @@ class TrackManager(context: Context) { MYANIMELIST -> manga.my_anime_list_id ANILIST -> manga.anilist_id KITSU -> manga.kitsu_id - //MANGA_UPDATES -> manga.manga_updates_id + // MANGA_UPDATES -> manga.manga_updates_id else -> null } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/KitsuApi.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/KitsuApi.kt index fe4f64b091..84cc3787e4 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/KitsuApi.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/KitsuApi.kt @@ -154,7 +154,6 @@ class KitsuApi(private val client: OkHttpClient, interceptor: KitsuInterceptor) manga: Manga, wasPreviouslyTracked: Boolean, ): List { - if (!wasPreviouslyTracked && !manga.kitsu_id.isNullOrBlank()) { client.newCall(eu.kanade.tachiyomi.network.GET(apiMangaUrl(manga.kitsu_id!!))) .await().parseAs().let { diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/mangaupdates/MangaUpdatesApi.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/mangaupdates/MangaUpdatesApi.kt index 63df187320..f323db6cdc 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/mangaupdates/MangaUpdatesApi.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/mangaupdates/MangaUpdatesApi.kt @@ -43,7 +43,7 @@ class MangaUpdatesApi( .addInterceptor(interceptor) .build() } - + suspend fun getSeriesListItem(track: Track): Pair { val listItem = authClient.newCall( 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 e264c2dc98..8cb5dd5a2f 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 @@ -73,8 +73,8 @@ class MyAnimeListApi(private val client: OkHttpClient, interceptor: MyAnimeListI listOf(getMangaDetails(manga.my_anime_list_id!!.toLong())) } else { val url = "$baseApiUrl/manga".toUri().buildUpon() - // MAL API throws a 400 when the query is over 64 characters... - .appendQueryParameter("q", query.take(64)) + // MAL API throws a 400 when the query is over 64 characters... + .appendQueryParameter("q", query.take(64)) .appendQueryParameter("nsfw", "true") .build() authClient.newCall(GET(url.toString())) @@ -88,7 +88,7 @@ class MyAnimeListApi(private val client: OkHttpClient, interceptor: MyAnimeListI async { getMangaDetails(id) } } .awaitAll() - .filter { trackSearch -> !trackSearch.publishing_type.contains("novel") } + .filter { trackSearch -> !trackSearch.publishing_type.contains("novel") } } } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt b/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt index baa83dae58..1ceb53d579 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt @@ -26,7 +26,7 @@ class AppUpdateChecker { ): AppUpdateResult { // Limit checks to once a day at most if (!isUserPrompt && Date().time < preferences.lastAppCheck() - .get() + TimeUnit.DAYS.toMillis(1) + .get() + TimeUnit.DAYS.toMillis(1) ) { return AppUpdateResult.NoNewUpdate } @@ -67,4 +67,3 @@ class AppUpdateChecker { const val GITHUB_REPO: String = "CarlosEsco/Neko" const val LATEST_RELEASE_URL = "https://api.github.com/repos/$GITHUB_REPO/releases/latest" const val RELEASE_URL = "https://github.com/$GITHUB_REPO/releases/tag/${BuildConfig.VERSION_NAME}" - diff --git a/app/src/main/java/eu/kanade/tachiyomi/jobs/follows/FollowsSyncService.kt b/app/src/main/java/eu/kanade/tachiyomi/jobs/follows/FollowsSyncService.kt index 0cdf4c8ad0..799c5c49a1 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/jobs/follows/FollowsSyncService.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/jobs/follows/FollowsSyncService.kt @@ -46,7 +46,6 @@ class FollowsSyncService { val syncFollowStatusInts = preferences.mangadexSyncToLibraryIndexes().get().map { it.toInt() } - sourceManager.getMangadex().fetchAllFollows().onFailure { errorNotification((it as? ResultError.Generic)?.errorString ?: "Error fetching follows") }.onSuccess { unfilteredManga -> diff --git a/app/src/main/java/eu/kanade/tachiyomi/jobs/follows/StatusSyncJob.kt b/app/src/main/java/eu/kanade/tachiyomi/jobs/follows/StatusSyncJob.kt index 1b4af812da..ac84e4afa9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/jobs/follows/StatusSyncJob.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/jobs/follows/StatusSyncJob.kt @@ -88,7 +88,8 @@ class StatusSyncJob( else -> { followsSyncService.toMangaDex( ::updateNotificationProgress, - ::completeNotificationToDex, ids, + ::completeNotificationToDex, + ids, ) } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/network/services/MangaDexService.kt b/app/src/main/java/eu/kanade/tachiyomi/network/services/MangaDexService.kt index 86535666d5..47dd2663c5 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/network/services/MangaDexService.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/network/services/MangaDexService.kt @@ -56,7 +56,7 @@ interface MangaDexService { @Query(value = "translatedLanguage[]") translatedLanguages: List, @Query("offset") offset: Int, ): ApiResponse - + @Headers("Cache-Control: no-cache") @GET("${MdApi.chapter}?order[readableAt]=desc&includeFutureUpdates=0") suspend fun latestChapters( diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/Source.kt b/app/src/main/java/eu/kanade/tachiyomi/source/Source.kt index 787914777b..2fe0259337 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/Source.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/Source.kt @@ -27,7 +27,7 @@ interface Source { * Returns the list of filters for the source. */ fun getFilterList(): FilterList - + /** * Returns an observable with the list of pages a chapter has. * diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/MangaDex.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/MangaDex.kt index a8e41989b7..17bb027e32 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/MangaDex.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/MangaDex.kt @@ -124,10 +124,10 @@ open class MangaDex : HttpSource() { } override fun isLogged(): Boolean { - return !preferences.sourceUsername(this).isNullOrBlank() - && !preferences.sourcePassword(this).isNullOrBlank() - && !preferences.sessionToken().isNullOrBlank() - && !preferences.refreshToken().isNullOrBlank() + return !preferences.sourceUsername(this).isNullOrBlank() && + !preferences.sourcePassword(this).isNullOrBlank() && + !preferences.sessionToken().isNullOrBlank() && + !preferences.refreshToken().isNullOrBlank() } override suspend fun login( diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/MangaDexLoginHelper.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/MangaDexLoginHelper.kt index 73fe3ed76c..084f2acb73 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/MangaDexLoginHelper.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/MangaDexLoginHelper.kt @@ -97,7 +97,6 @@ class MangaDexLoginHelper { this.log(type) this.throws(type) - }.getOrThrow() preferences.setTokens( diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/handlers/ApiMangaParser.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/handlers/ApiMangaParser.kt index 993750d66f..60b92ea710 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/handlers/ApiMangaParser.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/handlers/ApiMangaParser.kt @@ -42,7 +42,6 @@ class ApiMangaParser { manga.rating = stats.first manga.users = stats.second - manga.description = mangaAttributesDto.description.asMdMap()["en"] val authors = mangaDto.relationships.filter { relationshipDto -> @@ -236,7 +235,7 @@ class ApiMangaParser { throw e } } - + private fun parseStatus(status: String) = when (status) { "ongoing" -> SManga.ONGOING "completed" -> SManga.PUBLICATION_COMPLETE diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/handlers/FilterHandler.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/handlers/FilterHandler.kt index 82a03b2c34..853924ddbe 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/handlers/FilterHandler.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/handlers/FilterHandler.kt @@ -119,7 +119,7 @@ class FilterHandler { val statusList = mutableListOf() // status[] val includeTagList = mutableListOf() // includedTags[] val excludeTagList = mutableListOf() // excludedTags[] - val hasAvailableChapterLangs = mutableListOf()// availableTranslatedLanguage[] + val hasAvailableChapterLangs = mutableListOf() // availableTranslatedLanguage[] // add filters filters.forEach { filter -> diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/handlers/FollowsHandler.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/handlers/FollowsHandler.kt index acbc799bd3..7b1d51886c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/handlers/FollowsHandler.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/handlers/FollowsHandler.kt @@ -184,7 +184,6 @@ class FollowsHandler { readingStatusResponse.onFailure { this.log("trying to fetch reading status for $mangaUUID") throw Exception("error trying to get tracking info") - } val followStatus = FollowStatus.fromDex(readingStatusResponse.getOrThrow().status) @@ -196,7 +195,6 @@ class FollowsHandler { score = rating?.rating?.toFloat() ?: 0f } return@withContext track - } } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/handlers/LatestChapterHandler.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/handlers/LatestChapterHandler.kt index 16d9b90128..73cb9ad200 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/handlers/LatestChapterHandler.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/handlers/LatestChapterHandler.kt @@ -69,7 +69,6 @@ class LatestChapterHandler { "contentRating[]" to allContentRating, ) - service.search(ProxyRetrofitQueryMap(queryParameters)) .getOrResultError("trying to search manga from latest chapters").andThen { mangaListDto -> val hasMoreResults = chapterListDto.limit + chapterListDto.offset < chapterListDto.total @@ -84,7 +83,6 @@ class LatestChapterHandler { Ok(MangaListPage(sourceManga = mangaList.toImmutableList(), hasNextPage = hasMoreResults)) } - }.getOrElse { XLog.e("Error parsing latest chapters", it) Err(ResultError.Generic(errorString = "Error parsing latest chapters response")) diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/handlers/MangaHandler.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/handlers/MangaHandler.kt index 9f7cec0edc..b4da68d4cb 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/handlers/MangaHandler.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/handlers/MangaHandler.kt @@ -83,7 +83,6 @@ class MangaHandler { }.andThen { sManga -> Ok(sManga to artworks.await()) } - } } @@ -120,7 +119,6 @@ class MangaHandler { } private fun CoroutineScope.statsAsync(mangaUUID: String) = async { - service.mangaStatistics(mangaUUID) .getOrResultError("trying to get rating for $mangaUUID") .mapBoth( @@ -146,7 +144,6 @@ class MangaHandler { return withContext(Dispatchers.IO) { val langs = MdUtil.getLangsToShow(preferencesHelper) - fetchOffset(mangaUUID, langs, 0).andThen { chapterListDto -> Ok( when (chapterListDto.total > chapterListDto.limit) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/handlers/StatusHandler.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/handlers/StatusHandler.kt index 593efc7175..8cf0957c47 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/handlers/StatusHandler.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/handlers/StatusHandler.kt @@ -26,7 +26,6 @@ class StatusHandler { suspend fun fetchReadingStatusForAllManga(): Map { return withContext(Dispatchers.IO) { - return@withContext authService.readingStatusAllManga() .getOrResultError("getting reading status") .mapBoth( diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/merged/mangalife/MangaLife.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/merged/mangalife/MangaLife.kt index b77c36eca8..a8f0389c59 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/merged/mangalife/MangaLife.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/merged/mangalife/MangaLife.kt @@ -45,7 +45,7 @@ class MangaLife : ReducedHttpSource() { thumbnailUrl = document.select(".SearchResult > .SearchResultCover img").first()!!.attr("ng-src") } - //val searchResults = + // val searchResults = val results = FuzzySearch.extractSorted(query, directory.keys, 88).mapNotNull { directory[it.string] } @@ -67,7 +67,6 @@ class MangaLife : ReducedHttpSource() { suspend fun fetchChapters(mergeMangaUrl: String): Result, ResultError> { return withContext(Dispatchers.IO) { com.github.michaelbull.result.runCatching { - val response = client.newCall(GET("$baseUrl$mergeMangaUrl", headers)).await() val vmChapters = response.asJsoup().select("script:containsData(MainFunction)").first()!!.data() @@ -82,7 +81,7 @@ class MangaLife : ReducedHttpSource() { false -> chp.chapterName } - //get the seasons + // get the seasons val season1 = name.substringAfter("Volume ", "") val season2 = name.substringBefore(" - Chapter", "").substringAfter("S") if (season1.isNotEmpty() && season2.isEmpty()) { @@ -91,7 +90,7 @@ class MangaLife : ReducedHttpSource() { vol = season2 } - //set the chapter text + // set the chapter text if (chp.type != "Volume") { val splitName = name.substringAfter(" - Chapter").split(" ") for (split in splitName) { @@ -113,7 +112,6 @@ class MangaLife : ReducedHttpSource() { } }.getOrElse { 0L } - scanlator = this@MangaLife.name } }.asReversed() diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/merged/mangalife/MangaLifeDto.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/merged/mangalife/MangaLifeDto.kt index 11a4cd2a63..cf3693ad41 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/merged/mangalife/MangaLifeDto.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/merged/mangalife/MangaLifeDto.kt @@ -19,4 +19,3 @@ data class MangaLifeChapterDto( @SerialName("Directory") val directory: String? = null, @SerialName("Page") val totalPages: Int? = null, ) - diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/models/dto/MangaPlusDto.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/models/dto/MangaPlusDto.kt index 39f9da71ed..891ba1a026 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/models/dto/MangaPlusDto.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/models/dto/MangaPlusDto.kt @@ -84,7 +84,7 @@ enum class Language { INDONESIAN, PORTUGUESE_BR, RUSSIAN, - THAI + THAI, } @Serializable diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/utils/FollowStatus.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/utils/FollowStatus.kt index c74028f228..427e53a24b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/utils/FollowStatus.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/utils/FollowStatus.kt @@ -11,7 +11,8 @@ enum class FollowStatus(val int: Int, @StringRes val stringRes: Int) { ON_HOLD(3, R.string.follows_on_hold), PLAN_TO_READ(4, R.string.follows_plan_to_read), DROPPED(5, R.string.follows_dropped), - RE_READING(6, R.string.follows_re_reading); + RE_READING(6, R.string.follows_re_reading), + ; fun toDex(): String = this.name.lowercase(Locale.US) diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/utils/MangaDexExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/utils/MangaDexExtensions.kt index 925cda156f..925a6359c7 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/utils/MangaDexExtensions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/utils/MangaDexExtensions.kt @@ -24,7 +24,6 @@ fun MangaDataDto.toBasicManga(coverQuality: Int = 0, useNoCoverUrl: Boolean = tr } fun MangaDataDto.toSourceManga(coverQuality: Int = 0, useNoCoverUrl: Boolean = true): SourceManga { - val thumbnail = this@toSourceManga.relationships .firstOrNull { relationshipDto -> relationshipDto.type == MdConstants.Types.coverArt } ?.attributes?.fileName @@ -43,4 +42,3 @@ fun MangaDataDto.toSourceManga(coverQuality: Int = 0, useNoCoverUrl: Boolean = t currentThumbnail = thumbnail, ) } - diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/utils/MdLang.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/utils/MdLang.kt index 6553a5e31d..10e0cea27e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/utils/MdLang.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/utils/MdLang.kt @@ -46,7 +46,8 @@ enum class MdLang(val lang: String, val prettyPrint: String, val iconResId: Int) TURKISH("tr", "Turkish", R.drawable.ic_flag_tr), UKRAINIAN("uk", "Ukrainian", R.drawable.ic_flag_ua), VIETNAMESE("vi", "Vietnamese", R.drawable.ic_flag_vn), - OTHER("NULL", "Other", R.drawable.ic_flag_other); + OTHER("NULL", "Other", R.drawable.ic_flag_other), + ; companion object { fun fromIsoCode(isoCode: String): MdLang? = diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/base/ExpandedAppBarLayout.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/base/ExpandedAppBarLayout.kt index 4ce4a174e5..0e2f288931 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/base/ExpandedAppBarLayout.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/base/ExpandedAppBarLayout.kt @@ -309,10 +309,14 @@ class ExpandedAppBarLayout @JvmOverloads constructor(context: Context, attrs: At -realHeight.toFloat() + top + minTabletHeight, max( smallHeight, - if (offset > realHeight - shortH - tabHeight) smallHeight else min( - -offset.toFloat(), - 0f, - ), + if (offset > realHeight - shortH - tabHeight) { + smallHeight + } else { + min( + -offset.toFloat(), + 0f, + ) + }, ) + top.toFloat(), ) } @@ -345,7 +349,9 @@ class ExpandedAppBarLayout @JvmOverloads constructor(context: Context, attrs: At toolbarTextView.setTextColorAlpha( ( MathUtils.clamp( - (1 - ((if (alpha.isNaN()) 1f else alpha) + 0.95f)) * 2, 0f, 1f, + (1 - ((if (alpha.isNaN()) 1f else alpha) + 0.95f)) * 2, + 0f, + 1f, ) * 255 ).roundToInt(), ) @@ -358,8 +364,11 @@ class ExpandedAppBarLayout @JvmOverloads constructor(context: Context, attrs: At val mainActivity = mainActivity ?: return val useSearchToolbar = mainToolbar.alpha <= 0.025f val idle = RecyclerView.SCROLL_STATE_IDLE - if (if (useSearchToolbar) -y >= height || (recyclerView is RecyclerView && recyclerView.scrollState <= idle) || context.isTablet() - else mainActivity.currentToolbar == searchToolbar + if (if (useSearchToolbar) { + -y >= height || (recyclerView is RecyclerView && recyclerView.scrollState <= idle) || context.isTablet() + } else { + mainActivity.currentToolbar == searchToolbar + } ) { useSearchToolbarForMenu(useSearchToolbar) } @@ -376,8 +385,11 @@ class ExpandedAppBarLayout @JvmOverloads constructor(context: Context, attrs: At yAnimator?.cancel() val halfWay = compactAppBarHeight / 2 val shortAnimationDuration = resources?.getInteger( - if (toolbarMode != ToolbarState.EXPANDED) android.R.integer.config_shortAnimTime - else android.R.integer.config_longAnimTime, + if (toolbarMode != ToolbarState.EXPANDED) { + android.R.integer.config_shortAnimTime + } else { + android.R.integer.config_longAnimTime + }, ) ?: 0 val realHeight = preLayoutHeightWhileSearching + paddingTop val closerToTop = abs(y) > realHeight - halfWay diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/base/MaterialFastScroll.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/base/MaterialFastScroll.kt index 9c77195046..71b56ec0f2 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/base/MaterialFastScroll.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/base/MaterialFastScroll.kt @@ -58,7 +58,9 @@ open class MaterialFastScroll @JvmOverloads constructor(context: Context, attrs: } else { event.x > handle.width + handle.paddingStart } - ) return false + ) { + return false + } val y = event.y startY = event.y if (canScroll) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/base/MaterialMenuSheet.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/base/MaterialMenuSheet.kt index 35770fa5c9..9033c4922b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/base/MaterialMenuSheet.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/base/MaterialMenuSheet.kt @@ -114,14 +114,15 @@ class MaterialMenuSheet( } elevate(binding.menuSheetRecycler.canScrollVertically(-1)) if (binding.titleLayout.isVisible) { - binding.menuSheetRecycler.addOnScrollListener(object : RecyclerView.OnScrollListener() { - override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { - val notAtTop = binding.menuSheetRecycler.canScrollVertically(-1) - if (notAtTop != isElevated) { - elevate(notAtTop) + binding.menuSheetRecycler.addOnScrollListener( + object : RecyclerView.OnScrollListener() { + override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { + val notAtTop = binding.menuSheetRecycler.canScrollVertically(-1) + if (notAtTop != isElevated) { + elevate(notAtTop) + } } - } - }, + }, ) } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/RxController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/RxController.kt index 16470044b5..92c8903b71 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/RxController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/RxController.kt @@ -31,7 +31,7 @@ abstract class RxController(bundle: Bundle? = null) : BaseCont super.onDetach(view) untilDetachSubscriptions.unsubscribe() } - + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup, savedViewState: Bundle?): View { showToolbar() return super.onCreateView(inflater, container, savedViewState) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/category/ManageCategoryDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/category/ManageCategoryDialog.kt index 778ba96377..1636b1fe2f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/category/ManageCategoryDialog.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/category/ManageCategoryDialog.kt @@ -114,10 +114,10 @@ class ManageCategoryDialog(bundle: Bundle? = null) : } if (preferences.libraryUpdateInterval().get() > 0 && updatePref( - preferences.libraryUpdateCategories(), - preferences.libraryUpdateCategoriesExclude(), - binding.includeGlobal, - ) == false + preferences.libraryUpdateCategories(), + preferences.libraryUpdateCategoriesExclude(), + binding.includeGlobal, + ) == false ) { preferences.libraryUpdateInterval().set(0) LibraryUpdateJob.setupTask(preferences.context, 0) @@ -211,10 +211,12 @@ class ManageCategoryDialog(bundle: Bundle? = null) : val updateCategories = categories.get() val excludeUpdateCategories = excludeCategories.get() box.isVisible = (updateCategories.isNotEmpty() || excludeUpdateCategories.isNotEmpty()) && shouldShow - if (shouldShow) box.state = when { - updateCategories.any { category?.id == it.toIntOrNull() } -> TriStateCheckBox.State.CHECKED - excludeUpdateCategories.any { category?.id == it.toIntOrNull() } -> TriStateCheckBox.State.IGNORE - else -> TriStateCheckBox.State.UNCHECKED + if (shouldShow) { + box.state = when { + updateCategories.any { category?.id == it.toIntOrNull() } -> TriStateCheckBox.State.CHECKED + excludeUpdateCategories.any { category?.id == it.toIntOrNull() } -> TriStateCheckBox.State.IGNORE + else -> TriStateCheckBox.State.UNCHECKED + } } } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/category/addtolibrary/SetCategoriesSheet.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/category/addtolibrary/SetCategoriesSheet.kt index a8da682ba7..8e2b8fb779 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/category/addtolibrary/SetCategoriesSheet.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/category/addtolibrary/SetCategoriesSheet.kt @@ -48,7 +48,9 @@ class SetCategoriesSheet( addingToLibrary: Boolean, onMangaAdded: () -> Unit, ) : this( - activity, listOf(manga), categories, + activity, + listOf(manga), + categories, categories.map { if (it.id in preselected) { TriStateCheckBox.State.CHECKED @@ -56,7 +58,8 @@ class SetCategoriesSheet( TriStateCheckBox.State.UNCHECKED } }.toTypedArray(), - addingToLibrary, onMangaAdded, + addingToLibrary, + onMangaAdded, ) private val fastAdapter: FastAdapter diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadBottomPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadBottomPresenter.kt index 8f4c052972..7b6e0ab28b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadBottomPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadBottomPresenter.kt @@ -37,8 +37,9 @@ class DownloadBottomPresenter : BaseCoroutinePresenter() { } val hasChanged = if (this@DownloadBottomPresenter.items.size != items.size || this@DownloadBottomPresenter.items.sumOf { it.subItemsCount } != items.sumOf { it.subItemsCount } - ) true - else { + ) { + true + } else { val oldItemsIds = this@DownloadBottomPresenter.items.map { header -> header.subItems.mapNotNull { it.download.chapter.id } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadBottomSheet.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadBottomSheet.kt index 3a0519200a..e6bb1fe2eb 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadBottomSheet.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadBottomSheet.kt @@ -122,11 +122,14 @@ class DownloadBottomSheet @JvmOverloads constructor( private fun updateDLTitle() { val extCount = presenter.downloadQueue.firstOrNull() - binding.titleText.text = if (extCount != null) resources.getString( - R.string.downloading_, - extCount.chapter.name, - ) - else "" + binding.titleText.text = if (extCount != null) { + resources.getString( + R.string.downloading_, + extCount.chapter.name, + ) + } else { + "" + } } /** diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadButton.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadButton.kt index 072fdbee6c..1d0f8965ed 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadButton.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadButton.kt @@ -99,7 +99,9 @@ class DownloadButton @JvmOverloads constructor(context: Context, attrs: Attribut binding.downloadIcon.setImageDrawable( if (state == Download.State.CHECKED) { checkDrawable - } else downloadDrawable, + } else { + downloadDrawable + }, ) when (state) { Download.State.CHECKED -> { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/follows/FollowsPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/follows/FollowsPresenter.kt index f5f433da00..636b7079fa 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/follows/FollowsPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/follows/FollowsPresenter.kt @@ -57,7 +57,6 @@ class FollowsPresenter( ) } } - } presenterScope.launch { preferences.browseAsList().asFlow().collectLatest { @@ -69,7 +68,6 @@ class FollowsPresenter( } fun getFollows() { - presenterScope.launch { _followsScreenState.update { it.copy(isLoading = true, error = null) @@ -103,7 +101,6 @@ class FollowsPresenter( updateDisplayManga(mangaId, editManga.favorite) if (editManga.favorite) { - val defaultCategory = preferences.defaultCategory() if (categoryItems.isEmpty() && defaultCategory != -1) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryBadge.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryBadge.kt index d884559efc..f4c855f761 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryBadge.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryBadge.kt @@ -37,7 +37,9 @@ class LibraryBadge @JvmOverloads constructor(context: Context, attrs: AttributeS val unreadBadgeBackground = if (showTotalChapters) { context.contextCompatColor(R.color.total_badge) - } else context.getResourceColor(R.attr.unreadBadgeColor) + } else { + context.getResourceColor(R.attr.unreadBadgeColor) + } with(binding.unreadText) { isVisible = unread > 0 || unread == -1 || showTotalChapters diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryAdapter.kt index bc852e5e29..1b746c7894 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryCategoryAdapter.kt @@ -86,8 +86,11 @@ class LibraryCategoryAdapter(val controller: LibraryController?) : */ fun indexOf(categoryOrder: Int): Int { return currentItems.indexOfFirst { - if (it is LibraryHeaderItem) it.category.order == categoryOrder - else false + if (it is LibraryHeaderItem) { + it.category.order == categoryOrder + } else { + false + } } } @@ -109,15 +112,21 @@ class LibraryCategoryAdapter(val controller: LibraryController?) : */ fun indexOf(manga: Manga): Int { return currentItems.indexOfFirst { - if (it is LibraryItem) it.manga.id == manga.id - else false + if (it is LibraryItem) { + it.manga.id == manga.id + } else { + false + } } } fun getHeaderPositions(): List { return currentItems.mapIndexedNotNull { index, it -> - if (it is LibraryHeaderItem) index - else null + if (it is LibraryHeaderItem) { + index + } else { + null + } } } @@ -128,8 +137,11 @@ class LibraryCategoryAdapter(val controller: LibraryController?) : */ fun allIndexOf(manga: Manga): List { return currentItems.mapIndexedNotNull { index, it -> - if (it is LibraryItem && it.manga.id == manga.id) index - else null + if (it is LibraryItem && it.manga.id == manga.id) { + index + } else { + null + } } } @@ -188,63 +200,73 @@ class LibraryCategoryAdapter(val controller: LibraryController?) : item.category.name } is LibraryItem -> { - val text = if (item.manga.isBlank()) return item.header?.category?.name.orEmpty() - else when (getSort(position)) { - LibrarySort.DragAndDrop -> { - if (item.header.category.isDynamic) { - val category = db.getCategoriesForManga(item.manga).executeAsBlocking().firstOrNull()?.name - category ?: context.getString(R.string.default_value) - } else { - val title = item.manga.title - if (preferences.removeArticles().get()) title.removeArticles().chop(15) - else title.take(10) + val text = if (item.manga.isBlank()) { + return item.header?.category?.name.orEmpty() + } else { + when (getSort(position)) { + LibrarySort.DragAndDrop -> { + if (item.header.category.isDynamic) { + val category = db.getCategoriesForManga(item.manga).executeAsBlocking().firstOrNull()?.name + category ?: context.getString(R.string.default_value) + } else { + val title = item.manga.title + if (preferences.removeArticles().get()) { + title.removeArticles().chop(15) + } else { + title.take(10) + } + } } - } - LibrarySort.Rating -> { - item.manga.rating ?: return "N/A" - ((item.manga.rating!!.toDouble() * 100).roundToInt() / 100.0).toString() - } - LibrarySort.DateFetched -> { - val id = item.manga.id ?: return "" - val history = db.getChapters(id).executeAsBlocking() - val last = history.maxOfOrNull { it.date_fetch } - context.timeSpanFromNow(R.string.fetched_, last ?: 0) - } - LibrarySort.LastRead -> { - val id = item.manga.id ?: return "" - val history = db.getHistoryByMangaId(id).executeAsBlocking() - val last = history.maxOfOrNull { it.last_read } - context.timeSpanFromNow(R.string.read_, last ?: 0) - } - LibrarySort.Unread -> { - val unread = item.manga.unread - if (unread > 0) context.getString(R.string._unread, unread) - else context.getString(R.string.read) - } - LibrarySort.TotalChapters -> { - val total = item.manga.totalChapters - if (total > 0) recyclerView.resources.getQuantityString( - R.plurals.chapters_plural, - total, - total, - ) - else { - "N/A" + LibrarySort.Rating -> { + item.manga.rating ?: return "N/A" + ((item.manga.rating!!.toDouble() * 100).roundToInt() / 100.0).toString() } - } - LibrarySort.LatestChapter -> { - context.timeSpanFromNow(R.string.updated_, item.manga.last_update) - } - LibrarySort.DateAdded -> { - context.timeSpanFromNow(R.string.added_, item.manga.date_added) - } - LibrarySort.Title -> { - val title = if (preferences.removeArticles().get()) { - item.manga.title.removeArticles() - } else { - item.manga.title + LibrarySort.DateFetched -> { + val id = item.manga.id ?: return "" + val history = db.getChapters(id).executeAsBlocking() + val last = history.maxOfOrNull { it.date_fetch } + context.timeSpanFromNow(R.string.fetched_, last ?: 0) + } + LibrarySort.LastRead -> { + val id = item.manga.id ?: return "" + val history = db.getHistoryByMangaId(id).executeAsBlocking() + val last = history.maxOfOrNull { it.last_read } + context.timeSpanFromNow(R.string.read_, last ?: 0) + } + LibrarySort.Unread -> { + val unread = item.manga.unread + if (unread > 0) { + context.getString(R.string._unread, unread) + } else { + context.getString(R.string.read) + } + } + LibrarySort.TotalChapters -> { + val total = item.manga.totalChapters + if (total > 0) { + recyclerView.resources.getQuantityString( + R.plurals.chapters_plural, + total, + total, + ) + } else { + "N/A" + } + } + LibrarySort.LatestChapter -> { + context.timeSpanFromNow(R.string.updated_, item.manga.last_update) + } + LibrarySort.DateAdded -> { + context.timeSpanFromNow(R.string.added_, item.manga.date_added) + } + LibrarySort.Title -> { + val title = if (preferences.removeArticles().get()) { + item.manga.title.removeArticles() + } else { + item.manga.title + } + getFirstLetter(title) } - getFirstLetter(title) } } if (!isSingleCategory) { 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 0db311fd04..212731ca9d 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 @@ -312,7 +312,9 @@ class LibraryController( binding.filterBottomSheet.filterBottomSheet.sheetBehavior?.hide() scrollDistance = 0f } - } else scrollDistance = 0f + } else { + scrollDistance = 0f + } val currentCategory = getHeader()?.category ?: return if (currentCategory.order != activeCategory) { saveActiveCategory(currentCategory) @@ -820,7 +822,7 @@ class LibraryController( if (view.height - insetBottom < binding.categoryHopperFrame.y) { binding.jumperCategoryText.translationY = -(binding.categoryHopperFrame.y - (view.height - insetBottom)) + - binding.libraryGridRecycler.recycler.translationY + binding.libraryGridRecycler.recycler.translationY } else { binding.jumperCategoryText.translationY = binding.libraryGridRecycler.recycler.translationY } @@ -861,8 +863,8 @@ class LibraryController( presenter.categories.indexOfFirst { presenter.currentCategory == it.id } + (if (next) 1 else -1) if (if (!next) { - newOffset > -1 - } else { + newOffset > -1 + } else { newOffset < presenter.categories.size } ) { @@ -1074,15 +1076,20 @@ class LibraryController( } else { binding.emptyView.show( CommunityMaterial.Icon2.cmd_heart_off, - if (hasActiveFilters) R.string.no_matches_for_filters - else R.string.library_is_empty_add_from_browse, + if (hasActiveFilters) { + R.string.no_matches_for_filters + } else { + R.string.library_is_empty_add_from_browse + }, if (!hasActiveFilters) { listOf( EmptyView.Action(R.string.getting_started_guide) { activity?.openInBrowser("https://tachiyomi.org/help/guides/getting-started/#installing-an-extension") }, ) - } else emptyList(), + } else { + emptyList() + }, ) } adapter.setItems(mangaMap) @@ -1557,8 +1564,11 @@ class LibraryController( override fun onUpdateManga(manga: Manga?) { if (manga?.source == LibraryUpdateService.STARTING_UPDATE_SOURCE) return - if (manga == null) adapter.getHeaderPositions().forEach { adapter.notifyItemChanged(it) } - else presenter.updateManga() + if (manga == null) { + adapter.getHeaderPositions().forEach { adapter.notifyItemChanged(it) } + } else { + presenter.updateManga() + } } private fun setSelection(position: Int, selected: Boolean = true) { @@ -1573,16 +1583,17 @@ class LibraryController( val fromItem = adapter.getItem(fromPosition) val toItem = adapter.getItem(toPosition) if (binding.libraryGridRecycler.recycler.layoutManager !is StaggeredGridLayoutManager && ( - (fromItem is LibraryItem && toItem is LibraryItem) || fromItem == null - ) + (fromItem is LibraryItem && toItem is LibraryItem) || fromItem == null + ) ) { binding.libraryGridRecycler.recycler.scrollBy( 0, binding.libraryGridRecycler.recycler.paddingTop, ) } - if (lastItemPosition == toPosition) lastItemPosition = null - else if (lastItemPosition == null) lastItemPosition = fromPosition + if (lastItemPosition == toPosition) { + lastItemPosition = null + } else if (lastItemPosition == null) lastItemPosition = fromPosition } override fun shouldMoveItem(fromPosition: Int, toPosition: Int): Boolean { @@ -1625,11 +1636,13 @@ class LibraryController( } return } - if (newHeader?.category != null) moveMangaToCategory( - item.manga, - newHeader.category, - mangaIds, - ) + if (newHeader?.category != null) { + moveMangaToCategory( + item.manga, + newHeader.category, + mangaIds, + ) + } } lastItemPosition = null } @@ -1693,13 +1706,17 @@ class LibraryController( } } } - if (!inQueue) LibraryUpdateService.start( - view!!.context, - category, - mangaToUse = if (category.isDynamic) { - presenter.getMangaInCategories(category.id) - } else null, - ) + if (!inQueue) { + LibraryUpdateService.start( + view!!.context, + category, + mangaToUse = if (category.isDynamic) { + presenter.getMangaInCategories(category.id) + } else { + null + }, + ) + } return true } @@ -1883,8 +1900,11 @@ class LibraryController( R.id.action_filter -> { hasExpanded = true val sheetBehavior = binding.filterBottomSheet.filterBottomSheet.sheetBehavior - if (!sheetBehavior.isExpanded() && !sheetBehavior.isSettling()) sheetBehavior?.expand() - else showDisplayOptions() + if (!sheetBehavior.isExpanded() && !sheetBehavior.isSettling()) { + sheetBehavior?.expand() + } else { + showDisplayOptions() + } } else -> return super.onOptionsItemSelected(item) } @@ -1939,8 +1959,11 @@ class LibraryController( categoryItem.isVisible = presenter.allCategories.size > 1 categoryItem.isVisible = presenter.categories.size > 1 shareItem.isVisible = true - if (count == 0) destroyActionModeIfNeeded() - else mode.title = resources?.getString(R.string.selected_, count) + if (count == 0) { + destroyActionModeIfNeeded() + } else { + mode.title = resources?.getString(R.string.selected_, count) + } return false } //endregion @@ -2018,9 +2041,12 @@ class LibraryController( event: Int, ) { super.onDismissed(transientBottomBar, event) - if (!undoing) presenter.confirmMarkReadStatus( - mapMangaChapters, markRead, - ) + if (!undoing) { + presenter.confirmMarkReadStatus( + mapMangaChapters, + markRead, + ) + } } }, ) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryGestureDetector.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryGestureDetector.kt index 57c48f5937..6bfe0595f6 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryGestureDetector.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryGestureDetector.kt @@ -62,39 +62,45 @@ class LibraryGestureDetector(private val controller: LibraryController) : Gestur val hopperGravity = (controller.binding.categoryHopperFrame.layoutParams as CoordinatorLayout.LayoutParams).gravity if (diffX <= 0) { animator.translationX( - if (hopperGravity == Gravity.TOP or Gravity.LEFT) 0f - else (-(controller.view!!.width - controller.binding.categoryHopperFrame.width) / 2).toFloat(), + if (hopperGravity == Gravity.TOP or Gravity.LEFT) { + 0f + } else { + (-(controller.view!!.width - controller.binding.categoryHopperFrame.width) / 2).toFloat() + }, ).withEndAction { hopperFrame.updateLayoutParams { gravity = Gravity.TOP or ( - if (gravity == Gravity.TOP or Gravity.RIGHT) { - controller.preferences.hopperGravity().set(1) - Gravity.CENTER - } else { - controller.preferences.hopperGravity().set(0) - Gravity.LEFT - } - ) + if (gravity == Gravity.TOP or Gravity.RIGHT) { + controller.preferences.hopperGravity().set(1) + Gravity.CENTER + } else { + controller.preferences.hopperGravity().set(0) + Gravity.LEFT + } + ) } savePrefs() } } else { animator.translationX( - if (hopperGravity == Gravity.TOP or Gravity.RIGHT) 0f - else ((controller.view!!.width - hopperFrame.width) / 2).toFloat(), + if (hopperGravity == Gravity.TOP or Gravity.RIGHT) { + 0f + } else { + ((controller.view!!.width - hopperFrame.width) / 2).toFloat() + }, ).withEndAction { hopperFrame.updateLayoutParams { gravity = Gravity.TOP or ( - if (gravity == Gravity.TOP or Gravity.LEFT) { - controller.preferences.hopperGravity().set(1) - Gravity.CENTER - } else { - controller.preferences.hopperGravity().set(2) - Gravity.RIGHT - } - ) + if (gravity == Gravity.TOP or Gravity.LEFT) { + controller.preferences.hopperGravity().set(1) + Gravity.CENTER + } else { + controller.preferences.hopperGravity().set(2) + Gravity.RIGHT + } + ) } savePrefs() } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryGridHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryGridHolder.kt index 31407fa520..db525694d2 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryGridHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryGridHolder.kt @@ -194,11 +194,17 @@ fun MangaGridItemBinding.setFreeformCoverRatio(manga: Manga?, parent: AutofitRec fun MangaGridItemBinding.setBGAndFG(libraryLayout: Int) { val bottom = - if (libraryLayout == LibraryItem.LAYOUT_COMFORTABLE_GRID) 2.dpToPx - else card.marginBottom - 2.dpToPx + if (libraryLayout == LibraryItem.LAYOUT_COMFORTABLE_GRID) { + 2.dpToPx + } else { + card.marginBottom - 2.dpToPx + } val others = - if (libraryLayout == LibraryItem.LAYOUT_COMPACT_GRID) 4.dpToPx - else 5.dpToPx + if (libraryLayout == LibraryItem.LAYOUT_COMPACT_GRID) { + 4.dpToPx + } else { + 5.dpToPx + } (constraintLayout.background as? RippleDrawable)?.apply { for (i in 0 until numberOfLayers) { setLayerInset(i, others, others, others, bottom) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryHeaderHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryHeaderHolder.kt index ddf35a27e9..263093dbc8 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryHeaderHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryHeaderHolder.kt @@ -161,15 +161,15 @@ class LibraryHeaderHolder(val view: View, val adapter: LibraryCategoryAdapter) : binding.categoryTitle.text = if (category.isAlone && !category.isDynamic) { - "" + "" + } else { + category.name + } + + if (adapter.showNumber) { + " (${adapter.itemsPerCategory[item.catId]})" } else { - category.name - } + - if (adapter.showNumber) { - " (${adapter.itemsPerCategory[item.catId]})" - } else { - "" - } + "" + } binding.categoryTitle.setCompoundDrawablesRelative(null, null, null, null) val isAscending = category.isAscending() @@ -179,8 +179,11 @@ class LibraryHeaderHolder(val view: View, val adapter: LibraryCategoryAdapter) : binding.categorySort.setCompoundDrawablesRelativeWithIntrinsicBounds(0, 0, sortDrawable, 0) binding.categorySort.setText(category.sortRes()) binding.collapseArrow.setImageResource( - if (category.isHidden) R.drawable.ic_expand_more_24dp - else R.drawable.ic_expand_less_24dp, + if (category.isHidden) { + R.drawable.ic_expand_more_24dp + } else { + R.drawable.ic_expand_less_24dp + }, ) when { adapter.mode == SelectableAdapter.Mode.MULTI -> { @@ -331,8 +334,11 @@ class LibraryHeaderHolder(val view: View, val adapter: LibraryCategoryAdapter) : ) val tintedDrawable = drawable?.mutate() tintedDrawable?.setTint( - if (allSelected) contentView.context.getResourceColor(R.attr.colorSecondary) - else ContextCompat.getColor(contentView.context, R.color.gray_button), + if (allSelected) { + contentView.context.getResourceColor(R.attr.colorSecondary) + } else { + ContextCompat.getColor(contentView.context, R.color.gray_button) + }, ) binding.checkbox.setImageDrawable(tintedDrawable) } 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 b614dec665..e763dcb1fe 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 @@ -168,7 +168,9 @@ class LibraryItem( if (constraint.contains(",")) { val genres = manga.getGenres() constraint.split(",").all { containsGenre(it.trim(), genres) } - } else containsGenre(constraint, manga.getGenres()) + } else { + containsGenre(constraint, manga.getGenres()) + } } private fun containsGenre(tag: String, genres: List?): Boolean { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryListHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryListHolder.kt index 18a9a6d68f..5099c3ff77 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryListHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryListHolder.kt @@ -48,8 +48,11 @@ class LibraryListHolder( binding.title.isVisible = false } else { binding.title.text = itemView.context.getString( - if (adapter.hasActiveFilters) R.string.no_matches_for_filters_short - else R.string.category_is_empty, + if (adapter.hasActiveFilters) { + R.string.no_matches_for_filters_short + } else { + R.string.category_is_empty + }, ) } binding.title.textAlignment = View.TEXT_ALIGNMENT_CENTER 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 c797d34b51..1d60eea889 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt @@ -221,13 +221,18 @@ class LibraryPresenter( val items = libraryItems val show = showAllCategories || !libraryIsGrouped || categories.size == 1 sectionedLibraryItems = items.groupBy { it.header.category.id!! }.toMutableMap() - if (!show && currentCategory == -1) currentCategory = categories.find { - it.order == preferences.lastUsedCategory().get() - }?.id ?: 0 + if (!show && currentCategory == -1) { + currentCategory = categories.find { + it.order == preferences.lastUsedCategory().get() + }?.id ?: 0 + } controller?.onNextLibraryUpdate( - if (!show) sectionedLibraryItems[currentCategory] - ?: sectionedLibraryItems[categories.first().id] ?: blankItem() - else libraryItems, + if (!show) { + sectionedLibraryItems[currentCategory] + ?: sectionedLibraryItems[categories.first().id] ?: blankItem() + } else { + libraryItems + }, true, ) } @@ -242,14 +247,19 @@ class LibraryPresenter( val showAll = showAllCategories || !libraryIsGrouped || categories.size <= 1 sectionedLibraryItems = items.groupBy { it.header.category.id ?: 0 }.toMutableMap() - if (!showAll && currentCategory == -1) currentCategory = categories.find { - it.order == preferences.lastUsedCategory().get() - }?.id ?: 0 + if (!showAll && currentCategory == -1) { + currentCategory = categories.find { + it.order == preferences.lastUsedCategory().get() + }?.id ?: 0 + } withUIContext { controller?.onNextLibraryUpdate( - if (!showAll) sectionedLibraryItems[currentCategory] - ?: sectionedLibraryItems[categories.first().id] ?: blankItem() - else libraryItems, + if (!showAll) { + sectionedLibraryItems[currentCategory] + ?: sectionedLibraryItems[categories.first().id] ?: blankItem() + } else { + libraryItems + }, freshStart, ) } @@ -287,8 +297,9 @@ class LibraryPresenter( if (!showEmptyCategoriesWhileFiltering && item.manga.isHidden()) { val subItems = sectionedLibraryItems[item.manga.category]?.takeUnless { it.size <= 1 } ?: hiddenLibraryItems.filter { it.manga.category == item.manga.category } - if (subItems.isNullOrEmpty()) return@f filtersOff - else { + if (subItems.isNullOrEmpty()) { + return@f filtersOff + } else { return@f subItems.any { matchesFilters( it, @@ -355,11 +366,13 @@ class LibraryPresenter( if (filterMangaType > 0) { if (if (filterMangaType == Manga.TYPE_MANHWA) { - (filterMangaType != item.manga.seriesType() && filterMangaType != Manga.TYPE_WEBTOON) - } else { + (filterMangaType != item.manga.seriesType() && filterMangaType != Manga.TYPE_WEBTOON) + } else { filterMangaType != item.manga.seriesType() } - ) return false + ) { + return false + } } // Filter for completed status of manga @@ -379,9 +392,9 @@ class LibraryPresenter( val hasTrack = loggedServices.any { service -> tracks.any { if (service.isMdList() && ( - source.isLogged() - .not() || it.status == FollowStatus.UNFOLLOWED.int - ) + source.isLogged() + .not() || it.status == FollowStatus.UNFOLLOWED.int + ) ) { false } else { @@ -389,9 +402,13 @@ class LibraryPresenter( } } } - val service = if (filterTrackers.isNotEmpty()) loggedServices.find { - context.getString(it.nameRes()) == filterTrackers - } else null + val service = if (filterTrackers.isNotEmpty()) { + loggedServices.find { + context.getString(it.nameRes()) == filterTrackers + } + } else { + null + } if (filterTracked == STATE_INCLUDE) { if (!hasTrack) return false if (filterTrackers.isNotEmpty()) { @@ -476,9 +493,10 @@ class LibraryPresenter( val category = i1.header.category if (category.mangaOrder.isNullOrEmpty() && category.mangaSort == null) { category.changeSortTo(preferences.librarySortingMode().get()) - if (category.id == 0) preferences.defaultMangaOrder() - .set(category.mangaSort.toString()) - else if (!category.isDynamic) db.insertCategory(category).executeAsBlocking() + if (category.id == 0) { + preferences.defaultMangaOrder() + .set(category.mangaSort.toString()) + } else if (!category.isDynamic) db.insertCategory(category).executeAsBlocking() } val compare = when { category.mangaSort != null -> { @@ -554,7 +572,9 @@ class LibraryPresenter( } if (compare == 0) { sortAlphabetical(i1, i2) - } else compare + } else { + compare + } } else { val category = i1.header.category.order val category2 = i2.header.category.order @@ -615,15 +635,21 @@ class LibraryPresenter( val headerItems = ( categories.mapNotNull { category -> val id = category.id - if (id == null) null - else id to LibraryHeaderItem({ getCategory(id) }, id) + if (id == null) { + null + } else { + id to LibraryHeaderItem({ getCategory(id) }, id) + } } + (-1 to catItemAll) + (0 to LibraryHeaderItem({ getCategory(0) }, 0)) ).toMap() val items = libraryManga.mapNotNull { val headerItem = ( - if (!libraryIsGrouped) catItemAll - else headerItems[it.category] + if (!libraryIsGrouped) { + catItemAll + } else { + headerItems[it.category] + } ) ?: return@mapNotNull null categorySet.add(it.category) LibraryItem(it, headerItem) @@ -643,9 +669,11 @@ class LibraryPresenter( (catId !in categoriesHidden || !showAll) ) { val headerItem = headerItems[catId] - if (headerItem != null) items.add( - LibraryItem(LibraryManga.createBlank(catId), headerItem), - ) + if (headerItem != null) { + items.add( + LibraryItem(LibraryManga.createBlank(catId), headerItem), + ) + } } else if (catId in categoriesHidden && showAll && categories.size > 1) { val mangaToRemove = items.filter { it.manga.category == catId } val mergedTitle = mangaToRemove.joinToString("-") { @@ -655,9 +683,11 @@ class LibraryPresenter( hiddenItems.addAll(mangaToRemove) items.removeAll(mangaToRemove) val headerItem = headerItems[catId] - if (headerItem != null) items.add( - LibraryItem(LibraryManga.createHide(catId, mergedTitle, mangaToRemove.size), headerItem), - ) + if (headerItem != null) { + items.add( + LibraryItem(LibraryManga.createHide(catId, mergedTitle, mangaToRemove.size), headerItem), + ) + } } } } @@ -683,10 +713,10 @@ class LibraryPresenter( return items to hiddenItems } - private fun getCustomMangaItems(libraryManga: List): Pair< - List, - List, - > { + private fun getCustomMangaItems( + libraryManga: List, + ): Pair, + List,> { val tagItems: MutableMap = mutableMapOf() // internal function to make headers @@ -802,9 +832,11 @@ class LibraryPresenter( } sectionedLibraryItems[catId] = mangaToRemove items.removeAll { it.header.catId == catId } - if (headerItem != null) items.add( - LibraryItem(LibraryManga.createHide(catId, mergedTitle, mangaToRemove.size), headerItem), - ) + if (headerItem != null) { + items.add( + LibraryItem(LibraryManga.createHide(catId, mergedTitle, mangaToRemove.size), headerItem), + ) + } } } @@ -845,8 +877,11 @@ class LibraryPresenter( val default = Category.createDefault(controller?.applicationContext ?: context) default.order = -1 val defOrder = preferences.defaultMangaOrder().get() - if (defOrder.firstOrNull()?.isLetter() == true) default.mangaSort = defOrder.first() - else default.mangaOrder = defOrder.split("/").mapNotNull { it.toLongOrNull() } + if (defOrder.firstOrNull()?.isLetter() == true) { + default.mangaSort = defOrder.first() + } else { + default.mangaOrder = defOrder.split("/").mapNotNull { it.toLongOrNull() } + } return default } @@ -923,7 +958,6 @@ class LibraryPresenter( deleteChapters(it, chapters) } getLibrary() - } } @@ -1010,8 +1044,11 @@ class LibraryPresenter( it.mangaSort = category.mangaSort } } else if (catId >= 0) { - if (category.id == 0) preferences.defaultMangaOrder().set(category.mangaSort.toString()) - else Injekt.get().insertCategory(category).executeAsBlocking() + if (category.id == 0) { + preferences.defaultMangaOrder().set(category.mangaSort.toString()) + } else { + Injekt.get().insertCategory(category).executeAsBlocking() + } } requestSortUpdate() } @@ -1023,8 +1060,11 @@ class LibraryPresenter( if (category.isDynamic) return@launch category.mangaSort = null category.mangaOrder = mangaIds - if (category.id == 0) preferences.defaultMangaOrder().set(mangaIds.joinToString("/")) - else db.insertCategory(category).executeOnIO() + if (category.id == 0) { + preferences.defaultMangaOrder().set(mangaIds.joinToString("/")) + } else { + db.insertCategory(category).executeOnIO() + } requestSortUpdate() } } @@ -1045,8 +1085,9 @@ class LibraryPresenter( val mc = ArrayList() val categories = - if (catId == 0) emptyList() - else { + if (catId == 0) { + emptyList() + } else { db.getCategoriesForManga(manga).executeOnIO() .filter { it.id != oldCatId } + listOf(category) } @@ -1061,9 +1102,12 @@ class LibraryPresenter( val ids = mangaIds.toMutableList() if (!ids.contains(manga.id!!)) ids.add(manga.id!!) category.mangaOrder = ids - if (category.id == 0) preferences.defaultMangaOrder() - .set(mangaIds.joinToString("/")) - else db.insertCategory(category).executeAsBlocking() + if (category.id == 0) { + preferences.defaultMangaOrder() + .set(mangaIds.joinToString("/")) + } else { + db.insertCategory(category).executeAsBlocking() + } } getLibrary() } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySort.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySort.kt index 91fe97f011..6f75137e61 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySort.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySort.kt @@ -29,7 +29,8 @@ enum class LibrarySort( R.string.category, R.drawable.ic_label_outline_24dp, ), - Rating(8, R.string.rating, R.drawable.ic_poll_24dp) + Rating(8, R.string.rating, R.drawable.ic_poll_24dp), + ; val categoryValue: Char diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/display/LibraryDisplayView.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/display/LibraryDisplayView.kt index 018abd5aeb..bc706e4c95 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/display/LibraryDisplayView.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/display/LibraryDisplayView.kt @@ -52,8 +52,11 @@ class LibraryDisplayView @JvmOverloads constructor(context: Context, attrs: Attr } val adapter = FlexibleAdapter( filterOrder.toCharArray().map { - if (FilterBottomSheet.Filters.filterOf(it) != null) ManageFilterItem(it) - else null + if (FilterBottomSheet.Filters.filterOf(it) != null) { + ManageFilterItem(it) + } else { + null + } }.filterNotNull(), this, true, @@ -109,14 +112,15 @@ class LibraryDisplayView @JvmOverloads constructor(context: Context, attrs: Attr } setGridText(value) } - binding.gridSeekbar.addOnSliderTouchListener(object : Slider.OnSliderTouchListener { - override fun onStartTrackingTouch(slider: Slider) {} + binding.gridSeekbar.addOnSliderTouchListener( + object : Slider.OnSliderTouchListener { + override fun onStartTrackingTouch(slider: Slider) {} - override fun onStopTrackingTouch(slider: Slider) { - preferences.gridSize().set((slider.value / 2f) - .5f) - setGridText(slider.value) - } - }, + override fun onStopTrackingTouch(slider: Slider) { + preferences.gridSize().set((slider.value / 2f) - .5f) + setGridText(slider.value) + } + }, ) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/filter/FilterBottomSheet.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/filter/FilterBottomSheet.kt index 4aa4a5e82f..501425a9c3 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/filter/FilterBottomSheet.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/filter/FilterBottomSheet.kt @@ -119,7 +119,7 @@ class FilterBottomSheet @JvmOverloads constructor(context: Context, attrs: Attri bottomBarHeight = controller.activityBinding?.bottomNav?.height ?: controller.activityBinding?.root?.rootWindowInsetsCompat?.getInsets(systemBars())?.bottom - ?: 0 + ?: 0 } sheetBehavior?.addBottomSheetCallback( object : BottomSheetBehavior.BottomSheetCallback() { @@ -552,7 +552,8 @@ class FilterBottomSheet @JvmOverloads constructor(context: Context, attrs: Attri SeriesType('m', R.string.series_type), MissingChapters('o', R.string.missing_chapters), Merged('n', R.string.merged), - Tracked('t', R.string.tracked); + Tracked('t', R.string.tracked), + ; companion object { val DEFAULT_ORDER = listOf( diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/filter/FilterTagGroup.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/filter/FilterTagGroup.kt index f6f6cacec3..1ec04e0e5f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/filter/FilterTagGroup.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/filter/FilterTagGroup.kt @@ -13,7 +13,7 @@ import eu.kanade.tachiyomi.util.system.dpToPx import eu.kanade.tachiyomi.util.system.getResourceColor class FilterTagGroup @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : LinearLayout - (context, attrs) { +(context, attrs) { private var listener: FilterTagGroupListener? = null @@ -119,8 +119,11 @@ class FilterTagGroup @JvmOverloads constructor(context: Context, attrs: Attribut binding.firstButton.isActivated = !binding.firstButton.isActivated binding.firstButton.setTextColor( context.getResourceColor( - if (binding.firstButton.isActivated) R.attr.colorOnSecondary - else R.attr.colorOnBackground, + if (binding.firstButton.isActivated) { + R.attr.colorOnSecondary + } else { + R.attr.colorOnBackground + }, ), ) listener?.onFilterClicked( @@ -151,8 +154,11 @@ class FilterTagGroup @JvmOverloads constructor(context: Context, attrs: Attribut } mainButton.setTextColor( context.getResourceColor( - if (mainButton.isActivated) R.attr.colorOnSecondary - else R.attr.colorOnBackground, + if (mainButton.isActivated) { + R.attr.colorOnSecondary + } else { + R.attr.colorOnBackground + }, ), ) } 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 d3605aad52..adcd945c4e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt @@ -316,10 +316,12 @@ open class MainActivity : BaseActivity(), DownloadServiceLi val currentController = router.backstack.lastOrNull()?.controller if (!continueSwitchingTabs && currentController is BottomNavBarInterface) { if (!currentController.canChangeTabs { - continueSwitchingTabs = true - this@MainActivity.nav.selectedItemId = id - } - ) return@setOnItemSelectedListener false + continueSwitchingTabs = true + this@MainActivity.nav.selectedItemId = id + } + ) { + return@setOnItemSelectedListener false + } } continueSwitchingTabs = false val currentRoot = router.backstack.firstOrNull() @@ -360,13 +362,15 @@ open class MainActivity : BaseActivity(), DownloadServiceLi binding.searchToolbar.setNavigationOnClickListener { val rootSearchController = router.backstack.lastOrNull()?.controller if (( - rootSearchController is RootSearchInterface || - (currentToolbar != binding.searchToolbar && binding.appBar.useLargeToolbar) - ) && + rootSearchController is RootSearchInterface || + (currentToolbar != binding.searchToolbar && binding.appBar.useLargeToolbar) + ) && rootSearchController !is SmallToolbarInterface ) { binding.searchToolbar.menu.findItem(R.id.action_search)?.expandActionView() - } else onBackPressedDispatcher.onBackPressed() + } else { + onBackPressedDispatcher.onBackPressed() + } } binding.searchToolbar.searchItem?.setOnActionExpandListener( @@ -414,7 +418,9 @@ open class MainActivity : BaseActivity(), DownloadServiceLi binding.searchToolbar.setOnMenuItemClickListener { if (router.backstack.lastOrNull()?.controller?.onOptionsItemSelected(it) == true) { return@setOnMenuItemClickListener true - } else return@setOnMenuItemClickListener onOptionsItemSelected(it) + } else { + return@setOnMenuItemClickListener onOptionsItemSelected(it) + } } nav.isVisible = !hideBottomNav @@ -502,7 +508,7 @@ open class MainActivity : BaseActivity(), DownloadServiceLi val returnToStart = preferences.backReturnsToStart().get() && this !is SearchActivity backPressedCallback?.isEnabled = (binding.searchToolbar.hasExpandedActionView() && binding.cardFrame.isVisible) || - router.canStillGoBack() || (returnToStart && startingTab() != nav.selectedItemId) + router.canStillGoBack() || (returnToStart && startingTab() != nav.selectedItemId) } override fun onTitleChanged(title: CharSequence?, color: Int) { @@ -539,8 +545,11 @@ open class MainActivity : BaseActivity(), DownloadServiceLi setSearchTBLongClick() val showSearchBar = (show || showSearchAnyway) && onSearchController val isAppBarVisible = binding.appBar.isVisible - val needsAnim = if (showSearchBar) !binding.cardFrame.isVisible || binding.cardFrame.alpha < 1f - else binding.cardFrame.isVisible || binding.cardFrame.alpha > 0f + val needsAnim = if (showSearchBar) { + !binding.cardFrame.isVisible || binding.cardFrame.alpha < 1f + } else { + binding.cardFrame.isVisible || binding.cardFrame.alpha > 0f + } if (this::router.isInitialized && needsAnim && binding.appBar.useLargeToolbar && !onSmallerController && (showSearchAnyway || isAppBarVisible) ) { @@ -652,10 +661,12 @@ open class MainActivity : BaseActivity(), DownloadServiceLi val duration = resources.getInteger(android.R.integer.config_mediumAnimTime) * scale delay(duration.toLong()) delay(100) - if (Color.alpha(window?.statusBarColor ?: Color.BLACK) >= 255) window?.statusBarColor = - getResourceColor( - android.R.attr.statusBarColor, - ) + if (Color.alpha(window?.statusBarColor ?: Color.BLACK) >= 255) { + window?.statusBarColor = + getResourceColor( + android.R.attr.statusBarColor, + ) + } } super.onSupportActionModeFinished(mode) } @@ -751,11 +762,13 @@ open class MainActivity : BaseActivity(), DownloadServiceLi protected open fun handleIntentAction(intent: Intent): Boolean { val notificationId = intent.getIntExtra("notificationId", -1) - if (notificationId > -1) NotificationReceiver.dismissNotification( - applicationContext, - notificationId, - intent.getIntExtra("groupId", 0), - ) + if (notificationId > -1) { + NotificationReceiver.dismissNotification( + applicationContext, + notificationId, + intent.getIntExtra("groupId", 0), + ) + } when (intent.action) { SHORTCUT_LIBRARY -> nav.selectedItemId = R.id.nav_library SHORTCUT_RECENTLY_UPDATED, SHORTCUT_RECENTLY_READ -> { @@ -1127,8 +1140,12 @@ open class MainActivity : BaseActivity(), DownloadServiceLi alphaAnimation.doOnEnd { nav.isVisible = !hideBottomNav binding.bottomView?.visibility = - if (hideBottomNav) View.GONE else binding.bottomView?.visibility - ?: View.GONE + if (hideBottomNav) { + View.GONE + } else { + binding.bottomView?.visibility + ?: View.GONE + } } alphaAnimation.duration = 200 alphaAnimation.startDelay = 50 diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/main/SearchActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/main/SearchActivity.kt index 1ce02918f4..9f3eaf424f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/main/SearchActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/main/SearchActivity.kt @@ -38,12 +38,14 @@ class SearchActivity : MainActivity() { binding.searchToolbar.setNavigationOnClickListener { val rootSearchController = router.backstack.lastOrNull()?.controller if (( - rootSearchController is RootSearchInterface || - (currentToolbar != binding.searchToolbar && binding.appBar.useLargeToolbar) - ) && rootSearchController !is SmallToolbarInterface + rootSearchController is RootSearchInterface || + (currentToolbar != binding.searchToolbar && binding.appBar.useLargeToolbar) + ) && rootSearchController !is SmallToolbarInterface ) { binding.searchToolbar.menu.findItem(R.id.action_search)?.expandActionView() - } else popToRoot() + } else { + popToRoot() + } } (router.backstack.lastOrNull()?.controller as? BaseController<*>)?.setTitle() (router.backstack.lastOrNull()?.controller as? SettingsController)?.setTitle() @@ -107,11 +109,13 @@ class SearchActivity : MainActivity() { override fun handleIntentAction(intent: Intent): Boolean { val notificationId = intent.getIntExtra("notificationId", -1) - if (notificationId > -1) NotificationReceiver.dismissNotification( - applicationContext, - notificationId, - intent.getIntExtra("groupId", 0), - ) + if (notificationId > -1) { + NotificationReceiver.dismissNotification( + applicationContext, + notificationId, + intent.getIntExtra("groupId", 0), + ) + } when (intent.action) { Intent.ACTION_SEARCH, Intent.ACTION_SEND, "com.google.android.gms.actions.SEARCH_ACTION" -> { // If the intent match the "standard" Android search intent diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaConstants.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaConstants.kt index dedd136626..4e9271c499 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaConstants.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaConstants.kt @@ -123,25 +123,25 @@ object MangaConstants { All, Unread, Downloaded, - Bookmarked + Bookmarked, } enum class SortType { SourceOrder, ChapterNumber, - UploadDate + UploadDate, } enum class SortState { Ascending, Descending, - None + None, } enum class SetGlobal { HideTitles, Sort, - Filter + Filter, } class ChapterFilterActions( diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailController.kt index fe441fe1c5..2174932b9f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailController.kt @@ -59,11 +59,13 @@ class MangaDetailController(mangaId: Long?) : BaseComposeController -1) NotificationReceiver.dismissNotification( - context, - notificationId, - bundle.getInt("groupId", 0), - ) + if (notificationId > -1) { + NotificationReceiver.dismissNotification( + context, + notificationId, + bundle.getInt("groupId", 0), + ) + } } override val presenter = MangaDetailPresenter(mangaId!!) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailPresenter.kt index 613a460b35..c777662358 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailPresenter.kt @@ -151,7 +151,7 @@ class MangaDetailPresenter( */ private fun updateAllFlows() { presenterScope.launchIO { - //immediately update the categories in case loading manga takes a second + // immediately update the categories in case loading manga takes a second updateCategoryFlows() runCatching { val m = db.getManga(mangaId).executeAsBlocking()!! @@ -224,7 +224,6 @@ class MangaDetailPresenter( } } } - } } @@ -335,7 +334,7 @@ class MangaDetailPresenter( } return@launchIO } - //add a slight delay in case the tracking flow is slower + // add a slight delay in case the tracking flow is slower var count = 0 while (count < 5 && trackMergeState.value.tracks.isEmpty()) { @@ -363,7 +362,6 @@ class MangaDetailPresenter( asyncList.awaitAll() updateTrackingFlows(false) - } } @@ -386,9 +384,7 @@ class MangaDetailPresenter( delay(3000) _snackbarState.emit(SnackbarState("Error trying to mark chapters read from MangaDex $it")) } - } - } } @@ -441,10 +437,9 @@ class MangaDetailPresenter( null } } else { - //returns null because before Q, the share sheet can't show the cover + // returns null because before Q, the share sheet can't show the cover null } - } } @@ -493,7 +488,7 @@ class MangaDetailPresenter( manga.value.uuid(), ).joinToString("-") - val filename = DiskUtil.buildValidFilename("${fileNameNoExtension}.${type.extension}") + val filename = DiskUtil.buildValidFilename("$fileNameNoExtension.${type.extension}") val destFile = File(directory, filename) cover.inputStream().use { input -> @@ -568,7 +563,6 @@ class MangaDetailPresenter( */ fun removeMergedManga() { presenterScope.launchIO { - val editManga = manga.value editManga.apply { merge_manga_url = null @@ -601,7 +595,6 @@ class MangaDetailPresenter( false -> trackMergeState.value.copy(mergeSearchResult = MergeSearchResult.Success(mergedMangaResults)) } } - }.getOrElse { error -> _trackMergeState.update { it.copy(mergeSearchResult = MergeSearchResult.Error(error.message ?: "Error looking up information")) @@ -670,7 +663,7 @@ class MangaDetailPresenter( */ private fun updateChapterFlows() { presenterScope.launchIO { - //possibly move this into a chapter repository + // possibly move this into a chapter repository val allChapters = db.getChapters(mangaId).executeOnIO().mapNotNull { it.toSimpleChapter() }.map { chapter -> val downloadState = when { downloadManager.isChapterDownloaded(chapter.toDbChapter(), manga.value) -> Download.State.DOWNLOADED @@ -686,7 +679,6 @@ class MangaDetailPresenter( false -> 0f }, ) - } _generalState.update { it.copy(allChapters = allChapters.toImmutableList()) @@ -710,12 +702,12 @@ class MangaDetailPresenter( ) } - //this is only really needed on initial load since all chapter scanlators is empty and the scanlator filter sheet would be also + // this is only really needed on initial load since all chapter scanlators is empty and the scanlator filter sheet would be also if (needToRefreshFilters) { updateFilterFlow() } - //do this after so the texts gets updated + // do this after so the texts gets updated updateNextUnreadChapter() updateMissingChapters() } @@ -735,7 +727,6 @@ class MangaDetailPresenter( db.insertManga(manga).executeOnIO() updateMangaFlow() updateFilterFlow() - } } @@ -753,7 +744,6 @@ class MangaDetailPresenter( db.insertManga(manga).executeOnIO() updateMangaFlow() updateFilterFlow() - } } @@ -779,7 +769,6 @@ class MangaDetailPresenter( */ private fun updateTrackingFlows(checkForMissingTrackers: Boolean = false) { presenterScope.launchIO { - _trackMergeState.update { it.copy( loggedInTrackService = trackManager.services.filter { it.value.isLogged() }.map { it.value.toTrackServiceItem() }.toImmutableList(), @@ -790,7 +779,7 @@ class MangaDetailPresenter( if (checkForMissingTrackers) { val autoAddTracker = preferences.autoAddTracker().get() - //Always add the mdlist initial unfollowed tracker, also add it as PTR if need be + // Always add the mdlist initial unfollowed tracker, also add it as PTR if need be trackMergeState.value.loggedInTrackService.firstOrNull { it.isMdList }?.let { _ -> val mdList = trackManager.mdList @@ -840,7 +829,7 @@ class MangaDetailPresenter( }.awaitAll() } } - //update the tracks incase they were updated above + // update the tracks incase they were updated above _trackMergeState.update { it.copy( tracks = db.getTracks(mangaId).executeAsBlocking().map { it.toTrackItem() }.toImmutableList(), @@ -853,11 +842,13 @@ class MangaDetailPresenter( val trackCount = trackMergeState.value.loggedInTrackService.count { trackServiceItem -> val trackService = trackManager.getService(trackServiceItem.id)!! trackMergeState.value.tracks.any { track -> - //return true if track matches and not MDList - //or track matches and MDlist is anything but Unfollowed + // return true if track matches and not MDList + // or track matches and MDlist is anything but Unfollowed trackService.matchingTrack(track) && - (trackService.isMdList().not() || - (trackService.isMdList() && !FollowStatus.isUnfollowed(track.status))) + ( + trackService.isMdList().not() || + (trackService.isMdList() && !FollowStatus.isUnfollowed(track.status)) + ) } } @@ -904,7 +895,6 @@ class MangaDetailPresenter( * Get current sort filter */ private fun getFilter(): MangaConstants.Filter { - val read = when (manga.value.readFilter(preferences)) { Manga.CHAPTER_SHOW_UNREAD -> ToggleableState.On Manga.CHAPTER_SHOW_READ -> ToggleableState.Indeterminate @@ -986,7 +976,6 @@ class MangaDetailPresenter( if (sortOption == null) { manga.setSortToGlobal() } else { - val sortInt = when (sortOption.sortType) { MangaConstants.SortType.ChapterNumber -> Manga.CHAPTER_SORTING_NUMBER MangaConstants.SortType.SourceOrder -> Manga.CHAPTER_SORTING_SOURCE @@ -1084,7 +1073,6 @@ class MangaDetailPresenter( updateMangaScanlator(newFilteredScanlators) updateChapterFlows() - } } @@ -1108,7 +1096,6 @@ class MangaDetailPresenter( updateMangaFilteredLanguages(newFilteredLanguages) updateChapterFlows() - } } @@ -1128,7 +1115,6 @@ class MangaDetailPresenter( updateMangaFlow() updateFilterFlow() updateChapterFlows() - } } @@ -1247,7 +1233,6 @@ class MangaDetailPresenter( */ fun toggleFavorite(shouldAddToDefaultCategory: Boolean) { presenterScope.launch { - val editManga = manga.value editManga.apply { favorite = !favorite @@ -1263,7 +1248,7 @@ class MangaDetailPresenter( db.insertManga(editManga).executeAsBlocking() updateMangaFlow() - //add to the default category if it exists and the user has the option set + // add to the default category if it exists and the user has the option set if (shouldAddToDefaultCategory && generalState.value.hasDefaultCategory) { val defaultCategoryId = preferences.defaultCategory() generalState.value.allCategories.firstOrNull { defaultCategoryId == it.id }?.let { @@ -1271,10 +1256,9 @@ class MangaDetailPresenter( } } if (editManga.favorite) { - //this is called for the add as plan to read/auto sync tracking, + // this is called for the add as plan to read/auto sync tracking, updateTrackingFlows(true) } - } } @@ -1282,7 +1266,7 @@ class MangaDetailPresenter( * Delete the list of chapters */ fun deleteChapters(chapterItems: List, isEverything: Boolean = false, canUndo: Boolean = false) { - //do on global scope cause we don't want exiting the manga to prevent the deleting + // do on global scope cause we don't want exiting the manga to prevent the deleting launchIO { if (chapterItems.isNotEmpty()) { @@ -1296,7 +1280,8 @@ class MangaDetailPresenter( if (canUndo) { _snackbarState.emit( SnackbarState( - messageRes = R.string.deleted_downloads, actionLabelRes = R.string.undo, + messageRes = R.string.deleted_downloads, + actionLabelRes = R.string.undo, action = { }, dismissAction = { @@ -1386,7 +1371,6 @@ class MangaDetailPresenter( fun markChapters(chapterItems: List, markAction: MangaConstants.MarkAction, skipSync: Boolean = false) { presenterScope.launchIO { - val initialChapterItems = if (markAction is MangaConstants.MarkAction.PreviousRead || markAction is MangaConstants.MarkAction.PreviousUnread) { when (manga.value.sortDescending(preferences)) { true -> (markAction as? MangaConstants.MarkAction.PreviousRead)?.altChapters ?: (markAction as MangaConstants.MarkAction.PreviousUnread).altChapters @@ -1396,7 +1380,6 @@ class MangaDetailPresenter( chapterItems } - val (newChapterItems, nameRes) = when (markAction) { is MangaConstants.MarkAction.Bookmark -> { initialChapterItems.map { it.chapter }.map { it.copy(bookmark = true) } to R.string.bookmarked @@ -1426,14 +1409,13 @@ class MangaDetailPresenter( db.updateChaptersProgress(newChapterItems.map { it.toDbChapter() }).executeOnIO() updateChapterFlows() - fun finalizeChapters() { if (markAction is MangaConstants.MarkAction.Read) { if (preferences.removeAfterMarkedAsRead()) { - //dont delete bookmarked chapters + // dont delete bookmarked chapters deleteChapters(newChapterItems.filter { !it.bookmark }.map { ChapterItem(chapter = it) }, newChapterItems.size == generalState.value.allChapters.size) } - //get the highest chapter number and update tracking for it + // get the highest chapter number and update tracking for it newChapterItems.maxByOrNull { it.chapterNumber.toInt() }?.let { kotlin.runCatching { updateTrackChapterMarkedAsRead(db, preferences, it.toDbChapter(), mangaId) { @@ -1445,11 +1427,10 @@ class MangaDetailPresenter( _snackbarState.emit(SnackbarState("Error trying to update tracked chapter marked as read ${it.message}")) } } - } } - //sync with dex if marked read or marked unread + // sync with dex if marked read or marked unread val syncRead = when (markAction) { is MangaConstants.MarkAction.Read -> true is MangaConstants.MarkAction.Unread -> false @@ -1473,7 +1454,8 @@ class MangaDetailPresenter( if (markAction.canUndo) { _snackbarState.emit( SnackbarState( - messageRes = nameRes, actionLabelRes = R.string.undo, + messageRes = nameRes, + actionLabelRes = R.string.undo, action = { presenterScope.launch { val originalDbChapters = initialChapterItems.map { it.chapter }.map { it.toDbChapter() } @@ -1553,7 +1535,7 @@ class MangaDetailPresenter( } } - //callback from Downloader + // callback from Downloader override fun updateDownload(download: Download) { presenterScope.launchIO { val currentChapters = generalState.value.activeChapters @@ -1571,14 +1553,14 @@ class MangaDetailPresenter( } } - //callback from Downloader + // callback from Downloader override fun updateDownloads() { presenterScope.launchIO { updateChapterFlows() } } - //callback from library update listener + // callback from library update listener override fun onUpdateManga(manga: Manga?) { if (manga?.id == mangaId) { updateChapterFlows() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaUpdateCoordinator.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaUpdateCoordinator.kt index 19b636cf53..3eab61a6cb 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaUpdateCoordinator.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaUpdateCoordinator.kt @@ -53,7 +53,6 @@ class MangaUpdateCoordinator { * Channel flow for updating the Manga/Chapters in the given scope */ suspend fun update(manga: Manga, scope: CoroutineScope) = channelFlow { - val mangaWasInitialized = manga.initialized if (!mangaDex.checkIfUp()) { @@ -81,7 +80,6 @@ class MangaUpdateCoordinator { send(MangaResult.Success) } } - }.flowOn(Dispatchers.IO) /** @@ -109,7 +107,7 @@ class MangaUpdateCoordinator { resultingManga.let { networkManga -> manga.copyFrom(networkManga) manga.initialized = true - //This clears custom titles from j2k/sy and if MangaDex removes the title + // This clears custom titles from j2k/sy and if MangaDex removes the title manga.user_title?.let { customTitle -> if (customTitle != manga.originalTitle && customTitle !in manga.getAltTitles()) { manga.user_title = null @@ -121,7 +119,6 @@ class MangaUpdateCoordinator { db.insertManga(manga).executeOnIO() send(MangaResult.UpdatedManga) } - } } } @@ -132,7 +129,6 @@ class MangaUpdateCoordinator { */ private fun ProducerScope.startChapterJob(scope: CoroutineScope, manga: Manga, mangaWasAlreadyInitialized: Boolean): Job { return scope.launchIO { - val deferredChapters = async { mangaDex.fetchChapterList(manga) .onFailure { @@ -158,7 +154,7 @@ class MangaUpdateCoordinator { val allChapters = deferredChapters.await() + deferredMergedChapters.await() val newChapters = syncChaptersWithSource(db, allChapters, manga) - //chapters that were added + // chapters that were added if (newChapters.first.isNotEmpty()) { val downloadNew = preferences.downloadNewChapters().get() if (downloadNew && mangaWasAlreadyInitialized) { @@ -168,7 +164,7 @@ class MangaUpdateCoordinator { } mangaShortcutManager.updateShortcuts() } - //chapters that were removed + // chapters that were removed if (newChapters.second.isNotEmpty()) { val removedChaptersId = newChapters.second.mapNotNull { it.id } send(MangaResult.ChaptersRemoved(removedChaptersId)) @@ -198,4 +194,3 @@ sealed class MangaResult { class ChaptersRemoved(val chapterIdsRemoved: List) : MangaResult() object Success : MangaResult() } - diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/TrackingConstants.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/TrackingConstants.kt index 0e31d87d3c..c13f172eff 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/TrackingConstants.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/TrackingConstants.kt @@ -29,6 +29,6 @@ object TrackingConstants { enum class ReadingDate { Start, - Finish + Finish, } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/TrackingCoordinator.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/TrackingCoordinator.kt index 379eecdee5..0958a93dfe 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/TrackingCoordinator.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/TrackingCoordinator.kt @@ -43,7 +43,6 @@ class TrackingCoordinator { * Update tracker with new score */ suspend fun updateTrackScore(scoreIndex: Int, trackAndService: TrackingConstants.TrackAndService): TrackingUpdate { - val trackItem = trackAndService.track.copy( score = trackAndService.service.indexToScore(scoreIndex), ) @@ -150,7 +149,6 @@ class TrackingCoordinator { false -> TrackingConstants.TrackSearchResult.Success(results.map { it.toTrackSearchItem() }.toImmutableList()) }, ) - }.catch { XLog.e("error searching tracker", it) emit(TrackingConstants.TrackSearchResult.Error(it.message ?: "Error searching tracker")) @@ -177,4 +175,3 @@ sealed class TrackingUpdate { object Success : TrackingUpdate() data class Error(val message: String, val exception: Throwable) : TrackingUpdate() } - diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/BaseChapterHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/BaseChapterHolder.kt index 9047f3fce4..1c8efea8b2 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/BaseChapterHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/BaseChapterHolder.kt @@ -38,10 +38,12 @@ open class BaseChapterHolder( chapter.status == Download.State.QUEUE // Hide download and show delete if the chapter is downloaded - if (chapter.status != Download.State.DOWNLOADED) popup.menu.findItem(R.id.action_delete).title = - downloadButton.context.getString( - R.string.cancel, - ) + if (chapter.status != Download.State.DOWNLOADED) { + popup.menu.findItem(R.id.action_delete).title = + downloadButton.context.getString( + R.string.cancel, + ) + } // Set a listener so we are notified if a menu item is clicked popup.setOnMenuItemClickListener { item -> diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/BaseChapterItem.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/BaseChapterItem.kt index d13bde4211..75e3c065d5 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/BaseChapterItem.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/BaseChapterItem.kt @@ -7,8 +7,7 @@ import eu.kanade.tachiyomi.data.download.model.Download import eu.kanade.tachiyomi.source.model.Page abstract class BaseChapterItem>( - val chapter: - Chapter, + val chapter: Chapter, header: H? = null, ) : AbstractSectionableItem(header), 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 88eb2427a0..096d982849 100644 --- 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 @@ -38,7 +38,9 @@ class ChapterHolder( binding.chapterTitle.text = if (manga.hideChapterTitle(adapter.preferences)) { val number = adapter.decimalFormat.format(chapter.chapter_number.toDouble()) itemView.context.getString(R.string.chapter_, number) - } else chapter.name + } else { + chapter.name + } ChapterUtil.setTextViewForChapter(binding.chapterTitle, item, hideStatus = isLocked) @@ -150,9 +152,11 @@ class ChapterHolder( } private fun resetFrontView() { - if (binding.frontView.translationX != 0f) itemView.post { - androidx.transition.TransitionManager.endTransitions(adapter.recyclerView) - adapter.notifyItemChanged(flexibleAdapterPosition) + if (binding.frontView.translationX != 0f) { + itemView.post { + androidx.transition.TransitionManager.endTransitions(adapter.recyclerView) + adapter.notifyItemChanged(flexibleAdapterPosition) + } } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/more/OverflowDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/more/OverflowDialog.kt index 24c34141e2..5edaf1247a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/more/OverflowDialog.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/more/OverflowDialog.kt @@ -41,29 +41,41 @@ class OverflowDialog(activity: MainActivity) : Dialog(activity, R.style.Overflow val incogText = context.getString(R.string.incognito_mode) with(binding.incognitoModeItem) { val titleText = context.getString( - if (preferences.incognitoMode().get()) R.string.turn_off_ - else R.string.turn_on_, + if (preferences.incognitoMode().get()) { + R.string.turn_off_ + } else { + R.string.turn_on_ + }, incogText, ) val subtitleText = context.getString(R.string.pauses_reading_history) text = titleText.withSubtitle(context, subtitleText) setIcon( - if (preferences.incognitoMode().get()) R.drawable.ic_incognito_24dp - else R.drawable.ic_glasses_24dp, + if (preferences.incognitoMode().get()) { + R.drawable.ic_incognito_24dp + } else { + R.drawable.ic_glasses_24dp + }, ) setOnClickListener { preferences.incognitoMode().toggle() val incog = preferences.incognitoMode().get() val newTitle = context.getString( - if (incog) R.string.turn_off_ - else R.string.turn_on_, + if (incog) { + R.string.turn_off_ + } else { + R.string.turn_on_ + }, incogText, ) text = newTitle.withSubtitle(context, subtitleText) val drawable = AnimatedVectorDrawableCompat.create( context, - if (incog) R.drawable.anim_read_to_incog - else R.drawable.anim_incog_to_read, + if (incog) { + R.drawable.anim_read_to_incog + } else { + R.drawable.anim_incog_to_read + }, ) setIcon(drawable) (getIcon() as? AnimatedVectorDrawableCompat)?.start() @@ -91,7 +103,6 @@ class OverflowDialog(activity: MainActivity) : Dialog(activity, R.style.Overflow dismiss() } - binding.overflowCardView.updateLayoutParams { topMargin = activity.toolbarHeight - 2.dpToPx } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/more/about/AboutController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/more/about/AboutController.kt index 21a1ac704b..005d2cf855 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/more/about/AboutController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/more/about/AboutController.kt @@ -57,5 +57,3 @@ class AboutController(bundle: Bundle? = null) : BaseComposeController() { _aboutScreenState.update { it.copy(checkingForUpdates = false) } - } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/more/stats/StatsPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/more/stats/StatsPresenter.kt index 6c070ccf27..5309f1f826 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/more/stats/StatsPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/more/stats/StatsPresenter.kt @@ -108,11 +108,12 @@ class StatsPresenter( tags = (it.getGenres() ?: emptyList()).toImmutableList(), userScore = getUserScore(tracks), trackers = tracks.mapNotNull { trackManager.getService(it.sync_id) }.map { prefs.context.getString(it.nameRes()) }.toImmutableList(), - categories = (db.getCategoriesForManga(it).executeAsBlocking().map { category -> category.name }.takeUnless { it.isEmpty() } - ?: listOf(prefs.context.getString(R.string.default_value))).sorted().toImmutableList(), + categories = ( + db.getCategoriesForManga(it).executeAsBlocking().map { category -> category.name }.takeUnless { it.isEmpty() } + ?: listOf(prefs.context.getString(R.string.default_value)) + ).sorted().toImmutableList(), ) } - }.awaitAll().sortedBy { it.title } _detailState.value = DetailedState( isLoading = false, @@ -120,7 +121,7 @@ class StatsPresenter( categories = (db.getCategories().executeAsBlocking().map { it.name } + listOf(prefs.context.getString(R.string.default_value))).toPersistentList(), tags = detailedStatMangaList.asSequence().map { it.tags }.flatten().distinct().filter { !it.contains("content rating:", true) }.sortedBy { it }.toImmutableList(), ) - + val sortedSeries = _detailState.value.tags.map { tag -> tag to _detailState.value.manga.filter { it.tags.contains(tag) }.toImmutableList() }.sortedByDescending { it.second.count() }.toImmutableList() val totalCount = sortedSeries.sumOf { it.second.size } @@ -137,7 +138,6 @@ class StatsPresenter( fun switchState() { presenterScope.launchIO { - val newState = when (simpleState.value.screenState) { is StatsConstants.ScreenState.Simple -> { StatsConstants.ScreenState.Detailed 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 d3ba6c2eb9..530678263f 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 @@ -244,7 +244,9 @@ class ReaderActivity : BaseRxActivity() { val intent = newIntent(activity, manga, chapter) intent.putExtra(TRANSITION_NAME, sharedElement.transitionName) val activityOptions = ActivityOptionsCompat.makeSceneTransitionAnimation( - activity, sharedElement, sharedElement.transitionName, + activity, + sharedElement, + sharedElement.transitionName, ) return intent to activityOptions.toBundle() } @@ -454,8 +456,11 @@ class ReaderActivity : BaseRxActivity() { } compatToolTipText = getString( - if (enabled) R.string.remove_crop - else R.string.crop_borders, + if (enabled) { + R.string.remove_crop + } else { + R.string.crop_borders + }, ) } } @@ -465,7 +470,7 @@ class ReaderActivity : BaseRxActivity() { with(binding.chaptersSheet) { readingMode.isVisible = presenter?.manga?.isLongStrip() != true && - ReaderBottomButton.ReadingMode.isIn(enabledButtons) + ReaderBottomButton.ReadingMode.isIn(enabledButtons) rotationSheetButton.isVisible = ReaderBottomButton.Rotation.isIn(enabledButtons) doublePage.isVisible = viewer is PagerViewer && @@ -607,8 +612,11 @@ class ReaderActivity : BaseRxActivity() { return MaterialContainerTransform(this, entering).apply { duration = ( resources?.getInteger( - if (entering) android.R.integer.config_longAnimTime - else android.R.integer.config_mediumAnimTime, + if (entering) { + android.R.integer.config_longAnimTime + } else { + android.R.integer.config_mediumAnimTime + }, ) ?: 500 ).toLong() addTarget(android.R.id.content) @@ -664,7 +672,11 @@ class ReaderActivity : BaseRxActivity() { val pref = if ((viewer as? WebtoonViewer)?.hasMargins == true || (viewer is PagerViewer) - ) preferences.cropBorders() else preferences.cropBordersWebtoon() + ) { + preferences.cropBorders() + } else { + preferences.cropBordersWebtoon() + } pref.toggle() } @@ -900,15 +912,15 @@ class ReaderActivity : BaseRxActivity() { } binding.chaptersSheet.root.sheetBehavior?.peekHeight = peek + if (fullscreen) { - insets.getBottomGestureInsets() - } else { - val rootInsets = binding.root.rootWindowInsetsCompat ?: insets - max( - 0, - (rootInsets.getBottomGestureInsets()) - - rootInsets.getInsetsIgnoringVisibility(systemBars()).bottom, - ) - } + insets.getBottomGestureInsets() + } else { + val rootInsets = binding.root.rootWindowInsetsCompat ?: insets + max( + 0, + (rootInsets.getBottomGestureInsets()) - + rootInsets.getInsetsIgnoringVisibility(systemBars()).bottom, + ) + } binding.chaptersSheet.chapterRecycler.updatePaddingRelative(bottom = systemInsets.bottom) binding.viewerContainer.requestLayout() } @@ -1083,8 +1095,10 @@ class ReaderActivity : BaseRxActivity() { ), 4000, ) { - if (presenter.manga?.isLongStrip() != true) setAction(R.string.use_default) { - presenter.setMangaReadingMode(0) + if (presenter.manga?.isLongStrip() != true) { + setAction(R.string.use_default) { + presenter.setMangaReadingMode(0) + } } } } @@ -1499,10 +1513,10 @@ class ReaderActivity : BaseRxActivity() { } val text = "${manga.title}: ${ - getString( - R.string.chapter_, - decimalFormat.format(chapter.chapter_number), - ) + getString( + R.string.chapter_, + decimalFormat.format(chapter.chapter_number), + ) }, $pageNumber, <${MdUtil.baseUrl + manga.url}>" val stream = file.getUriCompat(this) @@ -1616,7 +1630,9 @@ class ReaderActivity : BaseRxActivity() { ColorUtils.setAlphaComponent( if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1 || isInNightMode()) { getResourceColor(R.attr.colorSurface) - } else Color.BLACK, + } else { + Color.BLACK + }, if (binding.root.rootWindowInsetsCompat?.hasSideNavBar() == true) { 255 } else { @@ -1898,10 +1914,14 @@ class ReaderActivity : BaseRxActivity() { } private fun setLayerPaint(grayscale: Boolean, invertedColors: Boolean) { - val paint = if (grayscale || invertedColors) getCombinedPaint( - grayscale, - invertedColors, - ) else null + val paint = if (grayscale || invertedColors) { + getCombinedPaint( + grayscale, + invertedColors, + ) + } else { + null + } binding.viewerContainer.setLayerType(View.LAYER_TYPE_HARDWARE, paint) } } 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 58cc6b5a53..d9a9b211c0 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 @@ -353,7 +353,6 @@ class ReaderPresenter( val networkManga = it.sManga!! val chapters = it.sChapters - tempManga.copyFrom(networkManga) tempManga.title = networkManga.title diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/chapter/ReaderChapterItem.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/chapter/ReaderChapterItem.kt index 53183842d0..9de134785f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/chapter/ReaderChapterItem.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/chapter/ReaderChapterItem.kt @@ -46,15 +46,21 @@ class ReaderChapterItem(val chapter: Chapter, val manga: Manga, val isCurrent: B val chapterColor = ChapterUtil.chapterColor(itemView.context, item.chapter) - val typeface = if (item.isCurrent) ResourcesCompat.getFont( - itemView.context, - R.font.montserrat_black, - ) else null + val typeface = if (item.isCurrent) { + ResourcesCompat.getFont( + itemView.context, + R.font.montserrat_black, + ) + } else { + null + } binding.chapterTitle.text = if (manga.hideChapterTitle(item.preferences)) { val number = item.decimalFormat.format(item.chapter_number.toDouble()) itemView.context.getString(R.string.chapter_, number) - } else item.name + } else { + item.name + } val statuses = mutableListOf() ChapterUtil.relativeDate(item)?.let { statuses.add(it) } @@ -85,8 +91,11 @@ class ReaderChapterItem(val chapter: Chapter, val manga: Manga, val isCurrent: B binding.chapterLanguage.setTextColor(chapterColor) binding.bookmarkImage.setImageResource( - if (item.bookmark) R.drawable.ic_bookmark_24dp - else R.drawable.ic_bookmark_border_24dp, + if (item.bookmark) { + R.drawable.ic_bookmark_24dp + } else { + R.drawable.ic_bookmark_border_24dp + }, ) val drawableColor = ChapterUtil.bookmarkColor(itemView.context, item) 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 5ab96084ab..b4cf0d5a68 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 @@ -60,7 +60,9 @@ class ReaderChapterSheet @JvmOverloads constructor(context: Context, attrs: Attr val navPrimary = ColorUtils.setAlphaComponent( if (hasLightNav) { fullPrimary - } else Color.BLACK, + } else { + Color.BLACK + }, 200, ) sheetBehavior = BottomSheetBehavior.from(this) @@ -181,22 +183,26 @@ class ReaderChapterSheet @JvmOverloads constructor(context: Context, attrs: Attr ) backgroundTintList = ColorStateList.valueOf( - if (!sheetBehavior.isExpanded()) primary - else fullPrimary, + if (!sheetBehavior.isExpanded()) { + primary + } else { + fullPrimary + }, ) - binding.chapterRecycler.addOnScrollListener(object : RecyclerView.OnScrollListener() { - override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) { - super.onScrollStateChanged(recyclerView, newState) - if (newState == RecyclerView.SCROLL_STATE_IDLE || - newState == RecyclerView.SCROLL_STATE_SETTLING - ) { - sheetBehavior?.isDraggable = true - } else { - sheetBehavior?.isDraggable = !recyclerView.canScrollVertically(-1) + binding.chapterRecycler.addOnScrollListener( + object : RecyclerView.OnScrollListener() { + override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) { + super.onScrollStateChanged(recyclerView, newState) + if (newState == RecyclerView.SCROLL_STATE_IDLE || + newState == RecyclerView.SCROLL_STATE_SETTLING + ) { + sheetBehavior?.isDraggable = true + } else { + sheetBehavior?.isDraggable = !recyclerView.canScrollVertically(-1) + } } - } - }, + }, ) binding.chapterRecycler.layoutManager = LinearLayoutManager(context) 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 dec4e64041..3e5cc0e245 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 @@ -52,7 +52,9 @@ class DownloadPageLoader( } } ZipFile(tmpFile.absolutePath) - } else ZipFile(chapterPath.filePath) + } else { + ZipFile(chapterPath.filePath) + } return zip.entries().toList() .filter { !it.isDirectory && ImageUtil.isImage(it.name) { zip.getInputStream(it) } } .sortedWith { f1, f2 -> f1.name.compareToCaseInsensitiveNaturalOrder(f2.name) } 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 3613d0c9c2..a570d4c1ba 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 @@ -173,7 +173,9 @@ class HttpPageLoader( .mapNotNull { if (it.status == Page.QUEUE) { PriorityPage(it, 0).apply { queue.offer(this) } - } else null + } else { + null + } } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/ReaderChapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/ReaderChapter.kt index 73d084d078..ddf3a0d820 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/ReaderChapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/ReaderChapter.kt @@ -11,9 +11,9 @@ data class ReaderChapter(val chapter: Chapter) { var state: State = State.Wait set(value) { - field = value - stateRelay.call(value) - } + field = value + stateRelay.call(value) + } private val stateRelay by lazy { BehaviorRelay.create(state) } @@ -50,7 +50,7 @@ data class ReaderChapter(val chapter: Chapter) { } override fun equals(other: Any?): Boolean { - return (other is ReaderChapter) && (other as ReaderChapter).urlAndName() == this.urlAndName() + return (other is ReaderChapter) && other.urlAndName() == this.urlAndName() } override fun hashCode(): Int { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/settings/PageLayout.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/settings/PageLayout.kt index af5a5a62b5..8fc0a05054 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/settings/PageLayout.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/settings/PageLayout.kt @@ -12,7 +12,8 @@ enum class PageLayout( SINGLE_PAGE(0, 0, R.string.single_page), DOUBLE_PAGES(1, 2, R.string.double_pages), AUTOMATIC(2, 3, R.string.automatic, R.string.automatic_orientation), - SPLIT_PAGES(3, 1, R.string.split_double_pages) + SPLIT_PAGES(3, 1, R.string.split_double_pages), + ; @StringRes diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/settings/ReaderBottomButton.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/settings/ReaderBottomButton.kt index 3bb162f743..ee30ece63d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/settings/ReaderBottomButton.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/settings/ReaderBottomButton.kt @@ -12,7 +12,8 @@ enum class ReaderBottomButton(val value: String, @StringRes val stringRes: Int) CropBordersPaged("cbp", R.string.crop_borders_paged), CropBordersWebtoon("cbw", R.string.crop_borders_webtoon), PageLayout("pl", R.string.page_layout), - ShiftDoublePage("sdp", R.string.shift_double_pages) + ShiftDoublePage("sdp", R.string.shift_double_pages), + ; fun isIn(buttons: Collection) = value in buttons diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/settings/TabbedReaderSettingsSheet.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/settings/TabbedReaderSettingsSheet.kt index c86998056e..dfe55aae61 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/settings/TabbedReaderSettingsSheet.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/settings/TabbedReaderSettingsSheet.kt @@ -101,38 +101,39 @@ class TabbedReaderSettingsSheet( val attrs = window?.attributes val filterTabIndex = getTabViews().indexOf(filterView) binding.pager.adapter?.notifyDataSetChanged() - binding.tabs.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { - override fun onTabSelected(tab: TabLayout.Tab?) { - val isFilterTab = tab?.position == filterTabIndex - - // Remove dimmed backdrop so color filter changes can be previewed - backgroundDimAnimator.run { - if (isFilterTab) { - if (animatedFraction < 1f) { - start() + binding.tabs.addOnTabSelectedListener( + object : TabLayout.OnTabSelectedListener { + override fun onTabSelected(tab: TabLayout.Tab?) { + val isFilterTab = tab?.position == filterTabIndex + + // Remove dimmed backdrop so color filter changes can be previewed + backgroundDimAnimator.run { + if (isFilterTab) { + if (animatedFraction < 1f) { + start() + } + } else if (animatedFraction > 0f) { + reverse() } - } else if (animatedFraction > 0f) { - reverse() + } + readerActivity.binding.appBar.isInvisible = tab?.position == filterTabIndex + if (tab?.position == 2) { + sheetBehavior.skipCollapsed = false + sheetBehavior.peekHeight = 110.dpToPx + filterView.setWindowBrightness() + } else { + sheetBehavior.expand() + sheetBehavior.skipCollapsed = true + window?.attributes = window?.attributes?.apply { screenBrightness = WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE } } } - readerActivity.binding.appBar.isInvisible = tab?.position == filterTabIndex - if (tab?.position == 2) { - sheetBehavior.skipCollapsed = false - sheetBehavior.peekHeight = 110.dpToPx - filterView.setWindowBrightness() - } else { - sheetBehavior.expand() - sheetBehavior.skipCollapsed = true - window?.attributes = window?.attributes?.apply { screenBrightness = WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE } - } - } - override fun onTabUnselected(tab: TabLayout.Tab?) { - } + override fun onTabUnselected(tab: TabLayout.Tab?) { + } - override fun onTabReselected(tab: TabLayout.Tab?) { - } - }, + override fun onTabReselected(tab: TabLayout.Tab?) { + } + }, ) if (showColorFilterSettings) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ViewerNavigation.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ViewerNavigation.kt index 0a705a098e..3ca5761f11 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ViewerNavigation.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ViewerNavigation.kt @@ -17,7 +17,9 @@ abstract class ViewerNavigation { fun directionalRegion(LTR: Boolean): NavigationRegion { return if (this === LEFT || this === RIGHT) { if (if (LTR) this === RIGHT else this === LEFT) NEXT else PREV - } else this + } else { + this + } } } @@ -55,7 +57,7 @@ abstract class ViewerNavigation { NONE, HORIZONTAL(shouldInvertHorizontal = true), VERTICAL(shouldInvertVertical = true), - BOTH(shouldInvertHorizontal = true, shouldInvertVertical = true) + BOTH(shouldInvertHorizontal = true, shouldInvertVertical = true), } } 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 d30ea87de9..fbe3cfb773 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 @@ -48,7 +48,6 @@ import rx.Observable 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 @@ -131,8 +130,11 @@ class PagerPageHolder( ) progressBar.foregroundTintList = ColorStateList.valueOf( context.getResourceColor( - if (isInvertedFromTheme()) R.attr.colorPrimaryInverse - else R.attr.colorPrimary, + if (isInvertedFromTheme()) { + R.attr.colorPrimaryInverse + } else { + R.attr.colorPrimary + }, ), ) } @@ -274,10 +276,14 @@ class PagerPageHolder( ZoomType.Center -> center.also { it?.y = 0F } } - val topInsets = if (viewer.activity.isSplitScreen) 0f else { + val topInsets = if (viewer.activity.isSplitScreen) { + 0f + } else { viewer.activity.window.decorView.rootWindowInsets.topCutoutInset().toFloat() } - val bottomInsets = if (viewer.activity.isSplitScreen) 0f else { + val bottomInsets = if (viewer.activity.isSplitScreen) { + 0f + } else { viewer.activity.window.decorView.rootWindowInsets.bottomCutoutInset().toFloat() } val targetScale = (height.toFloat() - topInsets - bottomInsets) / sHeight.toFloat() @@ -863,7 +869,9 @@ class PagerPageHolder( fun getBGType(readerTheme: Int, context: Context): Int { return if (readerTheme == 3) { if (context.isInNightMode()) 2 else 1 - } else 0 + (context.resources.configuration?.orientation ?: 0) * 10 + } else { + 0 + (context.resources.configuration?.orientation ?: 0) * 10 + } } } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewerAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewerAdapter.kt index d9c89587be..24c1e8c8f6 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewerAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewerAdapter.kt @@ -265,9 +265,13 @@ class PagerViewerAdapter(private val viewer: PagerViewer) : ViewPagerAdapter() { val fullPageBeforeIndex = max( 0, ( - if (index > -1) ( - items.take(index).indexOfLast { it?.fullPage == true } - ) else -1 + if (index > -1) { + ( + items.take(index).indexOfLast { it?.fullPage == true } + ) + } else { + -1 + } ), ) // Add a shifted page to the first place there isnt a full page @@ -315,7 +319,9 @@ class PagerViewerAdapter(private val viewer: PagerViewer) : ViewPagerAdapter() { if (lastPage == null || ( if (it is ChapterTransition.Next) { it.from.chapter.id == lastPage.chapter.chapter.id - } else true + } else { + true + } ) ) { subJoinedItems.add(Pair(it, null)) 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 d5dfbf97a8..471c422107 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 @@ -277,8 +277,11 @@ class WebtoonPageHolder( zoomDuration = viewer.config.doubleTapAnimDuration, minimumScaleType = SubsamplingScaleImageView.SCALE_TYPE_FIT_WIDTH, cropBorders = - if (viewer.hasMargins) viewer.config.verticalCropBorders - else viewer.config.webtoonCropBorders, + if (viewer.hasMargins) { + viewer.config.verticalCropBorders + } else { + viewer.config.webtoonCropBorders + }, ), ) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaHolder.kt index 61112dfd46..1d992fc003 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaHolder.kt @@ -98,7 +98,9 @@ class RecentMangaHolder( val chapterName = if (item.mch.manga.hideChapterTitle(adapter.preferences)) { val number = adapter.decimalFormat.format(item.chapter.chapter_number.toDouble()) itemView.context.getString(R.string.chapter_, number) - } else item.chapter.name + } else { + item.chapter.name + } binding.title.apply { text = if (!showTitleFirst) { chapterName @@ -186,9 +188,11 @@ class RecentMangaHolder( } private fun resetFrontView() { - if (binding.frontView.translationX != 0f) itemView.post { - androidx.transition.TransitionManager.endTransitions(adapter.recyclerView) - adapter.notifyItemChanged(flexibleAdapterPosition) + if (binding.frontView.translationX != 0f) { + itemView.post { + androidx.transition.TransitionManager.endTransitions(adapter.recyclerView) + adapter.notifyItemChanged(flexibleAdapterPosition) + } } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaItem.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaItem.kt index 0c4063d4d3..f10e152367 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaItem.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaItem.kt @@ -20,16 +20,22 @@ class RecentMangaItem( BaseChapterItem>(chapter, header) { override fun getLayoutRes(): Int { - return if (mch.manga.id == null) R.layout.recents_footer_item - else R.layout.recent_manga_item + return if (mch.manga.id == null) { + R.layout.recents_footer_item + } else { + R.layout.recent_manga_item + } } override fun createViewHolder( view: View, adapter: FlexibleAdapter>, ): BaseChapterHolder { - return if (mch.manga.id == null) RecentMangaFooterHolder(view, adapter as RecentMangaAdapter) - else RecentMangaHolder(view, adapter as RecentMangaAdapter) + return if (mch.manga.id == null) { + RecentMangaFooterHolder(view, adapter as RecentMangaAdapter) + } else { + RecentMangaHolder(view, adapter as RecentMangaAdapter) + } } override fun isSwipeable(): Boolean { @@ -39,16 +45,22 @@ class RecentMangaItem( override fun equals(other: Any?): Boolean { if (this === other) return true if (other is RecentMangaItem) { - return if (mch.manga.id == null) (header as? RecentMangaHeaderItem)?.recentsType == - (other.header as? RecentMangaHeaderItem)?.recentsType - else chapter.id == other.chapter.id + return if (mch.manga.id == null) { + (header as? RecentMangaHeaderItem)?.recentsType == + (other.header as? RecentMangaHeaderItem)?.recentsType + } else { + chapter.id == other.chapter.id + } } return false } override fun hashCode(): Int { - return if (mch.manga.id == null) -((header as? RecentMangaHeaderItem)?.recentsType ?: 0).hashCode() - else (chapter.id ?: 0L).hashCode() + return if (mch.manga.id == null) { + -((header as? RecentMangaHeaderItem)?.recentsType ?: 0).hashCode() + } else { + (chapter.id ?: 0L).hashCode() + } } override fun bindViewHolder( @@ -57,7 +69,8 @@ class RecentMangaItem( position: Int, payloads: MutableList?, ) { - if (mch.manga.id == null) (holder as? RecentMangaFooterHolder)?.bind((header as? RecentMangaHeaderItem)?.recentsType ?: 0) - else if (chapter.id != null) (holder as? RecentMangaHolder)?.bind(this) + if (mch.manga.id == null) { + (holder as? RecentMangaFooterHolder)?.bind((header as? RecentMangaHeaderItem)?.recentsType ?: 0) + } else if (chapter.id != null) (holder as? RecentMangaHolder)?.bind(this) } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsController.kt index 37542b39fa..0c6c7ce50a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsController.kt @@ -526,13 +526,19 @@ class RecentsController(bundle: Bundle? = null) : } if (recents.isEmpty()) { binding.recentsEmptyView.show( - if (!isSearching()) R.drawable.ic_history_off_24dp - else R.drawable.ic_search_off_24dp, - if (isSearching()) R.string.no_results_found - else when (presenter.viewType) { - RecentsPresenter.VIEW_TYPE_ONLY_UPDATES -> R.string.no_recent_chapters - RecentsPresenter.VIEW_TYPE_ONLY_HISTORY -> R.string.no_recently_read_manga - else -> R.string.no_recent_read_updated_manga + if (!isSearching()) { + R.drawable.ic_history_off_24dp + } else { + R.drawable.ic_search_off_24dp + }, + if (isSearching()) { + R.string.no_results_found + } else { + when (presenter.viewType) { + RecentsPresenter.VIEW_TYPE_ONLY_UPDATES -> R.string.no_recent_chapters + RecentsPresenter.VIEW_TYPE_ONLY_HISTORY -> R.string.no_recently_read_manga + else -> R.string.no_recent_read_updated_manga + } }, ) } else { @@ -585,8 +591,11 @@ class RecentsController(bundle: Bundle? = null) : if (item.status != Download.State.NOT_DOWNLOADED && item.status != Download.State.ERROR) { presenter.deleteChapter(chapter, manga) } else { - if (item.status == Download.State.ERROR) DownloadService.start(view.context) - else presenter.downloadChapter(manga, chapter) + if (item.status == Download.State.ERROR) { + DownloadService.start(view.context) + } else { + presenter.downloadChapter(manga, chapter) + } } } @@ -684,8 +693,11 @@ class RecentsController(bundle: Bundle? = null) : val wasRead = chapter.read presenter.markChapterRead(chapter, !wasRead) snack = view?.snack( - if (wasRead) R.string.marked_as_unread - else R.string.marked_as_read, + if (wasRead) { + R.string.marked_as_unread + } else { + R.string.marked_as_read + }, Snackbar.LENGTH_INDEFINITE, ) { anchorView = activityBinding?.bottomNav @@ -704,7 +716,6 @@ class RecentsController(bundle: Bundle? = null) : presenter.deleteChapter(chapter, manga) } updateTrackChapterMarkedAsRead(db, preferences, chapter, manga.id) { - } } } @@ -814,8 +825,11 @@ class RecentsController(bundle: Bundle? = null) : } override fun toggleSheet() { - if (showingDownloads) binding.downloadBottomSheet.dlBottomSheet.dismiss() - else binding.downloadBottomSheet.dlBottomSheet.sheetBehavior?.expand() + if (showingDownloads) { + binding.downloadBottomSheet.dlBottomSheet.dismiss() + } else { + binding.downloadBottomSheet.dlBottomSheet.sheetBehavior?.expand() + } } override fun expandSearch() { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsPresenter.kt index 6057583e8c..b1675032a9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsPresenter.kt @@ -220,7 +220,9 @@ class RecentsPresenter( } else { recentItems.none { mch.chapter.id == it.mch.chapter.id } } - } else true + } else { + true + } } val pairs = mangaList.mapNotNull { val chapter = when { @@ -242,9 +244,14 @@ class RecentsPresenter( } if (chapter == null) if ((query.isNotEmpty() || viewType > VIEW_TYPE_UNGROUP_ALL) && it.chapter.id != null - ) Pair(it, it.chapter) - else null - else Pair(it, chapter) + ) { + Pair(it, it.chapter) + } else { + null + } + else { + Pair(it, chapter) + } } val newItems = if (query.isEmpty() && !isUngrouped) { val nChaptersItems = @@ -302,7 +309,9 @@ class RecentsPresenter( if (preferences.sortFetchedTime().get()) item.date_fetch else item.date_upload } } - } else pairs.map { RecentMangaItem(it.first, it.second, null) } + } else { + pairs.map { RecentMangaItem(it.first, it.second, null) } + } } if (customViewType == null) { recentItems = if (isOnFirstPage || !updatePageCount) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RemoveHistoryDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RemoveHistoryDialog.kt index b175f96e28..b9f6eecbad 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RemoveHistoryDialog.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RemoveHistoryDialog.kt @@ -35,11 +35,14 @@ class RemoveHistoryDialog(bundle: Bundle? = null) : DialogController(bundle) return activity.materialAlertDialog() .setCustomTitleAndMessage( R.string.reset_chapter_question, - if (chapter?.name != null) activity.getString( - R.string.this_will_remove_the_read_date_for_x_question, - chapter?.name ?: "", - ) - else activity.getString(R.string.this_will_remove_the_read_date_question), + if (chapter?.name != null) { + activity.getString( + R.string.this_will_remove_the_read_date_for_x_question, + chapter?.name ?: "", + ) + } else { + activity.getString(R.string.this_will_remove_the_read_date_question) + }, ) .addCheckBoxPrompt( activity.getString( diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/security/BiometricActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/security/BiometricActivity.kt index a03608649f..723f7c3817 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/security/BiometricActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/security/BiometricActivity.kt @@ -26,8 +26,11 @@ class BiometricActivity : BaseThemedActivity() { override fun onAuthenticationError(errorCode: Int, errString: CharSequence) { super.onAuthenticationError(errorCode, errString) AuthenticatorUtil.isAuthenticating = false - if (fromSearch) finish() - else finishAffinity() + if (fromSearch) { + finish() + } else { + finishAffinity() + } } override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/PreferenceDSL.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/PreferenceDSL.kt index 3b0487f5c4..77c6f396db 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/PreferenceDSL.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/PreferenceDSL.kt @@ -59,8 +59,7 @@ inline fun PreferenceGroup.editTextPreference(block: (@DSL EditTextPreference).( return initThenAdd(EditTextPreference(context), block).also(::initDialog) } -inline fun PreferenceGroup.dropDownPreference(block: (@DSL DropDownPreference).() -> Unit): - DropDownPreference { +inline fun PreferenceGroup.dropDownPreference(block: (@DSL DropDownPreference).() -> Unit): DropDownPreference { return initThenAdd(DropDownPreference(context), block).also(::initDialog) } @@ -68,16 +67,14 @@ inline fun PreferenceGroup.listPreference( activity: Activity?, block: (@DSL ListMatPreference).() -> Unit, -): - ListMatPreference { +): ListMatPreference { return initThenAdd(ListMatPreference(activity, context), block) } inline fun PreferenceGroup.intListPreference( activity: Activity?, block: (@DSL IntListMatPreference).() -> Unit, -): - IntListMatPreference { +): IntListMatPreference { return initThenAdd(IntListMatPreference(activity, context), block) } 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 0252924e4f..6809a2fea8 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 @@ -105,21 +105,23 @@ class SettingsAdvancedController : SettingsController() { } val pm = context.getSystemService(Context.POWER_SERVICE) as? PowerManager? - if (pm != null) preference { - key = "disable_batt_opt" - titleRes = R.string.disable_battery_optimization - summaryRes = R.string.disable_if_issues_with_updating + if (pm != null) { + preference { + key = "disable_batt_opt" + titleRes = R.string.disable_battery_optimization + summaryRes = R.string.disable_if_issues_with_updating - onClick { - val packageName: String = context.packageName - if (!pm.isIgnoringBatteryOptimizations(packageName)) { - val intent = Intent().apply { - action = Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS - data = "package:$packageName".toUri() + onClick { + val packageName: String = context.packageName + if (!pm.isIgnoringBatteryOptimizations(packageName)) { + val intent = Intent().apply { + action = Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS + data = "package:$packageName".toUri() + } + startActivity(intent) + } else { + context.toast(R.string.battery_optimization_disabled) } - startActivity(intent) - } else { - context.toast(R.string.battery_optimization_disabled) } } } @@ -279,8 +281,8 @@ class SettingsAdvancedController : SettingsController() { context.getString(R.string.log_level_summary) + "\nCurrent Level: " + XLogLevel.values()[prefs.logLevel()] entries = XLogLevel.values().map { "${ - it.name.lowercase(Locale.ENGLISH) - .replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.ENGLISH) else it.toString() } + it.name.lowercase(Locale.ENGLISH) + .replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.ENGLISH) else it.toString() } } (${it.description})" } entryValues = XLogLevel.values().indices.toList() @@ -420,12 +422,15 @@ class SettingsAdvancedController : SettingsController() { launchUI { val activity = activity ?: return@launchUI val cleanupString = - if (foldersCleared == 0) activity.getString(R.string.no_folders_to_cleanup) - else resources!!.getQuantityString( - R.plurals.cleanup_done, - foldersCleared, - foldersCleared, - ) + if (foldersCleared == 0) { + activity.getString(R.string.no_folders_to_cleanup) + } else { + resources!!.getQuantityString( + R.plurals.cleanup_done, + foldersCleared, + foldersCleared, + ) + } activity.toast(cleanupString, Toast.LENGTH_LONG) } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAppearanceController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAppearanceController.kt index 0fd27c6207..7ea8fbd7d7 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAppearanceController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAppearanceController.kt @@ -59,7 +59,6 @@ class SettingsAppearanceController : SettingsController() { isChecked = mode == AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM }.launchIn(viewScope) } - } preferenceCategory { 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 94c69d42a0..e0ce680697 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 @@ -269,14 +269,13 @@ class SettingsBackupController : SettingsController() { var message = activity.getString(R.string.restore_neko) - if (results.missingMangaDexEntries) { message += "\n\nNo MangaDex manga found in the backup." } if (results.missingTrackers.isNotEmpty()) { message += "\n\n${activity.getString(R.string.restore_missing_trackers)}\n${ - results.missingTrackers.joinToString("\n") { "- $it" } + results.missingTrackers.joinToString("\n") { "- $it" } }" } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsController.kt index c4d1c9e767..c4e1b7141a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsController.kt @@ -118,7 +118,9 @@ abstract class SettingsController : PreferenceController() { open fun getSearchTitle(): String? { return if (this is FloatingSearchInterface) { searchTitle(preferenceScreen?.title?.toString()?.lowercase(Locale.ROOT)) - } else null + } else { + null + } } fun setTitle() { 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 1c7f43c10b..5dc48ae340 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 @@ -75,12 +75,14 @@ class SettingsLibraryController : SettingsController() { isPersistent = false val catCount = db.getCategories().executeAsBlocking().size titleRes = if (catCount > 0) R.string.edit_categories else R.string.add_categories - if (catCount > 0) summary = - context.resources.getQuantityString( - R.plurals.category_plural, - catCount, - catCount, - ) + if (catCount > 0) { + summary = + context.resources.getQuantityString( + R.plurals.category_plural, + catCount, + catCount, + ) + } onClick { router.pushController(CategoryController().withFadeTransaction()) } } intListPreference(activity) { 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 6a6d58c0bd..f7280675e6 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 @@ -295,11 +295,10 @@ class SettingsReaderController : SettingsController() { R.string.double_page_gap_60, R.string.double_page_gap_70, - ) + ) entryValues = listOf(0, 10, 20, 30, 40, 50, 60, 70) defaultValue = "0" } - } preferenceCategory { titleRes = R.string.webtoon diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsSiteController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsSiteController.kt index fa369f8c09..02d99796da 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsSiteController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsSiteController.kt @@ -73,7 +73,10 @@ class SettingsSiteController : R.string.content_rating_pornographic, ) entryValues = listOf( - MdConstants.ContentRating.safe, MdConstants.ContentRating.suggestive, MdConstants.ContentRating.erotica, MdConstants.ContentRating.pornographic, + MdConstants.ContentRating.safe, + MdConstants.ContentRating.suggestive, + MdConstants.ContentRating.erotica, + MdConstants.ContentRating.pornographic, ) defValue = setOf(MdConstants.ContentRating.safe, MdConstants.ContentRating.suggestive) @@ -161,7 +164,6 @@ class SettingsSiteController : StatusSyncJob.doWorkNow(context, StatusSyncJob.entireLibraryToDex) } } - switchPreference { key = PreferenceKeys.addToLibraryAsPlannedToRead 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 daaf60a2aa..b93e7cc988 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 @@ -51,7 +51,10 @@ class SettingsTrackingController : R.string.content_rating_pornographic, ) entryValues = listOf( - MdConstants.ContentRating.safe, MdConstants.ContentRating.suggestive, MdConstants.ContentRating.erotica, MdConstants.ContentRating.pornographic, + MdConstants.ContentRating.safe, + MdConstants.ContentRating.suggestive, + MdConstants.ContentRating.erotica, + MdConstants.ContentRating.pornographic, ) defValue = setOf(MdConstants.ContentRating.safe, MdConstants.ContentRating.suggestive, MdConstants.ContentRating.erotica, MdConstants.ContentRating.pornographic) @@ -81,7 +84,6 @@ class SettingsTrackingController : this.onPreferenceChangeListener = Preference.OnPreferenceChangeListener { _, newValue -> updateAutoAddTracker(newValue as Boolean, TrackManager.MYANIMELIST) } - } trackPreference(trackManager.aniList) { activity?.openInBrowser(AnilistApi.authUrl()) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/ThemePreference.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/ThemePreference.kt index 504a47e2ad..1fb8535cb5 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/ThemePreference.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/ThemePreference.kt @@ -89,14 +89,14 @@ class ThemePreference @JvmOverloads constructor(context: Context, attrs: Attribu if (!selected) { preferences.nightMode().set(nightMode) } else if (preferences.nightMode() - .get() != AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM + .get() != AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM ) { preferences.nightMode().set(nightMode) } if (( - preferences.nightMode().get() == AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM && - nightMode != context.appDelegateNightMode() - ) || + preferences.nightMode().get() == AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM && + nightMode != context.appDelegateNightMode() + ) || (!selected && nightMode == context.appDelegateNightMode()) ) { fastAdapterLight.notifyDataSetChanged() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/similar/SimilarController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/similar/SimilarController.kt index 5f18816e5f..a09c040768 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/similar/SimilarController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/similar/SimilarController.kt @@ -34,4 +34,3 @@ class SimilarController(mangaUUID: String) : BaseComposeController) { for (filter in sourceFilter.state) { if (filter is Filter<*> && - if (useContains) filter.name.contains(genreName, true) - else filter.name.equals(genreName, true) + if (useContains) { + filter.name.contains(genreName, true) + } else { + filter.name.equals(genreName, true) + } ) { when (filter) { is Filter.TriState -> filter.state = 1 @@ -430,8 +433,11 @@ open class BrowseSourceController(bundle: Bundle) : } else if (sourceFilter is Filter.Select<*>) { val index = sourceFilter.values.filterIsInstance() .indexOfFirst { - if (useContains) it.contains(genreName, true) - else it.equals(genreName, true) + if (useContains) { + it.contains(genreName, true) + } else { + it.equals(genreName, true) + } } if (index != -1) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/BrowseSourcePresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/BrowseSourcePresenter.kt index a4beb192c0..19cb4e3389 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/BrowseSourcePresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/BrowseSourcePresenter.kt @@ -48,7 +48,6 @@ import org.nekomanga.domain.network.ResultError import rx.Subscription import rx.android.schedulers.AndroidSchedulers import rx.schedulers.Schedulers - import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/SourceFilterSheet.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/SourceFilterSheet.kt index 9024b39ee6..1083d82c76 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/SourceFilterSheet.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/source/browse/SourceFilterSheet.kt @@ -79,7 +79,8 @@ class SourceFilterSheet(val activity: Activity) : setCardViewMax(insets) } - (binding.root.parent.parent as? View)?.viewTreeObserver?.addOnGlobalLayoutListener(object : + (binding.root.parent.parent as? View)?.viewTreeObserver?.addOnGlobalLayoutListener( + object : OnGlobalLayoutListener { override fun onGlobalLayout() { updateBottomButtons() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/source/latest/LatestPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/source/latest/LatestPresenter.kt index 2ab0dc48de..f11a64042e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/source/latest/LatestPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/source/latest/LatestPresenter.kt @@ -84,7 +84,6 @@ class LatestPresenter( ) } } - } presenterScope.launch { preferences.browseAsList().asFlow().collectLatest { @@ -116,7 +115,6 @@ class LatestPresenter( updateDisplayManga(mangaId, editManga.favorite) if (editManga.favorite) { - val defaultCategory = preferences.defaultCategory() if (categoryItems.isEmpty() && defaultCategory != -1) { @@ -165,4 +163,3 @@ class LatestPresenter( preferences.browseAsList().set(!latestScreenState.value.isList) } } - diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/webview/BaseWebViewActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/webview/BaseWebViewActivity.kt index 98fee48bb0..e6f9db43e2 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/webview/BaseWebViewActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/webview/BaseWebViewActivity.kt @@ -212,8 +212,11 @@ open class BaseWebViewActivity : BaseActivity() { window.statusBarColor = ColorUtils.setAlphaComponent(colorSurface, 255) binding.toolbar.setBackgroundColor(colorSurface) binding.toolbar.popupTheme = - if (lightMode) R.style.ThemeOverlay_Material3 - else R.style.ThemeOverlay_Material3_Dark + if (lightMode) { + R.style.ThemeOverlay_Material3 + } else { + R.style.ThemeOverlay_Material3_Dark + } binding.toolbar.setNavigationIconTint(actionBarTintColor) binding.toolbar.overflowIcon?.mutate() binding.toolbar.setTitleTextColor(actionBarTintColor) @@ -222,8 +225,11 @@ open class BaseWebViewActivity : BaseActivity() { binding.swipeRefresh.setProgressBackgroundColorSchemeColor(colorPrimaryVariant) window.navigationBarColor = - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O || !lightMode) colorPrimaryVariant - else Color.BLACK + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O || !lightMode) { + colorPrimaryVariant + } else { + Color.BLACK + } WindowCompat.setDecorFitsSystemWindows(window, false) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/ApiResponseExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/ApiResponseExtensions.kt index 24ea85fd26..0f6f73bb77 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/ApiResponseExtensions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/ApiResponseExtensions.kt @@ -58,7 +58,6 @@ fun ApiResponse.getOrResultError(errorType: String): Result.toResultError(errorType: String): ResultError { - XLog.enableStackTrace(10).e("Exception $errorType ${this.message}", this.exception) return ResultError.Generic(errorString = "Unknown Error: '${this.message}'") diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/ChapterExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/ChapterExtensions.kt index 403f0ae7ec..8a176f6350 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/ChapterExtensions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/ChapterExtensions.kt @@ -8,10 +8,9 @@ import kotlin.math.floor * Calculate the missing chapters for a given list of chapters. Return null if none are missing */ fun List.getMissingChapterCount(mangaStatus: Int): String? { - //if (mangaStatus == SManga.COMPLETED) return null + // if (mangaStatus == SManga.COMPLETED) return null var count = 0 if (this.isNotEmpty()) { - val chapterNumberArray = this.asSequence().distinctBy { if (it.chapter_txt.isNotEmpty()) { it.vol + it.chapter_txt @@ -21,9 +20,7 @@ fun List.getMissingChapterCount(mangaStatus: Int): String? { }.sortedBy { it.chapter_number } .map { floor(it.chapter_number).toInt() }.toList().toIntArray() - if (chapterNumberArray.isNotEmpty()) { - if (chapterNumberArray.first() > 1) { while (count != (chapterNumberArray[0] - 1)) { count++ @@ -38,7 +35,6 @@ fun List.getMissingChapterCount(mangaStatus: Int): String? { if (lastIndex >= 0 && (chpNum - 1) > chapterNumberArray[lastIndex]) { count += (chpNum - chapterNumberArray[lastIndex]) - 1 } - } } } @@ -52,10 +48,9 @@ fun List.getMissingChapterCount(mangaStatus: Int): String? { * Calculate the missing chapters for a given list of chapters. Return null if none are missing */ fun List.getMissingCount(mangaStatus: Int): String? { - //if (mangaStatus == SManga.COMPLETED) return null + // if (mangaStatus == SManga.COMPLETED) return null var count = 0 if (this.isNotEmpty()) { - val chapterNumberArray = this.asSequence().map { it.chapter }.distinctBy { if (it.chapterText.isNotEmpty()) { it.volume + it.chapterText @@ -66,7 +61,6 @@ fun List.getMissingCount(mangaStatus: Int): String? { .map { floor(it.chapterNumber).toInt() }.toList().toIntArray() if (chapterNumberArray.isNotEmpty()) { - if (chapterNumberArray.first() > 1) { while (count != (chapterNumberArray[0] - 1)) { count++ @@ -81,7 +75,6 @@ fun List.getMissingCount(mangaStatus: Int): String? { if (lastIndex >= 0 && (chpNum - 1) > chapterNumberArray[lastIndex]) { count += (chpNum - chapterNumberArray[lastIndex]) - 1 } - } } } 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 07c2770522..0be84d0001 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 @@ -208,7 +208,9 @@ fun syncChaptersWithSource( if (toAdd.isNotEmpty()) { manga.last_update = Date().time } - } else manga.last_update = dateFetch + } else { + manga.last_update = dateFetch + } db.updateLastUpdated(manga).executeAsBlocking() } diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterTrackSync.kt b/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterTrackSync.kt index e82ef18451..66e4cf38c7 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterTrackSync.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterTrackSync.kt @@ -12,7 +12,6 @@ import eu.kanade.tachiyomi.util.system.isOnline import eu.kanade.tachiyomi.util.system.launchIO import kotlinx.coroutines.Job import kotlinx.coroutines.delay - import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get 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 5e6fd0b6eb..0f1264df35 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 @@ -107,7 +107,9 @@ fun String.capitalized(): String { return this.replaceFirstChar { if (it.isLowerCase()) { it.titlecase(Locale.US) - } else it.toString() + } else { + it.toString() + } } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/log/CrashlyticsPrinter.kt b/app/src/main/java/eu/kanade/tachiyomi/util/log/CrashlyticsPrinter.kt index 9832712d6b..2902269183 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/log/CrashlyticsPrinter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/log/CrashlyticsPrinter.kt @@ -13,7 +13,6 @@ class CrashlyticsPrinter(private val logLevel: Int) : Printer { * @param msg the msg of log */ override fun println(logLevel: Int, tag: String?, msg: String?) { - if (logLevel >= this.logLevel && msg != null) { try { FirebaseCrashlytics.getInstance().log(msg) diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/log/XLogLevel.kt b/app/src/main/java/eu/kanade/tachiyomi/util/log/XLogLevel.kt index d434581116..1f15298cd6 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/log/XLogLevel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/log/XLogLevel.kt @@ -8,7 +8,8 @@ import eu.kanade.tachiyomi.data.preference.PreferenceKeys enum class XLogLevel(val description: String) { MINIMAL("critical errors only"), EXTRA("log everything"), - EXTREME("network inspection mode"); + EXTREME("network inspection mode"), + ; companion object { private var curLogLevel: Int? = null diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/manga/MangaShortcutManager.kt b/app/src/main/java/eu/kanade/tachiyomi/util/manga/MangaShortcutManager.kt index 880d242b50..7fe319a37a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/manga/MangaShortcutManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/manga/MangaShortcutManager.kt @@ -78,7 +78,9 @@ class MangaShortcutManager( } else { Icon.createWithBitmap(bitmap) } - else Icon.createWithResource(context, R.drawable.ic_book_24dp), + else { + Icon.createWithResource(context, R.drawable.ic_book_24dp) + }, ) .setIntent( SearchActivity.openMangaIntent(context, item.id, true) 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 7cac2035fa..af9c227d17 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 @@ -138,7 +138,6 @@ class EpubFile(file: File) : Closeable { * Returns all the pages from the epub. */ private fun getPagesFromDocument(document: Document): List { - val pages = document.select("manifest > item") .filter { element -> "application/xhtml+xml" == element.attr("media-type") @@ -146,7 +145,7 @@ class EpubFile(file: File) : Closeable { .associateBy { element -> element.attr("id") } - + val spine = document.select("spine > itemref").map { it.attr("idref") } return spine.mapNotNull { pages[it] }.map { it.attr("href") } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/storage/FileExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/storage/FileExtensions.kt index 8482bd8f6f..6ca1bd6463 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/storage/FileExtensions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/storage/FileExtensions.kt @@ -15,5 +15,7 @@ import java.io.File fun File.getUriCompat(context: Context): Uri { return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".provider", this) - } else Uri.fromFile(this) + } else { + Uri.fromFile(this) + } } 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 1de9b5553e..375d25be2a 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 @@ -392,8 +392,11 @@ fun Context.isInNightMode(): Boolean { } fun Context.appDelegateNightMode(): Int { - return if (isInNightMode()) AppCompatDelegate.MODE_NIGHT_YES - else AppCompatDelegate.MODE_NIGHT_NO + return if (isInNightMode()) { + AppCompatDelegate.MODE_NIGHT_YES + } else { + AppCompatDelegate.MODE_NIGHT_NO + } } fun Context.isOnline(): Boolean { diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/DatabaseExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/DatabaseExtensions.kt index 2fe349ce09..014b2ec87c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/system/DatabaseExtensions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/DatabaseExtensions.kt @@ -20,4 +20,3 @@ suspend fun PreparedDeleteByQuery.executeOnIO() = withContext(Dispatchers.IO) { suspend fun PreparedPutCollectionOfObjects.executeOnIO() = withContext(Dispatchers.IO) { executeAsBlocking() } suspend fun PreparedDeleteCollectionOfObjects.executeOnIO() = withContext(Dispatchers.IO) { executeAsBlocking() } - diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/ImageUtil.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/ImageUtil.kt index 9d6406b5f2..fb79446465 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/system/ImageUtil.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/ImageUtil.kt @@ -76,8 +76,11 @@ object ImageUtil { } else { null } - return if (bitmapResized != null) BitmapDrawable(resources, bitmapResized) - else null + return if (bitmapResized != null) { + BitmapDrawable(resources, bitmapResized) + } else { + null + } } fun getExtensionFromMimeType(mime: String?): String { @@ -107,7 +110,7 @@ object ImageUtil { HEIF("image/heif", "heif"), JPEG("image/jpeg", "jpg"), - //JXL("image/jxl", "jxl"), + // JXL("image/jxl", "jxl"), PNG("image/png", "png"), WEBP("image/webp", "webp"), } @@ -130,7 +133,9 @@ object ImageUtil { } fun autoSetBackground(image: Bitmap?, alwaysUseWhite: Boolean, preferBlack: Boolean, context: Context): Drawable { - val backgroundColor = if (alwaysUseWhite) Color.WHITE else { + val backgroundColor = if (alwaysUseWhite) { + Color.WHITE + } else { val color = context.getResourceColor(R.attr.readerBackground) if (preferBlack && !color.isWhite) { Color.BLACK @@ -280,35 +285,39 @@ object ImageUtil { } val isLandscape = context.resources.configuration?.orientation == Configuration.ORIENTATION_LANDSCAPE if (darkBG) { - return if (!isLandscape && image.getPixel(left, bot).isWhite && image.getPixel(right, bot).isWhite) GradientDrawable( - GradientDrawable.Orientation.TOP_BOTTOM, - intArrayOf(blackPixel, blackPixel, backgroundColor, backgroundColor), - ) - else if (!isLandscape && image.getPixel(left, top).isWhite && image.getPixel(right, top).isWhite) GradientDrawable( - GradientDrawable.Orientation.TOP_BOTTOM, - intArrayOf(backgroundColor, backgroundColor, blackPixel, blackPixel), - ) - else ColorDrawable(blackPixel) + return if (!isLandscape && image.getPixel(left, bot).isWhite && image.getPixel(right, bot).isWhite) { + GradientDrawable( + GradientDrawable.Orientation.TOP_BOTTOM, + intArrayOf(blackPixel, blackPixel, backgroundColor, backgroundColor), + ) + } else if (!isLandscape && image.getPixel(left, top).isWhite && image.getPixel(right, top).isWhite) { + GradientDrawable( + GradientDrawable.Orientation.TOP_BOTTOM, + intArrayOf(backgroundColor, backgroundColor, blackPixel, blackPixel), + ) + } else { + ColorDrawable(blackPixel) + } } if (!isLandscape && ( - topIsBlackStreak || ( - topLeftIsDark && topRightIsDark && - image.getPixel(left - offsetX, top).isDark && image.getPixel(right + offsetX, top).isDark && - (topMidIsDark || overallBlackPixels > 9) - ) + topIsBlackStreak || ( + topLeftIsDark && topRightIsDark && + image.getPixel(left - offsetX, top).isDark && image.getPixel(right + offsetX, top).isDark && + (topMidIsDark || overallBlackPixels > 9) ) + ) ) { return GradientDrawable( GradientDrawable.Orientation.TOP_BOTTOM, intArrayOf(blackPixel, blackPixel, backgroundColor, backgroundColor), ) } else if (!isLandscape && ( - bottomIsBlackStreak || ( - botLeftIsDark && botRightIsDark && - image.getPixel(left - offsetX, bot).isDark && image.getPixel(right + offsetX, bot).isDark && - (image.getPixel(midX, bot).isDark || overallBlackPixels > 9) - ) + bottomIsBlackStreak || ( + botLeftIsDark && botRightIsDark && + image.getPixel(left - offsetX, bot).isDark && image.getPixel(right + offsetX, bot).isDark && + (image.getPixel(midX, bot).isDark || overallBlackPixels > 9) ) + ) ) { return GradientDrawable( GradientDrawable.Orientation.TOP_BOTTOM, diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/PaletteExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/PaletteExtensions.kt index 3f4e114f60..c4c48f3a12 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/system/PaletteExtensions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/PaletteExtensions.kt @@ -3,7 +3,6 @@ package eu.kanade.tachiyomi.util.system import androidx.palette.graphics.Palette fun Palette.getBestColor(): Int? { - val vibPopulation = vibrantSwatch?.population ?: -1 val domLum = dominantSwatch?.hsl?.get(2) ?: -1f @@ -34,5 +33,3 @@ fun Palette.getBestColor(): Int? { } } } - - diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/RxCoroutineBridge.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/RxCoroutineBridge.kt index c9be2d4e55..0321bcf503 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/system/RxCoroutineBridge.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/RxCoroutineBridge.kt @@ -34,11 +34,13 @@ private suspend fun Observable.awaitOne(): T = suspendCancellableCoroutin } override fun onCompleted() { - if (cont.isActive) cont.resumeWithException( - IllegalStateException( - "Should have invoked onNext", - ), - ) + if (cont.isActive) { + cont.resumeWithException( + IllegalStateException( + "Should have invoked onNext", + ), + ) + } } override fun onError(e: Throwable) { @@ -62,7 +64,6 @@ fun runAsObservable( scope: CoroutineScope = GlobalScope, backpressureMode: Emitter.BackpressureMode = Emitter.BackpressureMode.NONE, block: suspend () -> T, - ): Observable { return Observable.create( { emitter -> diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/ThemeUtil.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/ThemeUtil.kt index 71cc26ead4..9ce34a74b9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/system/ThemeUtil.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/ThemeUtil.kt @@ -68,7 +68,11 @@ fun Context.getPrefTheme(preferences: PreferencesHelper): Themes { ( if ((applicationContext.isInNightMode() || preferences.nightMode().get() == AppCompatDelegate.MODE_NIGHT_YES) && preferences.nightMode().get() != AppCompatDelegate.MODE_NIGHT_NO - ) preferences.darkTheme() else preferences.lightTheme() + ) { + preferences.darkTheme() + } else { + preferences.lightTheme() + } ).get() } catch (e: Exception) { ThemeUtil.convertNewThemes(preferences.context) diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/Themes.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/Themes.kt index 53eaa929ae..1cb6e74733 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/system/Themes.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/Themes.kt @@ -74,7 +74,8 @@ enum class Themes( AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM, R.string.lime_time, R.string.flat_lime, - ); + ), + ; val isDarkTheme = nightMode == AppCompatDelegate.MODE_NIGHT_YES val followsSystem = nightMode == AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/WindowInsetsExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/WindowInsetsExtensions.kt index f233840550..71f6a7f68e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/system/WindowInsetsExtensions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/WindowInsetsExtensions.kt @@ -40,8 +40,12 @@ fun WindowInsetsCompat.isImeVisible() = isVisible(WindowInsetsCompat.Type.ime()) fun WindowInsets.topCutoutInset() = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { displayCutout?.safeInsetTop ?: 0 -} else 0 +} else { + 0 +} fun WindowInsets.bottomCutoutInset() = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { displayCutout?.safeInsetBottom ?: 0 -} else 0 +} else { + 0 +} diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/view/ControllerExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/view/ControllerExtensions.kt index 56915f3bee..4e97ede437 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/view/ControllerExtensions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/view/ControllerExtensions.kt @@ -78,7 +78,7 @@ fun Controller.setOnQueryTextChangeListener( object : SearchView.OnQueryTextListener { override fun onQueryTextChange(newText: String?): Boolean { if (!onlyOnSubmit && router.backstack.lastOrNull() - ?.controller == this@setOnQueryTextChangeListener + ?.controller == this@setOnQueryTextChangeListener ) { return f(newText) } @@ -126,8 +126,11 @@ fun Controller.liftAppbarWith(recyclerOrNested: T, padView: Boolean = false) val recycler = recyclerOrNested as? RecyclerView ?: recyclerOrNested as? NestedScrollView ?: return if (padView) { var appBarHeight = ( - if (fullAppBarHeight ?: 0 > 0) fullAppBarHeight!! - else activityBinding?.appBar?.attrToolbarHeight ?: 0 + if (fullAppBarHeight ?: 0 > 0) { + fullAppBarHeight!! + } else { + activityBinding?.appBar?.attrToolbarHeight ?: 0 + } ) activityBinding!!.toolbar.post { if (fullAppBarHeight!! > 0) { @@ -198,7 +201,7 @@ fun Controller.liftAppbarWith(recyclerOrNested: T, padView: Boolean = false) override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { super.onScrolled(recyclerView, dx, dy) if (router?.backstack?.lastOrNull() - ?.controller == this@liftAppbarWith && activity != null + ?.controller == this@liftAppbarWith && activity != null ) { val notAtTop = recycler.canScrollVertically(-1) if (notAtTop != isToolbarColored) colorToolbar(notAtTop) @@ -227,8 +230,11 @@ fun Controller.scrollViewWith( activityBinding?.appBar?.useTabsInPreLayout = includeTabView activityBinding?.appBar?.setToolbarModeBy(this@scrollViewWith) var appBarHeight = ( - if (fullAppBarHeight ?: 0 > 0) fullAppBarHeight!! - else activityBinding?.appBar?.preLayoutHeight ?: 0 + if (fullAppBarHeight ?: 0 > 0) { + fullAppBarHeight!! + } else { + activityBinding?.appBar?.preLayoutHeight ?: 0 + } ) swipeRefreshLayout?.setDistanceToTriggerSync(150.dpToPx) val swipeCircle = swipeRefreshLayout?.findChild() @@ -275,10 +281,12 @@ fun Controller.scrollViewWith( val systemInsets = if (ignoreInsetVisibility) insets.ignoredSystemInsets else insets.getInsets(systemBars()) val headerHeight = systemInsets.top + appBarHeight - if (!customPadding) view.updatePaddingRelative( - top = headerHeight, - bottom = if (padBottom) systemInsets.bottom else view.paddingBottom, - ) + if (!customPadding) { + view.updatePaddingRelative( + top = headerHeight, + bottom = if (padBottom) systemInsets.bottom else view.paddingBottom, + ) + } swipeRefreshLayout?.setProgressViewOffset( true, headerHeight + (-60).dpToPx, @@ -353,10 +361,10 @@ fun Controller.scrollViewWith( } } else { if (!customPadding && lastY == 0f && ( - ( - this@scrollViewWith !is FloatingSearchInterface - ) || includeTabView - ) + ( + this@scrollViewWith !is FloatingSearchInterface + ) || includeTabView + ) ) { val parent = recycler.parent as? ViewGroup ?: return val v = View(activity) @@ -386,9 +394,11 @@ fun Controller.scrollViewWith( v.layoutParams = params } toolbarColorAnim?.cancel() - if (activityBinding!!.toolbar.tag == randomTag) activityBinding!!.toolbar.setOnClickListener( - null, - ) + if (activityBinding!!.toolbar.tag == randomTag) { + activityBinding!!.toolbar.setOnClickListener( + null, + ) + } } } }, @@ -449,12 +459,12 @@ fun Controller.scrollViewWith( } if (!isToolbarColor && ( - dy == 0 || - ( - activityBinding!!.appBar.y <= -activityBinding!!.appBar.height.toFloat() || - dy == 0 && activityBinding!!.appBar.y == 0f - ) - ) + dy == 0 || + ( + activityBinding!!.appBar.y <= -activityBinding!!.appBar.height.toFloat() || + dy == 0 && activityBinding!!.appBar.y == 0f + ) + ) ) { colorToolbar(true) } @@ -491,7 +501,11 @@ fun Controller.scrollViewWith( val closerToEdge = if (activityBinding!!.bottomNav?.isVisible == true && preferences.hideBottomNavOnScroll().get() - ) closerToBottom else closerToTop + ) { + closerToBottom + } else { + closerToTop + } lastY = activityBinding!!.appBar.snapAppBarY(this@scrollViewWith, recycler) { val activityBinding = activityBinding ?: return@snapAppBarY swipeCircle?.translationY = max( diff --git a/app/src/main/java/eu/kanade/tachiyomi/widget/AutofitRecyclerView.kt b/app/src/main/java/eu/kanade/tachiyomi/widget/AutofitRecyclerView.kt index bbf442023f..a0a7e34cff 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/widget/AutofitRecyclerView.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/widget/AutofitRecyclerView.kt @@ -43,8 +43,11 @@ class AutofitRecyclerView @JvmOverloads constructor(context: Context, attrs: Att val itemWidth: Int get() { - return if (width == 0) measuredWidth / getTempSpan() - else width / managerSpanCount + return if (width == 0) { + measuredWidth / getTempSpan() + } else { + width / managerSpanCount + } } init { diff --git a/app/src/main/java/eu/kanade/tachiyomi/widget/E2EBottomSheetDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/widget/E2EBottomSheetDialog.kt index 2bcbd767ad..f2d0b3e683 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/widget/E2EBottomSheetDialog.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/widget/E2EBottomSheetDialog.kt @@ -47,18 +47,19 @@ abstract class E2EBottomSheetDialog(activity: Activity) : override fun onStart() { super.onStart() recyclerView?.let { recyclerView -> - recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() { - override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) { - super.onScrollStateChanged(recyclerView, newState) - if (newState == RecyclerView.SCROLL_STATE_IDLE || - newState == RecyclerView.SCROLL_STATE_SETTLING - ) { - sheetBehavior.isDraggable = true - } else { - sheetBehavior.isDraggable = !recyclerView.canScrollVertically(-1) + recyclerView.addOnScrollListener( + object : RecyclerView.OnScrollListener() { + override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) { + super.onScrollStateChanged(recyclerView, newState) + if (newState == RecyclerView.SCROLL_STATE_IDLE || + newState == RecyclerView.SCROLL_STATE_SETTLING + ) { + sheetBehavior.isDraggable = true + } else { + sheetBehavior.isDraggable = !recyclerView.canScrollVertically(-1) + } } - } - }, + }, ) } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/widget/LinearLayoutManagerAccurateOffset.kt b/app/src/main/java/eu/kanade/tachiyomi/widget/LinearLayoutManagerAccurateOffset.kt index 0df6231858..16c8caaee8 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/widget/LinearLayoutManagerAccurateOffset.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/widget/LinearLayoutManagerAccurateOffset.kt @@ -103,7 +103,9 @@ fun RecyclerView.LayoutManager.getFirstPos(recyclerView: RecyclerView?, toolbarH val bottom = ( if (isLibraryHeader) { it.findViewById(R.id.category_title)?.bottom?.plus(it.y)?.roundToInt() - } else it.bottom + } else { + it.bottom + } ) ?: it.bottom bottom >= inset + toolbarHeight && it.height > 0 } diff --git a/app/src/main/java/eu/kanade/tachiyomi/widget/RecyclerViewPagerAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/widget/RecyclerViewPagerAdapter.kt deleted file mode 100644 index 2e1d51c2f5..0000000000 --- a/app/src/main/java/eu/kanade/tachiyomi/widget/RecyclerViewPagerAdapter.kt +++ /dev/null @@ -1,34 +0,0 @@ -package eu.kanade.tachiyomi.widget - -import android.view.View -import android.view.ViewGroup -import com.nightlynexus.viewstatepageradapter.ViewStatePagerAdapter -import java.util.Stack - -abstract class RecyclerViewPagerAdapter : ViewStatePagerAdapter() { - - private val pool = Stack() - - var recycle = true - set(value) { - if (!value) pool.clear() - field = value - } - - protected abstract fun createView(container: ViewGroup): View - - protected abstract fun bindView(view: View, position: Int) - - protected open fun recycleView(view: View, position: Int) {} - - override fun createView(container: ViewGroup, position: Int): View { - val view = if (pool.isNotEmpty()) pool.pop() else createView(container) - bindView(view, position) - return view - } - - override fun destroyView(container: ViewGroup, position: Int, view: View) { - recycleView(view, position) - if (recycle) pool.push(view) - } -} diff --git a/app/src/main/java/eu/kanade/tachiyomi/widget/TabbedBottomSheet.kt b/app/src/main/java/eu/kanade/tachiyomi/widget/TabbedBottomSheet.kt index c61381b7c2..3f4b81cf81 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/widget/TabbedBottomSheet.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/widget/TabbedBottomSheet.kt @@ -43,25 +43,26 @@ abstract class TabbedBottomSheetDialog(private val activity: Activity) : view?.isNestedScrollingEnabled = binding.pager.currentItem == index view?.requestLayout() } - binding.tabs.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { - override fun onTabSelected(tab: TabLayout.Tab?) { - val view = getTabViews()[tab?.position ?: 0] as? NestedScrollView - view?.isNestedScrollingEnabled = true - view?.requestLayout() - } - - override fun onTabUnselected(tab: TabLayout.Tab?) { - val view = getTabViews()[tab?.position ?: 0] as? NestedScrollView - view?.isNestedScrollingEnabled = false - view?.requestLayout() - } - - override fun onTabReselected(tab: TabLayout.Tab?) { - val view = getTabViews()[tab?.position ?: 0] as? NestedScrollView - view?.isNestedScrollingEnabled = true - view?.requestLayout() - } - }, + binding.tabs.addOnTabSelectedListener( + object : TabLayout.OnTabSelectedListener { + override fun onTabSelected(tab: TabLayout.Tab?) { + val view = getTabViews()[tab?.position ?: 0] as? NestedScrollView + view?.isNestedScrollingEnabled = true + view?.requestLayout() + } + + override fun onTabUnselected(tab: TabLayout.Tab?) { + val view = getTabViews()[tab?.position ?: 0] as? NestedScrollView + view?.isNestedScrollingEnabled = false + view?.requestLayout() + } + + override fun onTabReselected(tab: TabLayout.Tab?) { + val view = getTabViews()[tab?.position ?: 0] as? NestedScrollView + view?.isNestedScrollingEnabled = true + view?.requestLayout() + } + }, ) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/widget/preference/IntListMatPreference.kt b/app/src/main/java/eu/kanade/tachiyomi/widget/preference/IntListMatPreference.kt index 4cd0b3b39a..709dba5474 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/widget/preference/IntListMatPreference.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/widget/preference/IntListMatPreference.kt @@ -25,8 +25,11 @@ class IntListMatPreference @JvmOverloads constructor( override var customSummaryProvider: SummaryProvider? = SummaryProvider { val index = entryValues.indexOf(sharedPreferences?.getInt(key, defValue) ?: defValue) - if (entries.isEmpty() || index == -1) "" - else entries[index] + if (entries.isEmpty() || index == -1) { + "" + } else { + entries[index] + } } override fun onSetInitialValue(defaultValue: Any?) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/widget/preference/ListMatPreference.kt b/app/src/main/java/eu/kanade/tachiyomi/widget/preference/ListMatPreference.kt index a1a8c7bec3..8da7ac3f5b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/widget/preference/ListMatPreference.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/widget/preference/ListMatPreference.kt @@ -29,8 +29,11 @@ open class ListMatPreference @JvmOverloads constructor( override var customSummaryProvider: SummaryProvider? = SummaryProvider { val index = entryValues.indexOf(sharedPreferences?.getString(key, defValue)) - if (entries.isEmpty() || index == -1) "" - else entries[index] + if (entries.isEmpty() || index == -1) { + "" + } else { + entries[index] + } } override fun dialog(): MaterialAlertDialogBuilder { diff --git a/app/src/main/java/eu/kanade/tachiyomi/widget/preference/LoginPreference.kt b/app/src/main/java/eu/kanade/tachiyomi/widget/preference/LoginPreference.kt index 0c8988eb8a..655edfee09 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/widget/preference/LoginPreference.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/widget/preference/LoginPreference.kt @@ -21,8 +21,11 @@ class LoginPreference @JvmOverloads constructor(context: Context, attrs: Attribu (holder.findViewById(R.id.image_view) as? ImageView)?.let { imageView -> imageView.setImageResource( - if (getPersistedString("").isNullOrEmpty()) android.R.color.transparent - else R.drawable.ic_done_24dp, + if (getPersistedString("").isNullOrEmpty()) { + android.R.color.transparent + } else { + R.drawable.ic_done_24dp + }, ) imageView.imageTintList = ColorStateList.valueOf(Color.parseColor("#FF4CAF50")) diff --git a/app/src/main/java/eu/kanade/tachiyomi/widget/preference/MatPreference.kt b/app/src/main/java/eu/kanade/tachiyomi/widget/preference/MatPreference.kt index e917a9cadf..e5c01a65bf 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/widget/preference/MatPreference.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/widget/preference/MatPreference.kt @@ -15,9 +15,8 @@ import uy.kohesive.injekt.api.get open class MatPreference @JvmOverloads constructor( val activity: Activity?, context: Context, - attrs: - AttributeSet? = - null, + attrs: AttributeSet? = + null, ) : Preference(context, attrs) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/widget/preference/MultiListMatPreference.kt b/app/src/main/java/eu/kanade/tachiyomi/widget/preference/MultiListMatPreference.kt index d1e677d231..3f0e6493bc 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/widget/preference/MultiListMatPreference.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/widget/preference/MultiListMatPreference.kt @@ -66,9 +66,14 @@ class MultiListMatPreference @JvmOverloads constructor( override fun MaterialAlertDialogBuilder.setListItems() { val set = sharedPreferences?.getStringSet(key, defValue) ?: defValue val items = if (allSelectionRes != null) { - if (showAllLast) entries + listOf(context.getString(allSelectionRes!!)) - else listOf(context.getString(allSelectionRes!!)) + entries - } else entries + if (showAllLast) { + entries + listOf(context.getString(allSelectionRes!!)) + } else { + listOf(context.getString(allSelectionRes!!)) + entries + } + } else { + entries + } val allPos = if (showAllLast) items.size - 1 else 0 val allValue = booleanArrayOf(set.isEmpty() || allIsAlwaysSelected) @@ -106,8 +111,9 @@ class MultiListMatPreference @JvmOverloads constructor( } selected[pos] = checked if (allSelectionRes != null && !allIsAlwaysSelected) { - if (checked) selected[allPos] = false - else if (selected.none { it }) selected[allPos] = true + if (checked) { + selected[allPos] = false + } else if (selected.none { it }) selected[allPos] = true (dialog as? AlertDialog)?.listView?.setItemChecked(pos, selected[allPos]) } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/widget/preference/TrackerPreference.kt b/app/src/main/java/eu/kanade/tachiyomi/widget/preference/TrackerPreference.kt index e712c6a0c5..2077744b99 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/widget/preference/TrackerPreference.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/widget/preference/TrackerPreference.kt @@ -27,7 +27,7 @@ class TrackerPreference @JvmOverloads constructor(context: Context, attrs: Attri logoContainer.setCardBackgroundColor(iconColor) checkedIcon.isVisible = !getPersistedString("").isNullOrEmpty() } - + @ColorInt var iconColor: Int = Color.TRANSPARENT set(value) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/widget/preference/TriStateListPreference.kt b/app/src/main/java/eu/kanade/tachiyomi/widget/preference/TriStateListPreference.kt index 00d4664971..3a48754f6e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/widget/preference/TriStateListPreference.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/widget/preference/TriStateListPreference.kt @@ -82,16 +82,24 @@ class TriStateListPreference @JvmOverloads constructor( override fun MaterialAlertDialogBuilder.setListItems() { val set = sharedPreferences?.getStringSet(key, defValue) ?: defValue val items = if (allSelectionRes != null) { - if (showAllLast) entries + listOf(context.getString(allSelectionRes!!)) - else listOf(context.getString(allSelectionRes!!)) + entries - } else entries + if (showAllLast) { + entries + listOf(context.getString(allSelectionRes!!)) + } else { + listOf(context.getString(allSelectionRes!!)) + entries + } + } else { + entries + } val allPos = if (showAllLast) items.size - 1 else 0 val excludedSet = excludeKey?.let { sharedPreferences?.getStringSet(it, defValue) ?: defValue }.orEmpty() val allValue = intArrayOf( - if (set.isEmpty()) TriStateCheckBox.State.CHECKED.ordinal - else TriStateCheckBox.State.UNCHECKED.ordinal, + if (set.isEmpty()) { + TriStateCheckBox.State.CHECKED.ordinal + } else { + TriStateCheckBox.State.UNCHECKED.ordinal + }, ) val preselected = if (allSelectionRes != null && !showAllLast) { allValue } else { intArrayOf() } + entryValues @@ -132,8 +140,11 @@ class TriStateListPreference @JvmOverloads constructor( .toSet() if (allSelectionRes != null && !allIsAlwaysSelected) { - if (includedItems.isEmpty()) adapter.checkItems(intArrayOf(allPos)) - else adapter.uncheckItems(intArrayOf(allPos)) + if (includedItems.isEmpty()) { + adapter.checkItems(intArrayOf(allPos)) + } else { + adapter.uncheckItems(intArrayOf(allPos)) + } } } } diff --git a/app/src/main/java/org/nekomanga/domain/category/CategoryItem.kt b/app/src/main/java/org/nekomanga/domain/category/CategoryItem.kt index 9a2b9edb34..0b2637bf98 100644 --- a/app/src/main/java/org/nekomanga/domain/category/CategoryItem.kt +++ b/app/src/main/java/org/nekomanga/domain/category/CategoryItem.kt @@ -48,5 +48,3 @@ fun Category.toCategoryItem(): CategoryItem { sourceId = this.sourceId, ) } - - diff --git a/app/src/main/java/org/nekomanga/domain/chapter/Chapter.kt b/app/src/main/java/org/nekomanga/domain/chapter/Chapter.kt index 738390bf7b..5d8df12628 100644 --- a/app/src/main/java/org/nekomanga/domain/chapter/Chapter.kt +++ b/app/src/main/java/org/nekomanga/domain/chapter/Chapter.kt @@ -93,7 +93,7 @@ data class SimpleChapter( oldMangaDexChapterId = null, language = "", - ) + ) } fun toDbChapter(): Chapter = ChapterImpl().also { @@ -116,7 +116,6 @@ data class SimpleChapter( it.chapter_txt = chapterText it.mangadex_chapter_id = mangaDexChapterId it.old_mangadex_id = oldMangaDexChapterId - } fun toChapterItem(downloadState: Download.State = Download.State.default, downloadProgress: Float = 0f): ChapterItem = ChapterItem( diff --git a/app/src/main/java/org/nekomanga/domain/manga/Manga.kt b/app/src/main/java/org/nekomanga/domain/manga/Manga.kt index 33de0464f2..9bf22da4a8 100644 --- a/app/src/main/java/org/nekomanga/domain/manga/Manga.kt +++ b/app/src/main/java/org/nekomanga/domain/manga/Manga.kt @@ -25,4 +25,3 @@ data class Artwork( val volume: String = "", val active: Boolean = false, ) - diff --git a/app/src/main/java/org/nekomanga/domain/manga/MangaContentRating.kt b/app/src/main/java/org/nekomanga/domain/manga/MangaContentRating.kt index cca6b61ce3..efc2e77335 100644 --- a/app/src/main/java/org/nekomanga/domain/manga/MangaContentRating.kt +++ b/app/src/main/java/org/nekomanga/domain/manga/MangaContentRating.kt @@ -8,7 +8,8 @@ enum class MangaContentRating(val key: String) { Suggestive(MdConstants.ContentRating.suggestive), Erotica(MdConstants.ContentRating.erotica), Pornographic(MdConstants.ContentRating.pornographic), - Unknown(MdConstants.ContentRating.unknown); + Unknown(MdConstants.ContentRating.unknown), + ; fun prettyPrint(): String { return key.capitalizeWords() diff --git a/app/src/main/java/org/nekomanga/domain/network/NetworkResult.kt b/app/src/main/java/org/nekomanga/domain/network/NetworkResult.kt index 3c0b369127..06a84de4bd 100644 --- a/app/src/main/java/org/nekomanga/domain/network/NetworkResult.kt +++ b/app/src/main/java/org/nekomanga/domain/network/NetworkResult.kt @@ -28,8 +28,3 @@ fun ResultError.message(): String { is ResultError.Generic -> errorString } } - - - - - diff --git a/app/src/main/java/org/nekomanga/domain/track/Track.kt b/app/src/main/java/org/nekomanga/domain/track/Track.kt index 794f3f38ba..3a72abbf27 100644 --- a/app/src/main/java/org/nekomanga/domain/track/Track.kt +++ b/app/src/main/java/org/nekomanga/domain/track/Track.kt @@ -111,4 +111,3 @@ fun TrackSearch.toTrackSearchItem(): TrackSearchItem { trackItem = this.toTrackItem(), ) } - diff --git a/app/src/main/java/org/nekomanga/presentation/components/ChapterRow.kt b/app/src/main/java/org/nekomanga/presentation/components/ChapterRow.kt index 532a38d8c5..3018b0def2 100644 --- a/app/src/main/java/org/nekomanga/presentation/components/ChapterRow.kt +++ b/app/src/main/java/org/nekomanga/presentation/components/ChapterRow.kt @@ -116,7 +116,6 @@ fun ChapterRow( Background(icon, Alignment.CenterStart, color, stringResource(id = text), themeColor.buttonColor) } else -> Unit - } }, dismissContent = { @@ -145,7 +144,6 @@ fun ChapterRow( dismissState.isDismissed(DismissDirection.EndToStart) -> Reset(dismissState = dismissState, action = onRead) dismissState.isDismissed(DismissDirection.StartToEnd) -> Reset(dismissState = dismissState, action = onBookmark) } - } } @@ -182,7 +180,6 @@ private fun Background(icon: ImageVector, alignment: Alignment, color: Color, te color = contentColor, ) } - } } @@ -246,7 +243,7 @@ private fun ChapterInfo( ), ), - ) + ) Row( modifier = Modifier @@ -262,13 +259,11 @@ private fun ChapterInfo( .padding(start = 8.dp, top = 8.dp, bottom = 8.dp), horizontalArrangement = Arrangement.SpaceBetween, ) { - Column( modifier = Modifier .align(Alignment.CenterVertically) .fillMaxWidth(.8f), ) { - val titleText = when (shouldHideChapterTitles) { true -> stringResource(id = R.string.chapter_, decimalFormat.format(chapterNumber)) false -> title @@ -277,7 +272,8 @@ private fun ChapterInfo( Row { if (bookmark) { Icon( - imageVector = Icons.Filled.Bookmark, contentDescription = null, + imageVector = Icons.Filled.Bookmark, + contentDescription = null, modifier = Modifier .size(16.dp) .align(Alignment.CenterVertically), @@ -316,7 +312,6 @@ private fun ChapterInfo( Row(verticalAlignment = Alignment.CenterVertically) { if (language.isNotNullOrEmpty() && language.equals("en", true).not()) { - val iconRes = MdLang.fromIsoCode(language!!)?.iconResId when (iconRes == null) { @@ -332,7 +327,6 @@ private fun ChapterInfo( ) } false -> { - val painter = rememberDrawablePainter(drawable = AppCompatResources.getDrawable(LocalContext.current, iconRes)) Image( painter = painter, @@ -357,14 +351,13 @@ private fun ChapterInfo( ) statuses.joinToString(" • ") - } - } Box(modifier = Modifier.align(Alignment.CenterVertically), contentAlignment = Alignment.Center) { - DownloadButton( - themeColorState.buttonColor, downloadStateProvider, downloadProgressProvider, + themeColorState.buttonColor, + downloadStateProvider, + downloadProgressProvider, Modifier .combinedClickable( onClick = { @@ -419,4 +412,3 @@ val decimalFormat = DecimalFormat( DecimalFormatSymbols() .apply { decimalSeparator = '.' }, ) - diff --git a/app/src/main/java/org/nekomanga/presentation/components/ColumnFooter.kt b/app/src/main/java/org/nekomanga/presentation/components/ColumnFooter.kt index e6bd6100d0..15432424b9 100644 --- a/app/src/main/java/org/nekomanga/presentation/components/ColumnFooter.kt +++ b/app/src/main/java/org/nekomanga/presentation/components/ColumnFooter.kt @@ -25,7 +25,6 @@ import org.nekomanga.presentation.screens.ThemeColorState @Composable fun ColumnScope.SearchFooter(themeColorState: ThemeColorState, title: String, textChanged: (String) -> Unit, search: (String) -> Unit) { - val focusManager = LocalFocusManager.current Divider() diff --git a/app/src/main/java/org/nekomanga/presentation/components/ColumnHeader.kt b/app/src/main/java/org/nekomanga/presentation/components/ColumnHeader.kt index 6147b2c602..dee255bdee 100644 --- a/app/src/main/java/org/nekomanga/presentation/components/ColumnHeader.kt +++ b/app/src/main/java/org/nekomanga/presentation/components/ColumnHeader.kt @@ -22,11 +22,11 @@ import jp.wasabeef.gap.Gap */ @Composable fun ColumnScope.Header(text: String, cancelClick: () -> Unit) { - Box(modifier = Modifier.padding(horizontal = 8.dp)) { IconButton(onClick = { cancelClick() }) { Icon( - imageVector = Icons.Default.Close, contentDescription = null, + imageVector = Icons.Default.Close, + contentDescription = null, modifier = Modifier .size(28.dp), tint = MaterialTheme.colorScheme.onSurface, diff --git a/app/src/main/java/org/nekomanga/presentation/components/DownloadButton.kt b/app/src/main/java/org/nekomanga/presentation/components/DownloadButton.kt index e85927ab97..5f89a996c8 100644 --- a/app/src/main/java/org/nekomanga/presentation/components/DownloadButton.kt +++ b/app/src/main/java/org/nekomanga/presentation/components/DownloadButton.kt @@ -52,12 +52,12 @@ fun DownloadButton(buttonColor: Color, downloadStateProvider: () -> Download.Sta LaunchedEffect(downloadState) { when (downloadState) { - //this reset download complete in case you remove the chapter and want to redownload it + // this reset download complete in case you remove the chapter and want to redownload it Download.State.NOT_DOWNLOADED -> downloadComplete = false - //this signals its downloading, so a future downloaded state triggers the animation + // this signals its downloading, so a future downloaded state triggers the animation Download.State.DOWNLOADING -> wasDownloading = true Download.State.DOWNLOADED -> { - //this will run the animation for the check + // this will run the animation for the check if (wasDownloading) { downloadComplete = true wasDownloading = false @@ -80,13 +80,11 @@ fun DownloadButton(buttonColor: Color, downloadStateProvider: () -> Download.Sta private fun NotDownloaded(buttonColor: Color, modifier: Modifier) { Background(color = Color.Transparent, borderStroke = BorderStroke(borderSize.dp, buttonColor), modifier = modifier) { DownloadIcon(color = buttonColor, icon = rememberVectorPainter(image = Icons.Filled.ArrowDownward)) - } } @Composable private fun Downloaded(buttonColor: Color, downloadComplete: Boolean, modifier: Modifier) { - val iconPainter = rememberVectorPainter(image = Icons.Filled.ArrowDownward) val animatedPainter = rememberAnimatedVectorPainter( @@ -99,10 +97,8 @@ private fun Downloaded(buttonColor: Color, downloadComplete: Boolean, modifier: false -> iconPainter } - Background(color = buttonColor, modifier = modifier) { DownloadIcon(color = MaterialTheme.colorScheme.surface, icon = painter) - } } @@ -126,7 +122,6 @@ private fun Queued(modifier: Modifier) { strokeWidth = borderSize.dp, ) DownloadIcon(color = disabledColor, icon = rememberVectorPainter(image = Icons.Filled.ArrowDownward), alpha = alpha.value) - } } @@ -156,7 +151,6 @@ private fun Downloading(buttonColor: Color, modifier: Modifier, downloadProgress animationSpec = infiniteRepeatable(tween(1000, easing = EaseInOutCirc), repeatMode = RepeatMode.Reverse), ) - Background(color = backgroundColor, modifier = modifier) { CircularProgressIndicator( progress = animatedProgress, @@ -166,7 +160,6 @@ private fun Downloading(buttonColor: Color, modifier: Modifier, downloadProgress strokeWidth = borderSize.dp, ) DownloadIcon(color = iconColor, icon = iconPainter, alpha = alpha.value) - } } diff --git a/app/src/main/java/org/nekomanga/presentation/components/HeaderCard.kt b/app/src/main/java/org/nekomanga/presentation/components/HeaderCard.kt index f59773cf6a..c8cb5495a5 100644 --- a/app/src/main/java/org/nekomanga/presentation/components/HeaderCard.kt +++ b/app/src/main/java/org/nekomanga/presentation/components/HeaderCard.kt @@ -25,7 +25,7 @@ fun HeaderCard(text: String) { .padding(8.dp), colors = CardDefaults.elevatedCardColors(containerColor = MaterialTheme.colorScheme.secondary), - ) { + ) { Text( text = text, style = MaterialTheme.typography.titleMedium, @@ -35,7 +35,6 @@ fun HeaderCard(text: String) { .fillMaxWidth() .padding(12.dp), ) - } } diff --git a/app/src/main/java/org/nekomanga/presentation/components/LazyListScopeExtensions.kt b/app/src/main/java/org/nekomanga/presentation/components/LazyListScopeExtensions.kt index 7e562afc43..9b884e484f 100644 --- a/app/src/main/java/org/nekomanga/presentation/components/LazyListScopeExtensions.kt +++ b/app/src/main/java/org/nekomanga/presentation/components/LazyListScopeExtensions.kt @@ -38,4 +38,3 @@ fun LazyListScope.gridItems( } } } - diff --git a/app/src/main/java/org/nekomanga/presentation/components/MangaGridView.kt b/app/src/main/java/org/nekomanga/presentation/components/MangaGridView.kt index ca381768e7..fd982b94aa 100644 --- a/app/src/main/java/org/nekomanga/presentation/components/MangaGridView.kt +++ b/app/src/main/java/org/nekomanga/presentation/components/MangaGridView.kt @@ -95,13 +95,11 @@ fun MangaGrid( onClick: (Long) -> Unit = {}, onLongClick: (DisplayManga) -> Unit = {}, loadNextItems: () -> Unit = {}, - - ) { +) { val cells = GridCells.Fixed(columns) val scrollState = rememberLazyGridState() - LazyVerticalGrid( columns = cells, state = scrollState, @@ -262,7 +260,6 @@ private fun CompactGridItem( @Composable private fun GridCover(manga: DisplayManga, shouldOutlineCover: Boolean) { - val color by remember { mutableStateOf(Pastel.getColorLight()) } AsyncImage( model = ImageRequest.Builder(LocalContext.current) @@ -281,4 +278,3 @@ private fun GridCover(manga: DisplayManga, shouldOutlineCover: Boolean) { }, ) } - diff --git a/app/src/main/java/org/nekomanga/presentation/components/MangaListView.kt b/app/src/main/java/org/nekomanga/presentation/components/MangaListView.kt index 83d0b99f0c..55bda2028e 100644 --- a/app/src/main/java/org/nekomanga/presentation/components/MangaListView.kt +++ b/app/src/main/java/org/nekomanga/presentation/components/MangaListView.kt @@ -90,7 +90,6 @@ fun MangaList( onLongClick: (DisplayManga) -> Unit = {}, loadNextItems: () -> Unit = {}, ) { - val scrollState = rememberLazyListState() LazyColumn( diff --git a/app/src/main/java/org/nekomanga/presentation/components/MangaViews.kt b/app/src/main/java/org/nekomanga/presentation/components/MangaViews.kt index 0f58d61da3..a3a1418704 100644 --- a/app/src/main/java/org/nekomanga/presentation/components/MangaViews.kt +++ b/app/src/main/java/org/nekomanga/presentation/components/MangaViews.kt @@ -69,7 +69,6 @@ internal fun DisplayText( @Composable internal fun InLibraryIcon(offset: Dp, outline: Boolean) { - Box(modifier = Modifier.offset(x = offset, y = offset), contentAlignment = Alignment.Center) { if (outline) { Icon( diff --git a/app/src/main/java/org/nekomanga/presentation/components/NekoScaffold.kt b/app/src/main/java/org/nekomanga/presentation/components/NekoScaffold.kt index e68cc54d23..7db40d31c1 100644 --- a/app/src/main/java/org/nekomanga/presentation/components/NekoScaffold.kt +++ b/app/src/main/java/org/nekomanga/presentation/components/NekoScaffold.kt @@ -189,4 +189,3 @@ fun getTopAppBarColor(title: String): Color { false -> MaterialTheme.colorScheme.surface.copy(alpha = .7f) } } - diff --git a/app/src/main/java/org/nekomanga/presentation/components/NoRippleText.kt b/app/src/main/java/org/nekomanga/presentation/components/NoRippleText.kt index f4cf6e824f..2c69e695f9 100644 --- a/app/src/main/java/org/nekomanga/presentation/components/NoRippleText.kt +++ b/app/src/main/java/org/nekomanga/presentation/components/NoRippleText.kt @@ -43,6 +43,5 @@ fun NoRippleText( style = style, overflow = TextOverflow.Ellipsis, - ) + ) } - diff --git a/app/src/main/java/org/nekomanga/presentation/components/ToolTipComponents.kt b/app/src/main/java/org/nekomanga/presentation/components/ToolTipComponents.kt index af2861fa8f..c0a933ce07 100644 --- a/app/src/main/java/org/nekomanga/presentation/components/ToolTipComponents.kt +++ b/app/src/main/java/org/nekomanga/presentation/components/ToolTipComponents.kt @@ -56,7 +56,6 @@ fun ToolTipIconButton( }, ), ) { - if (icon != null) { Icon( imageVector = icon, @@ -72,7 +71,6 @@ fun ToolTipIconButton( contentDescription = toolTipLabel, ) } - } Tooltip( diff --git a/app/src/main/java/org/nekomanga/presentation/components/dialog/AddCategoryDialog.kt b/app/src/main/java/org/nekomanga/presentation/components/dialog/AddCategoryDialog.kt index d181068571..34cdcbd769 100644 --- a/app/src/main/java/org/nekomanga/presentation/components/dialog/AddCategoryDialog.kt +++ b/app/src/main/java/org/nekomanga/presentation/components/dialog/AddCategoryDialog.kt @@ -36,7 +36,6 @@ fun AddCategoryDialog(themeColorState: ThemeColorState, currentCategories: List< var errorMessage by remember { mutableStateOf("") } CompositionLocalProvider(LocalRippleTheme provides themeColorState.rippleTheme, LocalTextSelectionColors provides themeColorState.textSelectionColors) { - LaunchedEffect(categoryText, currentCategories) { if (categoryText.isEmpty()) { saveEnabled = false @@ -67,7 +66,7 @@ fun AddCategoryDialog(themeColorState: ThemeColorState, currentCategories: List< focusedLabelColor = themeColorState.buttonColor, focusedBorderColor = themeColorState.buttonColor, - ), + ), ) Gap(2.dp) Text(text = errorMessage, style = MaterialTheme.typography.labelSmall.copy(color = MaterialTheme.colorScheme.error)) @@ -94,4 +93,3 @@ fun AddCategoryDialog(themeColorState: ThemeColorState, currentCategories: List< ) } } - diff --git a/app/src/main/java/org/nekomanga/presentation/components/dialog/AppUpdateDialog.kt b/app/src/main/java/org/nekomanga/presentation/components/dialog/AppUpdateDialog.kt index 581ee34d08..6e1bd65db9 100644 --- a/app/src/main/java/org/nekomanga/presentation/components/dialog/AppUpdateDialog.kt +++ b/app/src/main/java/org/nekomanga/presentation/components/dialog/AppUpdateDialog.kt @@ -76,5 +76,3 @@ private fun markdownTypography() = body1 = MaterialTheme.typography.bodyMedium, body2 = MaterialTheme.typography.bodySmall, ) - - diff --git a/app/src/main/java/org/nekomanga/presentation/components/dialog/RemoveTrackingDialog.kt b/app/src/main/java/org/nekomanga/presentation/components/dialog/RemoveTrackingDialog.kt index 9b247629ff..1bb13558ab 100644 --- a/app/src/main/java/org/nekomanga/presentation/components/dialog/RemoveTrackingDialog.kt +++ b/app/src/main/java/org/nekomanga/presentation/components/dialog/RemoveTrackingDialog.kt @@ -76,6 +76,5 @@ fun RemoveTrackingDialog(themeColorState: ThemeColorState, name: String, canRemo } }, ) - } } diff --git a/app/src/main/java/org/nekomanga/presentation/components/dialog/RemovedChaptersDialog.kt b/app/src/main/java/org/nekomanga/presentation/components/dialog/RemovedChaptersDialog.kt index 8a06227f2c..0e8dbd0ead 100644 --- a/app/src/main/java/org/nekomanga/presentation/components/dialog/RemovedChaptersDialog.kt +++ b/app/src/main/java/org/nekomanga/presentation/components/dialog/RemovedChaptersDialog.kt @@ -38,10 +38,11 @@ fun RemovedChaptersDialog(themeColorState: ThemeColorState, chapters: ImmutableL (chapterNames.size - (4 - 1)), (chapterNames.size - (4 - 1)), ) - } else chapterNames.joinToString(", "), + } else { + chapterNames.joinToString(", ") + }, ), ) - }, onDismissRequest = onDismiss, confirmButton = { @@ -61,6 +62,5 @@ fun RemovedChaptersDialog(themeColorState: ThemeColorState, chapters: ImmutableL } }, ) - } } diff --git a/app/src/main/java/org/nekomanga/presentation/components/dialog/TrackingChapterDialog.kt b/app/src/main/java/org/nekomanga/presentation/components/dialog/TrackingChapterDialog.kt index 374b8222f9..c79188ef61 100644 --- a/app/src/main/java/org/nekomanga/presentation/components/dialog/TrackingChapterDialog.kt +++ b/app/src/main/java/org/nekomanga/presentation/components/dialog/TrackingChapterDialog.kt @@ -29,7 +29,6 @@ import org.nekomanga.presentation.screens.ThemeColorState @Composable fun TrackingChapterDialog(themeColorState: ThemeColorState, track: TrackItem, onDismiss: () -> Unit, trackChapterChanged: (Int) -> Unit) { CompositionLocalProvider(LocalRippleTheme provides themeColorState.rippleTheme, LocalTextSelectionColors provides themeColorState.textSelectionColors) { - var currentChapter by remember { mutableStateOf(track.lastChapterRead.toInt()) } val range = when (track.totalChapters > 0) { @@ -59,7 +58,6 @@ fun TrackingChapterDialog(themeColorState: ThemeColorState, track: TrackItem, on dividersColor = themeColorState.buttonColor, ) } - }, onDismissRequest = onDismiss, dismissButton = { diff --git a/app/src/main/java/org/nekomanga/presentation/components/dialog/TrackingScoreDialog.kt b/app/src/main/java/org/nekomanga/presentation/components/dialog/TrackingScoreDialog.kt index fed3112ebd..a4c2bd5097 100644 --- a/app/src/main/java/org/nekomanga/presentation/components/dialog/TrackingScoreDialog.kt +++ b/app/src/main/java/org/nekomanga/presentation/components/dialog/TrackingScoreDialog.kt @@ -29,7 +29,6 @@ import org.nekomanga.presentation.screens.ThemeColorState @Composable fun TrackingScoreDialog(themeColorState: ThemeColorState, trackAndService: TrackingConstants.TrackAndService, onDismiss: () -> Unit, trackScoreChange: (Int) -> Unit) { CompositionLocalProvider(LocalRippleTheme provides themeColorState.rippleTheme, LocalTextSelectionColors provides themeColorState.textSelectionColors) { - val displayedScore = trackAndService.service.displayScore(trackAndService.track) val index = when { displayedScore == "-" -> 0 @@ -39,7 +38,6 @@ fun TrackingScoreDialog(themeColorState: ThemeColorState, trackAndService: Track var currentIndex by remember { mutableStateOf(index) } - AlertDialog( title = { Text(text = stringResource(id = R.string.score), textAlign = TextAlign.Center, modifier = Modifier.fillMaxWidth()) @@ -62,7 +60,6 @@ fun TrackingScoreDialog(themeColorState: ThemeColorState, trackAndService: Track textStyle = MaterialTheme.typography.titleMedium.copy(color = MaterialTheme.colorScheme.onSurface), ) } - }, onDismissRequest = onDismiss, dismissButton = { diff --git a/app/src/main/java/org/nekomanga/presentation/components/dialog/TrackingStatusDialog.kt b/app/src/main/java/org/nekomanga/presentation/components/dialog/TrackingStatusDialog.kt index 15292f03f7..b3222effb8 100644 --- a/app/src/main/java/org/nekomanga/presentation/components/dialog/TrackingStatusDialog.kt +++ b/app/src/main/java/org/nekomanga/presentation/components/dialog/TrackingStatusDialog.kt @@ -35,7 +35,6 @@ import org.nekomanga.presentation.screens.ThemeColorState @Composable fun TrackingStatusDialog(themeColorState: ThemeColorState, initialStatus: Int, service: TrackServiceItem, onDismiss: () -> Unit, trackStatusChange: (Int) -> Unit) { CompositionLocalProvider(LocalRippleTheme provides themeColorState.rippleTheme, LocalTextSelectionColors provides themeColorState.textSelectionColors) { - var selectedStatus by remember { mutableStateOf(initialStatus) } val scope = rememberCoroutineScope() AlertDialog( @@ -55,7 +54,6 @@ fun TrackingStatusDialog(themeColorState: ThemeColorState, initialStatus: Int, s } } - Row( modifier = Modifier .fillMaxWidth() @@ -67,7 +65,6 @@ fun TrackingStatusDialog(themeColorState: ThemeColorState, initialStatus: Int, s ), verticalAlignment = Alignment.CenterVertically, ) { - RadioButton( selected = (status == selectedStatus), onClick = { diff --git a/app/src/main/java/org/nekomanga/presentation/components/dialog/TrackingSwitchDialog.kt b/app/src/main/java/org/nekomanga/presentation/components/dialog/TrackingSwitchDialog.kt index 8273867b88..6e4d609fb6 100644 --- a/app/src/main/java/org/nekomanga/presentation/components/dialog/TrackingSwitchDialog.kt +++ b/app/src/main/java/org/nekomanga/presentation/components/dialog/TrackingSwitchDialog.kt @@ -20,14 +20,12 @@ import org.nekomanga.presentation.screens.ThemeColorState @Composable fun TrackingSwitchDialog(themeColorState: ThemeColorState, name: String, oldName: String, newName: String, onConfirm: (Boolean) -> Unit, onDismiss: () -> Unit) { CompositionLocalProvider(LocalRippleTheme provides themeColorState.rippleTheme, LocalTextSelectionColors provides themeColorState.textSelectionColors) { - AlertDialog( title = { Text(text = stringResource(id = R.string.remove_previous_tracker)) }, text = { Column { - TextButton( onClick = { onConfirm(true) }, modifier = Modifier @@ -44,7 +42,6 @@ fun TrackingSwitchDialog(themeColorState: ThemeColorState, name: String, oldName ) { Text(text = stringResource(id = R.string.keep_both_on_service, name)) } - } }, onDismissRequest = onDismiss, @@ -54,6 +51,5 @@ fun TrackingSwitchDialog(themeColorState: ThemeColorState, name: String, oldName } }, ) - } } diff --git a/app/src/main/java/org/nekomanga/presentation/components/sheets/ArtworkSheet.kt b/app/src/main/java/org/nekomanga/presentation/components/sheets/ArtworkSheet.kt index 1b3d1f79c4..031079c0df 100644 --- a/app/src/main/java/org/nekomanga/presentation/components/sheets/ArtworkSheet.kt +++ b/app/src/main/java/org/nekomanga/presentation/components/sheets/ArtworkSheet.kt @@ -71,13 +71,13 @@ fun ArtworkSheet( if (alternativeArtwork.isEmpty()) { BaseSheet(themeColor = themeColorState) { Text( - text = "Please swipe refresh to pull latest artwork", textAlign = TextAlign.Center, + text = "Please swipe refresh to pull latest artwork", + textAlign = TextAlign.Center, modifier = Modifier .fillMaxWidth(), ) } } else { - var currentImage by remember { mutableStateOf(alternativeArtwork.first { it.active }) } val screenHeight = LocalConfiguration.current.screenHeightDp @@ -85,7 +85,6 @@ fun ArtworkSheet( val imageHeight = screenHeight * .7f val gradientHeight = (thumbnailSize / 2f) - Column( modifier = Modifier .fillMaxWidth() @@ -95,7 +94,6 @@ fun ArtworkSheet( .navigationBarsPadding(), horizontalAlignment = Alignment.CenterHorizontally, ) { - AsyncImage( model = ImageRequest.Builder(LocalContext.current) .data(currentImage) @@ -113,7 +111,6 @@ fun ArtworkSheet( .padding(4.dp), Arrangement.spacedBy(4.dp), ) { - ArtworkButton(text = stringResource(id = R.string.save), color = themeColorState.buttonColor, modifier = Modifier.weight(1f)) { saveClick(currentImage) } @@ -139,7 +136,8 @@ fun ArtworkSheet( items(alternativeArtwork) { artwork -> Box { Thumbnail( - artwork = artwork, thumbnailSize = thumbnailSize, + artwork = artwork, + thumbnailSize = thumbnailSize, ) { currentImage = artwork } @@ -232,4 +230,3 @@ private fun ActiveIndicator(themeColorState: ThemeColorState) { Icon(imageVector = Icons.Filled.Star, modifier = Modifier.padding(4.dp), contentDescription = null, tint = themeColorState.buttonColor) } } - diff --git a/app/src/main/java/org/nekomanga/presentation/components/sheets/BaseSheet.kt b/app/src/main/java/org/nekomanga/presentation/components/sheets/BaseSheet.kt index 6e80d5b33b..85d2a807f8 100644 --- a/app/src/main/java/org/nekomanga/presentation/components/sheets/BaseSheet.kt +++ b/app/src/main/java/org/nekomanga/presentation/components/sheets/BaseSheet.kt @@ -69,6 +69,5 @@ fun BaseSheet( Gap(paddingAroundContent) } } - } } diff --git a/app/src/main/java/org/nekomanga/presentation/components/sheets/EditCategorySheet.kt b/app/src/main/java/org/nekomanga/presentation/components/sheets/EditCategorySheet.kt index 42ac6b2b82..f3b6d2836b 100644 --- a/app/src/main/java/org/nekomanga/presentation/components/sheets/EditCategorySheet.kt +++ b/app/src/main/java/org/nekomanga/presentation/components/sheets/EditCategorySheet.kt @@ -52,7 +52,6 @@ fun EditCategorySheet( addToLibraryClick: () -> Unit = {}, ) { CompositionLocalProvider(LocalRippleTheme provides themeColorState.rippleTheme) { - val context = LocalContext.current val enabledCategories = remember { mangaCategories.associateBy { it.id }.toMutableMap() } @@ -63,7 +62,6 @@ fun EditCategorySheet( val maxLazyHeight = LocalConfiguration.current.screenHeightDp * .4 BaseSheet(themeColor = themeColorState, maxSheetHeightPercentage = .9f) { - if (showAddCategoryDialog) { AddCategoryDialog(themeColorState = themeColorState, currentCategories = categories, onDismiss = { showAddCategoryDialog = false }, onConfirm = { addNewCategory(it) }) } @@ -119,7 +117,6 @@ fun EditCategorySheet( Gap(4.dp) Text(text = category.name, color = MaterialTheme.colorScheme.onSurface) } - } } @@ -137,7 +134,6 @@ fun EditCategorySheet( }, colors = ButtonDefaults.elevatedButtonColors(containerColor = themeColorState.buttonColor), ) { - Text(text = acceptText.value, style = MaterialTheme.typography.titleSmall, color = MaterialTheme.colorScheme.surface) } } diff --git a/app/src/main/java/org/nekomanga/presentation/components/sheets/ExternalLinksSheet.kt b/app/src/main/java/org/nekomanga/presentation/components/sheets/ExternalLinksSheet.kt index d9d6538439..704d75a08f 100644 --- a/app/src/main/java/org/nekomanga/presentation/components/sheets/ExternalLinksSheet.kt +++ b/app/src/main/java/org/nekomanga/presentation/components/sheets/ExternalLinksSheet.kt @@ -28,13 +28,14 @@ import org.nekomanga.presentation.screens.ThemeColorState @Composable fun ExternalLinksSheet(themeColorState: ThemeColorState, externalLinks: List, onLinkClick: (String, String) -> Unit) { CompositionLocalProvider(LocalRippleTheme provides themeColorState.rippleTheme) { - BaseSheet(themeColor = themeColorState) { FlowRow( modifier = Modifier .fillMaxWidth() .padding(horizontal = 8.dp), - mainAxisAlignment = FlowMainAxisAlignment.Start, crossAxisSpacing = 8.dp, mainAxisSpacing = 8.dp, + mainAxisAlignment = FlowMainAxisAlignment.Start, + crossAxisSpacing = 8.dp, + mainAxisSpacing = 8.dp, ) { externalLinks.forEach { LinkCard(externalLink = it, onLinkClick = onLinkClick) @@ -52,12 +53,12 @@ private fun LinkCard(externalLink: ExternalLink, onLinkClick: (String, String) - colors = CardDefaults.outlinedCardColors(containerColor = Color(externalLink.logoColor)), ) { Row(verticalAlignment = Alignment.CenterVertically, modifier = Modifier.fillMaxHeight()) { - if (externalLink.showLogo) { Gap(8.dp) Color.White Image( - painter = painterResource(id = externalLink.logo), contentDescription = null, + painter = painterResource(id = externalLink.logo), + contentDescription = null, modifier = Modifier .size(28.dp) .padding(top = 4.dp, bottom = 4.dp), diff --git a/app/src/main/java/org/nekomanga/presentation/components/sheets/FilterChapterSheet.kt b/app/src/main/java/org/nekomanga/presentation/components/sheets/FilterChapterSheet.kt index 41251335a8..5f30d5c6e4 100644 --- a/app/src/main/java/org/nekomanga/presentation/components/sheets/FilterChapterSheet.kt +++ b/app/src/main/java/org/nekomanga/presentation/components/sheets/FilterChapterSheet.kt @@ -58,7 +58,6 @@ fun FilterChapterSheet( setAsGlobal: (MangaConstants.SetGlobal) -> Unit, ) { CompositionLocalProvider(LocalRippleTheme provides themeColorState.rippleTheme) { - val maxLazyHeight = LocalConfiguration.current.screenHeightDp * .8 BaseSheet(themeColor = themeColorState, maxSheetHeightPercentage = .9f) { @@ -95,7 +94,8 @@ private fun Sort(themeColorState: ThemeColorState, sortFilter: MangaConstants.So Row( modifier = Modifier .fillMaxWidth(), - horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically, ) { Text(modifier = Modifier.padding(vertical = 16.dp), text = stringResource(id = R.string.sort), style = MaterialTheme.typography.labelMedium, color = MaterialTheme.colorScheme.onSurface) if (!sortFilter.matchesGlobalDefaults) { @@ -111,13 +111,11 @@ private fun Sort(themeColorState: ThemeColorState, sortFilter: MangaConstants.So SortLine(themeColorState, SortOption(sortFilter.sourceOrderSort, SourceOrder), stringResource(id = R.string.by_source_order), changeSort) SortLine(themeColorState, SortOption(sortFilter.chapterNumberSort, ChapterNumber), stringResource(id = R.string.by_chapter_number), changeSort) SortLine(themeColorState, SortOption(sortFilter.uploadDateSort, UploadDate), stringResource(id = R.string.by_update_date), changeSort) - } } @Composable private fun SortLine(themeColorState: ThemeColorState, state: SortOption, text: String, changeSort: (SortOption) -> Unit) { - Row( modifier = Modifier .fillMaxWidth() @@ -129,10 +127,10 @@ private fun SortLine(themeColorState: ThemeColorState, state: SortOption, text: } val sortOption = state.copy(sortState = newState) changeSort(sortOption) - } .padding(horizontal = 0.dp, vertical = 16.dp), - horizontalArrangement = Arrangement.spacedBy(16.dp), verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.spacedBy(16.dp), + verticalAlignment = Alignment.CenterVertically, ) { when (state.sortState) { Ascending -> { @@ -146,7 +144,6 @@ private fun SortLine(themeColorState: ThemeColorState, state: SortOption, text: } } Text(text = text, style = MaterialTheme.typography.bodyLarge, color = MaterialTheme.colorScheme.onSurface) - } } @@ -167,7 +164,8 @@ private fun Filter( Row( modifier = Modifier .fillMaxWidth(), - horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically, ) { Text( modifier = Modifier.padding(vertical = 16.dp), @@ -214,13 +212,11 @@ private fun Filter( CheckboxLine(themeColorState = themeColorState, checked = hideTitlesFilter, text = stringResource(id = R.string.hide_chapter_titles)) { changeHideTitles(!hideTitlesFilter) } - } } @Composable private fun FilterLine(themeColorState: ThemeColorState, state: MangaConstants.FilterOption, text: String, changeFilter: (MangaConstants.FilterOption) -> Unit) { - Row( modifier = Modifier .fillMaxWidth() @@ -254,7 +250,6 @@ private fun FilterLine(themeColorState: ThemeColorState, state: MangaConstants.F ) Gap(width = 8.dp) Text(text = text, style = MaterialTheme.typography.bodyLarge, color = MaterialTheme.colorScheme.onSurface) - } } @@ -278,23 +273,21 @@ private fun CheckboxLine(themeColorState: ThemeColorState, checked: Boolean, dis ) Gap(width = 8.dp) Text(text = text, style = MaterialTheme.typography.bodyLarge, color = MaterialTheme.colorScheme.onSurface) - } } @Composable private fun Scanlator(themeColorState: ThemeColorState, scanlatorFilter: MangaConstants.ScanlatorFilter, changeScanlatorFilter: (MangaConstants.ScanlatorOption?) -> Unit) { - Column( modifier = Modifier .fillMaxWidth() .padding(8.dp), ) { - Row( modifier = Modifier .fillMaxWidth(), - horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically, ) { Text( modifier = Modifier.padding(vertical = 16.dp), @@ -323,7 +316,6 @@ private fun Scanlator(themeColorState: ThemeColorState, scanlatorFilter: MangaCo @Composable private fun ScanlatorLine(themeColorState: ThemeColorState, scanlatorOption: MangaConstants.ScanlatorOption, enabledButton: Boolean, changeScanlatorFilter: () -> Unit) { - Row( modifier = Modifier .fillMaxWidth() @@ -342,23 +334,21 @@ private fun ScanlatorLine(themeColorState: ThemeColorState, scanlatorOption: Man ) Gap(width = 8.dp) Text(text = scanlatorOption.name, style = MaterialTheme.typography.bodyLarge, color = MaterialTheme.colorScheme.onSurface) - } } @Composable private fun Language(themeColorState: ThemeColorState, languageFilter: MangaConstants.LanguageFilter, changeLanguageFilter: (MangaConstants.LanguageOption?) -> Unit) { - Column( modifier = Modifier .fillMaxWidth() .padding(8.dp), ) { - Row( modifier = Modifier .fillMaxWidth(), - horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically, ) { Text( modifier = Modifier.padding(vertical = 16.dp), @@ -387,7 +377,6 @@ private fun Language(themeColorState: ThemeColorState, languageFilter: MangaCons @Composable private fun LanguageLine(themeColorState: ThemeColorState, languageOption: MangaConstants.LanguageOption, enabledButton: Boolean, changeLanguageFilter: () -> Unit) { - Row( modifier = Modifier .fillMaxWidth() @@ -406,9 +395,5 @@ private fun LanguageLine(themeColorState: ThemeColorState, languageOption: Manga ) Gap(width = 8.dp) Text(text = MdLang.fromIsoCode(languageOption.name)?.prettyPrint ?: "", style = MaterialTheme.typography.bodyLarge, color = MaterialTheme.colorScheme.onSurface) - } } - - - diff --git a/app/src/main/java/org/nekomanga/presentation/components/sheets/MergeSheet.kt b/app/src/main/java/org/nekomanga/presentation/components/sheets/MergeSheet.kt index 70a581309c..f89ae520d2 100644 --- a/app/src/main/java/org/nekomanga/presentation/components/sheets/MergeSheet.kt +++ b/app/src/main/java/org/nekomanga/presentation/components/sheets/MergeSheet.kt @@ -67,10 +67,8 @@ fun MergeSheet( mergeMangaClick: (MergeManga) -> Unit, cancelClick: () -> Unit, ) { - if (isMergedManga is IsMergedManga.Yes) { BaseSheet(themeColor = themeColorState) { - TextButton(onClick = { openMergeSource(isMergedManga.url, isMergedManga.title) }, modifier = Modifier.fillMaxWidth()) { Text(text = stringResource(id = R.string.open_merged_in_webview), color = themeColorState.buttonColor) } @@ -83,7 +81,6 @@ fun MergeSheet( val maxLazyHeight = LocalConfiguration.current.screenHeightDp * .5 BaseSheet(themeColor = themeColorState, maxSheetHeightPercentage = .9f) { - var searchTitle by remember { mutableStateOf(title) } Header(stringResource(id = R.string.select_an_entry), cancelClick) @@ -96,7 +93,10 @@ fun MergeSheet( SuccessResults(mergeMangaList = mergeSearchResults.mergeMangaList, mergeMangaClick = mergeMangaClick) } NonSuccessResultsAndChips( - themeColorState = themeColorState, searchResults = mergeSearchResults, title = title, altTitles = altTitles, + themeColorState = themeColorState, + searchResults = mergeSearchResults, + title = title, + altTitles = altTitles, chipClick = { chipText -> searchTitle = chipText search(chipText) @@ -105,7 +105,6 @@ fun MergeSheet( } SearchFooter(themeColorState = themeColorState, title = searchTitle, textChanged = { searchTitle = it }, search = search) - } } } @@ -119,8 +118,7 @@ private fun SuccessResults(mergeMangaList: List, mergeMangaClick: (M contentPadding = PaddingValues(top = 16.dp, bottom = 48.dp, start = 8.dp, end = 8.dp), verticalArrangement = Arrangement.spacedBy(8.dp), horizontalArrangement = Arrangement.spacedBy(8.dp), - ) - { + ) { items(mergeMangaList) { item -> Box( modifier = Modifier @@ -130,7 +128,8 @@ private fun SuccessResults(mergeMangaList: List, mergeMangaClick: (M .clickable { mergeMangaClick(item) }, ) { AsyncImage( - model = ImageRequest.Builder(LocalContext.current).data(item.thumbnail).crossfade(true).placeholder(Pastel.getColorLight()).build(), contentDescription = null, + model = ImageRequest.Builder(LocalContext.current).data(item.thumbnail).crossfade(true).placeholder(Pastel.getColorLight()).build(), + contentDescription = null, contentScale = ContentScale.Crop, modifier = Modifier .fillMaxWidth(), @@ -159,7 +158,6 @@ private fun SuccessResults(mergeMangaList: List, mergeMangaClick: (M color = Color.White, style = MaterialTheme.typography.bodyMedium.copy(fontWeight = FontWeight.Medium), ) - } } } diff --git a/app/src/main/java/org/nekomanga/presentation/components/sheets/TrackingDateSheet.kt b/app/src/main/java/org/nekomanga/presentation/components/sheets/TrackingDateSheet.kt index 9326f366e6..3c1db68f6e 100644 --- a/app/src/main/java/org/nekomanga/presentation/components/sheets/TrackingDateSheet.kt +++ b/app/src/main/java/org/nekomanga/presentation/components/sheets/TrackingDateSheet.kt @@ -73,9 +73,7 @@ fun TrackingDateSheet( val currentDateExists = trackingDate.currentDate > 0L - BaseSheet(themeColor = themeColorState) { - Box( modifier = Modifier .padding(horizontal = 8.dp) @@ -83,7 +81,8 @@ fun TrackingDateSheet( ) { IconButton(onClick = { onDismiss() }) { Icon( - imageVector = Icons.Default.Close, contentDescription = null, + imageVector = Icons.Default.Close, + contentDescription = null, modifier = Modifier .size(28.dp), tint = MaterialTheme.colorScheme.onSurface, @@ -102,10 +101,8 @@ fun TrackingDateSheet( .fillMaxWidth() .align(Alignment.CenterStart), ) - } - Gap(8.dp) Divider() @@ -177,7 +174,8 @@ fun TrackingDateSheet( Arrangement.SpaceBetween, ) { DateTextField( - onEditingComplete = { currentDate -> newDate = currentDate }, format = format, + onEditingComplete = { currentDate -> newDate = currentDate }, + format = format, maxDate = LocalDate.now(), contentTextStyle = MaterialTheme.typography.headlineSmall.copy(color = MaterialTheme.colorScheme.onSurface), cursorBrush = SolidColor(themeColorState.buttonColor), diff --git a/app/src/main/java/org/nekomanga/presentation/components/sheets/TrackingSearchSheet.kt b/app/src/main/java/org/nekomanga/presentation/components/sheets/TrackingSearchSheet.kt index c7c7d56c00..58f8713ca9 100644 --- a/app/src/main/java/org/nekomanga/presentation/components/sheets/TrackingSearchSheet.kt +++ b/app/src/main/java/org/nekomanga/presentation/components/sheets/TrackingSearchSheet.kt @@ -71,13 +71,10 @@ fun TrackingSearchSheet( var trackSearchItem by remember { mutableStateOf(null) } - BaseSheet(themeColor = themeColorState, maxSheetHeightPercentage = .9f) { - Column( modifier = Modifier.fillMaxWidth(), ) { - Header(stringResource(id = R.string.select_an_entry), cancelClick) when (trackSearchResult) { @@ -87,8 +84,7 @@ fun TrackingSearchSheet( .fillMaxWidth() .requiredHeightIn(0.dp, maxLazyHeight.dp), verticalArrangement = Arrangement.spacedBy(12.dp), - ) - { + ) { item { Gap(8.dp) } @@ -154,7 +150,6 @@ private fun CenteredBox(themeColorState: ThemeColorState, trackSearchResult: Tra is TrackSearchResult.Error -> Text(text = trackSearchResult.errorMessage) else -> Unit } - } } @@ -166,7 +161,6 @@ private fun TrackSearchItem( openInBrowser: (String, String) -> Unit, trackSearchItemClick: (TrackSearchItem) -> Unit, ) { - val isSelected = alreadySelectedTrack != null && alreadySelectedTrack.mediaId != 0L && alreadySelectedTrack.mediaId == trackSearch.trackItem.mediaId val (backdropColor, outlineColor) = if (isSelected) { @@ -175,13 +169,11 @@ private fun TrackSearchItem( MaterialTheme.colorScheme.surface to MaterialTheme.colorScheme.outline } - OutlinedCard( modifier = Modifier.padding(horizontal = 8.dp), border = CardDefaults.outlinedCardBorder(true).copy(brush = SolidColor(outlineColor)), onClick = { trackSearchItemClick(trackSearch) }, ) { - Box( modifier = Modifier .fillMaxWidth() @@ -200,7 +192,6 @@ private fun TrackSearchItem( .fillMaxWidth() .background(color = backdropColor.copy(alpha = NekoColors.highAlphaLowContrast)), ) { - IconButton( onClick = { openInBrowser(trackSearch.trackItem.trackingUrl, trackSearch.trackItem.title) }, modifier = Modifier @@ -208,7 +199,8 @@ private fun TrackSearchItem( .align(Alignment.TopEnd), ) { Icon( - imageVector = Icons.Default.OpenInBrowser, contentDescription = null, + imageVector = Icons.Default.OpenInBrowser, + contentDescription = null, modifier = Modifier.size(24.dp), tint = MaterialTheme.colorScheme.onSurface, ) @@ -251,7 +243,6 @@ private fun TrackSearchItem( color = MaterialTheme.colorScheme.onSurface.copy(alpha = NekoColors.mediumAlphaHighContrast), style = MaterialTheme.typography.bodyLarge, ) - } } @@ -291,4 +282,3 @@ private fun TrackSearchItem( } } } - diff --git a/app/src/main/java/org/nekomanga/presentation/components/sheets/TrackingSheet.kt b/app/src/main/java/org/nekomanga/presentation/components/sheets/TrackingSheet.kt index fb9fdbd4e9..f5cca0bb98 100644 --- a/app/src/main/java/org/nekomanga/presentation/components/sheets/TrackingSheet.kt +++ b/app/src/main/java/org/nekomanga/presentation/components/sheets/TrackingSheet.kt @@ -76,7 +76,6 @@ fun TrackingSheet( trackingStartDateClick: (TrackAndService, TrackingDate) -> Unit, trackingFinishDateClick: (TrackAndService, TrackingDate) -> Unit, ) { - var statusDialog by remember { mutableStateOf(HideDialog) } var scoreDialog by remember { mutableStateOf(HideDialog) } var removeTrackDialog by remember { mutableStateOf(HideDialog) } @@ -84,9 +83,6 @@ fun TrackingSheet( var calendarStartTrackDialog by remember { mutableStateOf(HideDialog) } var calendarFinishedTrackDialog by remember { mutableStateOf(HideDialog) } - - - BaseSheet(themeColor = themeColor) { if (statusDialog is ShowDialog) { val trackAndService = (statusDialog as ShowDialog).trackAndService @@ -137,8 +133,6 @@ fun TrackingSheet( trackingFinishDateClick(trackAndService, TrackingDate(readingDate = ReadingDate.Finish, trackAndService.track.finishedReadingDate, dateFormat = dateFormat)) } - - LazyColumn(modifier = Modifier.fillMaxWidth(), verticalArrangement = Arrangement.spacedBy(8.dp)) { items(servicesProvider()) { service -> val track = tracksProvider().firstOrNull { it.trackServiceId == service.id } @@ -199,7 +193,6 @@ private fun TrackingServiceItem( startDateClick: () -> Unit, finishDateClick: () -> Unit, ) { - OutlinedCard( shape = RoundedCornerShape(Shapes.sheetRadius), border = BorderStroke(1.dp, MaterialTheme.colorScheme.onSurface.copy(alpha = NekoColors.disabledAlphaLowContrast)), @@ -236,7 +229,8 @@ private fun NoTrack(themeColor: ThemeColorState, service: TrackServiceItem, onLo .fillMaxSize() .height(48.dp) .clickable { searchTrackerClick() }, - verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.SpaceBetween, ) { Logo(service = service, track = null, onClick = onLogoClick) Text(text = stringResource(id = R.string.add_tracking), color = themeColor.buttonColor, textAlign = TextAlign.Center, modifier = Modifier.fillMaxWidth()) @@ -260,12 +254,15 @@ private fun TrackRowOne( .conditional(!service.isMdList) { clickable { searchTrackerClick(track) } }, - verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.SpaceBetween, ) { Logo(service = service, track = track, onClick = onLogoClick) if (service.isAutoAddTracker && inLibrary) { Text( - text = track.title, color = MaterialTheme.colorScheme.onSurface, textAlign = TextAlign.Start, + text = track.title, + color = MaterialTheme.colorScheme.onSurface, + textAlign = TextAlign.Start, modifier = Modifier .fillMaxWidth() .padding(horizontal = 8.dp), @@ -274,7 +271,8 @@ private fun TrackRowOne( ) } else { Text( - text = track.title, color = MaterialTheme.colorScheme.onSurface, + text = track.title, + color = MaterialTheme.colorScheme.onSurface, modifier = Modifier .padding(8.dp) .fillMaxWidth(.85f), @@ -283,7 +281,8 @@ private fun TrackRowOne( ) IconButton(onClick = onRemoveClick) { Icon( - imageVector = Icons.Default.Cancel, contentDescription = null, + imageVector = Icons.Default.Cancel, + contentDescription = null, modifier = Modifier .padding(end = 8.dp) .size(24.dp), @@ -332,7 +331,6 @@ private fun TrackRowTwo(track: TrackItem, service: TrackServiceItem, statusClick } Text(text = chapterText, style = MaterialTheme.typography.bodyMedium.copy(letterSpacing = (-.3f).sp), color = MaterialTheme.colorScheme.onSurface) - } VerticalDivider() } @@ -369,7 +367,6 @@ fun TrackRowThree(track: TrackItem, dateFormat: DateFormat, startDateClick: () - horizontalArrangement = Arrangement.SpaceEvenly, verticalAlignment = Alignment.CenterVertically, ) { - TrackingBox(clickable = startDateClick) { val (startText, startColor) = when (track.startedReadingDate != 0L) { true -> dateFormat.format(track.startedReadingDate) to MaterialTheme.colorScheme.onSurface @@ -381,14 +378,12 @@ fun TrackRowThree(track: TrackItem, dateFormat: DateFormat, startDateClick: () - VerticalDivider() TrackingBox(clickable = finishDateClick) { - val (endText, endColor) = when (track.finishedReadingDate != 0L) { true -> dateFormat.format(track.finishedReadingDate) to MaterialTheme.colorScheme.onSurface false -> stringResource(id = R.string.finished_reading_date) to MaterialTheme.colorScheme.onSurface.copy(alpha = NekoColors.disabledAlphaHighContrast) } Text(text = endText, color = endColor, style = MaterialTheme.typography.bodyMedium) } - } } diff --git a/app/src/main/java/org/nekomanga/presentation/components/snackbar/SwipableSnackbarHost.kt b/app/src/main/java/org/nekomanga/presentation/components/snackbar/SwipableSnackbarHost.kt index 8934723fc5..3970629956 100644 --- a/app/src/main/java/org/nekomanga/presentation/components/snackbar/SwipableSnackbarHost.kt +++ b/app/src/main/java/org/nekomanga/presentation/components/snackbar/SwipableSnackbarHost.kt @@ -82,6 +82,3 @@ fun SwipeableSnackbarHost( ), ) } - - - diff --git a/app/src/main/java/org/nekomanga/presentation/extensions/ColorScheme.kt b/app/src/main/java/org/nekomanga/presentation/extensions/ColorScheme.kt index 8df8cc6251..bcf7badd52 100644 --- a/app/src/main/java/org/nekomanga/presentation/extensions/ColorScheme.kt +++ b/app/src/main/java/org/nekomanga/presentation/extensions/ColorScheme.kt @@ -7,7 +7,7 @@ import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import kotlin.math.ln -//copied from material 3 +// copied from material 3 fun ColorScheme.surfaceColorAtElevation( elevation: Dp, ): Color { @@ -24,4 +24,3 @@ fun ColorScheme.surfaceColorAtElevationCustomColor( val alpha = ((4.5f * ln(elevation.value + 1)) + 2f) / 100f return color.copy(alpha = alpha).compositeOver(surface) } - diff --git a/app/src/main/java/org/nekomanga/presentation/screens/AboutScreen.kt b/app/src/main/java/org/nekomanga/presentation/screens/AboutScreen.kt index e55658d21c..730cf8bfa4 100644 --- a/app/src/main/java/org/nekomanga/presentation/screens/AboutScreen.kt +++ b/app/src/main/java/org/nekomanga/presentation/screens/AboutScreen.kt @@ -214,7 +214,6 @@ fun AboutScreen( ) } } - } } } @@ -256,4 +255,3 @@ private fun LinkIcon( buttonClicked = { uriHandler.openUri(url) }, ) } - diff --git a/app/src/main/java/org/nekomanga/presentation/screens/EmptyScreen.kt b/app/src/main/java/org/nekomanga/presentation/screens/EmptyScreen.kt index 43596e1eda..57e53d03da 100644 --- a/app/src/main/java/org/nekomanga/presentation/screens/EmptyScreen.kt +++ b/app/src/main/java/org/nekomanga/presentation/screens/EmptyScreen.kt @@ -85,7 +85,6 @@ private fun EmptyScreen( Arrangement.Top, Alignment.CenterHorizontally, ) { - icon() message?.let { diff --git a/app/src/main/java/org/nekomanga/presentation/screens/FollowsScreen.kt b/app/src/main/java/org/nekomanga/presentation/screens/FollowsScreen.kt index 086535c683..ea39c60df9 100644 --- a/app/src/main/java/org/nekomanga/presentation/screens/FollowsScreen.kt +++ b/app/src/main/java/org/nekomanga/presentation/screens/FollowsScreen.kt @@ -54,7 +54,6 @@ fun FollowsScreen( toggleFavorite: (Long, List) -> Unit, retryClick: () -> Unit, ) { - val scope = rememberCoroutineScope() val sheetState = rememberModalBottomSheetState(initialValue = ModalBottomSheetValue.Hidden, skipHalfExpanded = true) @@ -68,7 +67,8 @@ fun FollowsScreen( } ModalBottomSheetLayout( - sheetState = sheetState, sheetShape = RoundedCornerShape(Shapes.sheetRadius), + sheetState = sheetState, + sheetShape = RoundedCornerShape(Shapes.sheetRadius), sheetContent = { Box(modifier = Modifier.defaultMinSize(minHeight = 1.dp)) { EditCategorySheet( @@ -86,7 +86,6 @@ fun FollowsScreen( } }, ) { - NekoScaffold( title = stringResource(id = R.string.follows), onNavigationIconClicked = onBackPress, @@ -109,7 +108,6 @@ fun FollowsScreen( actions = persistentListOf(Action(R.string.retry, retryClick)), ) } else { - val haptic = LocalHapticFeedback.current FollowsContent( @@ -153,7 +151,6 @@ private fun FollowsContent( top = paddingValues.calculateTopPadding(), ) - if (followsScreenState.value.isList) { MangaListWithHeader( groupedManga = followsScreenState.value.displayManga, @@ -163,7 +160,6 @@ private fun FollowsContent( onLongClick = mangaLongClick, ) } else { - MangaGridWithHeader( groupedManga = followsScreenState.value.displayManga, shouldOutlineCover = followsScreenState.value.outlineCovers, diff --git a/app/src/main/java/org/nekomanga/presentation/screens/LatestScreen.kt b/app/src/main/java/org/nekomanga/presentation/screens/LatestScreen.kt index 769b1fed5e..599d5a99de 100644 --- a/app/src/main/java/org/nekomanga/presentation/screens/LatestScreen.kt +++ b/app/src/main/java/org/nekomanga/presentation/screens/LatestScreen.kt @@ -59,7 +59,6 @@ fun LatestScreen( loadNextPage: () -> Unit, retryClick: () -> Unit, ) { - val scope = rememberCoroutineScope() val sheetState = rememberModalBottomSheetState(initialValue = ModalBottomSheetValue.Hidden, skipHalfExpanded = true) @@ -73,7 +72,8 @@ fun LatestScreen( } ModalBottomSheetLayout( - sheetState = sheetState, sheetShape = RoundedCornerShape(Shapes.sheetRadius), + sheetState = sheetState, + sheetShape = RoundedCornerShape(Shapes.sheetRadius), sheetContent = { Box(modifier = Modifier.defaultMinSize(minHeight = 1.dp)) { EditCategorySheet( @@ -91,7 +91,6 @@ fun LatestScreen( } }, ) { - NekoScaffold( title = stringResource(id = R.string.latest), onNavigationIconClicked = onBackPress, @@ -141,7 +140,6 @@ fun LatestScreen( contentPadding = incomingContentPadding, ) } else { - if (latestScreenState.value.isList) { MangaList( mangaList = latestScreenState.value.displayManga, @@ -178,5 +176,3 @@ fun LatestScreen( } } } - - diff --git a/app/src/main/java/org/nekomanga/presentation/screens/MangaScreen.kt b/app/src/main/java/org/nekomanga/presentation/screens/MangaScreen.kt index 41282866a7..f3e46bf4a5 100644 --- a/app/src/main/java/org/nekomanga/presentation/screens/MangaScreen.kt +++ b/app/src/main/java/org/nekomanga/presentation/screens/MangaScreen.kt @@ -110,7 +110,6 @@ fun MangaScreen( chapterActions: ChapterActions, onBackPressed: () -> Unit, ) { - val scope = rememberCoroutineScope() val sheetState = rememberModalBottomSheetState(initialValue = ModalBottomSheetValue.Hidden, skipHalfExpanded = true) @@ -124,7 +123,6 @@ fun MangaScreen( val context = LocalContext.current val snackbarHostState = remember { SnackbarHostState() } - LaunchedEffect(snackbarHostState.currentSnackbarData) { snackbar.collect { state -> scope.launch { @@ -167,7 +165,7 @@ fun MangaScreen( ) } - //set the current sheet to null when bottom sheet is closed + // set the current sheet to null when bottom sheet is closed if (sheetState.isVisible.not()) { currentBottomSheet = null } @@ -203,7 +201,6 @@ fun MangaScreen( } }, ) { - NekoScaffold( title = "", themeColorState = themeColorState, @@ -225,10 +222,9 @@ fun MangaScreen( backgroundColor = themeColorState.buttonColor, contentColor = MaterialTheme.colorScheme.surface, - ) + ) }, ) { - val mangaDetailContentPadding = PaddingValues( bottom = WindowInsets.navigationBars.only(WindowInsetsSides.Bottom) @@ -350,7 +346,6 @@ fun MangaScreen( ) } - CompositionLocalProvider(LocalRippleTheme provides themeColorState.rippleTheme, LocalTextSelectionColors provides themeColorState.textSelectionColors) { if (windowSizeClass.widthSizeClass == WindowWidthSizeClass.Expanded) { ExpandedLayout( @@ -378,7 +373,6 @@ fun MangaScreen( onConfirm = { chapterActions.delete(generalState.value.removedChapters) chapterActions.clearRemoved - }, onDismiss = chapterActions.clearRemoved, ) @@ -453,7 +447,6 @@ private fun ExpandedLayout( } private fun getButtonThemeColor(buttonColor: Color, isNightMode: Boolean): Color { - val color1 = buttonColor.toArgb() val luminance = ColorUtils.calculateLuminance(color1).toFloat() @@ -489,4 +482,3 @@ fun defaultThemeColorState(): ThemeColorState { altContainerColor = Color(ColorUtils.blendARGB(MaterialTheme.colorScheme.secondary.toArgb(), MaterialTheme.colorScheme.surface.toArgb(), .706f)), ) } - diff --git a/app/src/main/java/org/nekomanga/presentation/screens/SimilarScreen.kt b/app/src/main/java/org/nekomanga/presentation/screens/SimilarScreen.kt index 1654d71442..cfcfccda86 100644 --- a/app/src/main/java/org/nekomanga/presentation/screens/SimilarScreen.kt +++ b/app/src/main/java/org/nekomanga/presentation/screens/SimilarScreen.kt @@ -55,7 +55,6 @@ fun SimilarScreen( toggleFavorite: (Long, List) -> Unit, onRefresh: () -> Unit, ) { - val scope = rememberCoroutineScope() val sheetState = rememberModalBottomSheetState(initialValue = ModalBottomSheetValue.Hidden, skipHalfExpanded = true) @@ -69,7 +68,8 @@ fun SimilarScreen( } ModalBottomSheetLayout( - sheetState = sheetState, sheetShape = RoundedCornerShape(Shapes.sheetRadius), + sheetState = sheetState, + sheetShape = RoundedCornerShape(Shapes.sheetRadius), sheetContent = { Box(modifier = Modifier.defaultMinSize(minHeight = 1.dp)) { EditCategorySheet( @@ -87,7 +87,6 @@ fun SimilarScreen( } }, ) { - NekoScaffold( title = stringResource(id = R.string.similar), onNavigationIconClicked = onBackPress, @@ -110,10 +109,9 @@ fun SimilarScreen( backgroundColor = MaterialTheme.colorScheme.secondary, contentColor = MaterialTheme.colorScheme.onSecondary, - ) + ) }, ) { - val haptic = LocalHapticFeedback.current SimilarContent( @@ -134,7 +132,6 @@ fun SimilarScreen( }, ) } - } } } @@ -162,7 +159,6 @@ private fun SimilarContent( top = paddingValues.calculateTopPadding(), ) - if (similarScreenState.value.isList) { MangaListWithHeader( groupedManga = similarScreenState.value.displayManga, @@ -172,7 +168,6 @@ private fun SimilarContent( onLongClick = mangaLongClick, ) } else { - MangaGridWithHeader( groupedManga = similarScreenState.value.displayManga, shouldOutlineCover = similarScreenState.value.outlineCovers, diff --git a/app/src/main/java/org/nekomanga/presentation/screens/StatsScreen.kt b/app/src/main/java/org/nekomanga/presentation/screens/StatsScreen.kt index 59902ae7a7..0bce084829 100644 --- a/app/src/main/java/org/nekomanga/presentation/screens/StatsScreen.kt +++ b/app/src/main/java/org/nekomanga/presentation/screens/StatsScreen.kt @@ -55,7 +55,6 @@ fun StatsScreen( val isSimple = rememberSaveable(statsState.value.screenState) { statsState.value.screenState is StatsConstants.ScreenState.Simple } val hideAction = rememberSaveable(statsState.value.screenState) { statsState.value.screenState is StatsConstants.ScreenState.NoResults || statsState.value.screenState is Loading } - val (actionIcon, actionText, titleText) = rememberSaveable(isSimple) { when (isSimple) { true -> Triple(Icons.Default.ZoomInMap, R.string.view_detailed_statistics, R.string.simple_stats) @@ -63,7 +62,6 @@ fun StatsScreen( } } - NekoScaffold( title = stringResource(id = titleText), onNavigationIconClicked = onBackPressed, diff --git a/app/src/main/java/org/nekomanga/presentation/screens/mangadetails/BackDrop.kt b/app/src/main/java/org/nekomanga/presentation/screens/mangadetails/BackDrop.kt index f9103e10ef..f4c7d67445 100644 --- a/app/src/main/java/org/nekomanga/presentation/screens/mangadetails/BackDrop.kt +++ b/app/src/main/java/org/nekomanga/presentation/screens/mangadetails/BackDrop.kt @@ -43,6 +43,5 @@ fun BackDrop(themeColorState: ThemeColorState, artworkProvider: () -> Artwork, s generatePalette(it.result.drawable) }, ) - } } diff --git a/app/src/main/java/org/nekomanga/presentation/screens/mangadetails/ButtonBlock.kt b/app/src/main/java/org/nekomanga/presentation/screens/mangadetails/ButtonBlock.kt index 95774ae8d2..d7fd5348bd 100644 --- a/app/src/main/java/org/nekomanga/presentation/screens/mangadetails/ButtonBlock.kt +++ b/app/src/main/java/org/nekomanga/presentation/screens/mangadetails/ButtonBlock.kt @@ -64,7 +64,6 @@ fun ButtonBlock( linksClick: () -> Unit = {}, shareClick: () -> Unit = {}, ) { - if (!isInitializedProvider()) { return } @@ -82,7 +81,6 @@ fun ButtonBlock( false -> Triple(PaddingValues(horizontal = 12.dp, vertical = 8.dp), PaddingValues(horizontal = 12.dp, vertical = 4.dp), Modifier.height(48.dp)) } - Row( modifier = Modifier .fillMaxWidth() @@ -90,7 +88,6 @@ fun ButtonBlock( .padding(horizontal = 8.dp), verticalAlignment = Alignment.CenterVertically, ) { - val favConfig = when (inLibraryProvider()) { true -> ButtonConfig(icon = Icons.Filled.Favorite, buttonColors = checkedButtonColors, borderStroke = checkedBorderStroke, text = stringResource(R.string.in_library)) false -> ButtonConfig(icon = Icons.Filled.FavoriteBorder, buttonColors = uncheckedButtonColors, borderStroke = uncheckedBorderStroke, text = stringResource(R.string.add_to_library)) @@ -120,7 +117,6 @@ fun ButtonBlock( else -> ButtonConfig(icon = Icons.Filled.Sync, buttonColors = uncheckedButtonColors, borderStroke = uncheckedBorderStroke, text = stringResource(R.string.tracking)) } - OutlinedButton( onClick = trackingClick, modifier = buttonModifier, @@ -171,7 +167,8 @@ fun ButtonBlock( Gap(gapBetweenButtons) OutlinedButton( - onClick = similarClick, modifier = buttonModifier, + onClick = similarClick, + modifier = buttonModifier, shape = shape, border = uncheckedBorderStroke, contentPadding = padding, @@ -269,4 +266,3 @@ private fun RowScope.ButtonText(text: String, color: Color) { } private data class ButtonConfig(val icon: ImageVector? = null, val iIcon: IIcon? = null, val buttonColors: ButtonColors, val borderStroke: BorderStroke, val text: String) - diff --git a/app/src/main/java/org/nekomanga/presentation/screens/mangadetails/ChapterHeader.kt b/app/src/main/java/org/nekomanga/presentation/screens/mangadetails/ChapterHeader.kt index 811b73f244..9b198e8d8e 100644 --- a/app/src/main/java/org/nekomanga/presentation/screens/mangadetails/ChapterHeader.kt +++ b/app/src/main/java/org/nekomanga/presentation/screens/mangadetails/ChapterHeader.kt @@ -47,7 +47,6 @@ fun ChapterHeader(themeColor: ThemeColorState, numberOfChaptersProvider: () -> I horizontalArrangement = Arrangement.End, ) { - if (filterTextProvider().isNotBlank()) { Text( text = filterTextProvider(), @@ -66,7 +65,6 @@ fun ChapterHeader(themeColor: ThemeColorState, numberOfChaptersProvider: () -> I modifier = Modifier .align(Alignment.CenterVertically), ) - } } } @@ -89,6 +87,7 @@ private fun FilterIcon(buttonColor: Color, modifier: Modifier = Modifier) { imageVector = Icons.Filled.FilterList, modifier = modifier .size(28.dp), - tint = buttonColor, contentDescription = null, + tint = buttonColor, + contentDescription = null, ) } diff --git a/app/src/main/java/org/nekomanga/presentation/screens/mangadetails/DescriptionBlock.kt b/app/src/main/java/org/nekomanga/presentation/screens/mangadetails/DescriptionBlock.kt index 1e75180786..d1b1efdf48 100644 --- a/app/src/main/java/org/nekomanga/presentation/screens/mangadetails/DescriptionBlock.kt +++ b/app/src/main/java/org/nekomanga/presentation/screens/mangadetails/DescriptionBlock.kt @@ -98,7 +98,6 @@ fun DescriptionBlock( .then(clickable), // .animateContentSize(tween(400, easing = AnticipateOvershootInterpolator().toEasing())), ) { - if (!isExpanded) { val text = descriptionProvider().split("\n").take(2).joinToString("\n") @@ -193,7 +192,6 @@ fun DescriptionBlock( */ @Composable private fun MoreLessButton(buttonColor: Color, isMore: Boolean, modifier: Modifier = Modifier) { - val (text, icon) = when (isMore) { true -> R.string.more to Icons.Filled.ExpandMore false -> R.string.less to Icons.Filled.ExpandLess @@ -223,9 +221,10 @@ private fun AltTitles(altTitles: ImmutableList, currentTitle: String, ta val isCustomTitle = altTitles.contains(currentTitle) val onChipColor = MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = NekoColors.mediumAlphaHighContrast) - Text( - text = "Alt Titles:", style = MaterialTheme.typography.labelMedium, color = MaterialTheme.colorScheme.onSurface.copy(alpha = NekoColors.mediumAlphaLowContrast), + text = "Alt Titles:", + style = MaterialTheme.typography.labelMedium, + color = MaterialTheme.colorScheme.onSurface.copy(alpha = NekoColors.mediumAlphaLowContrast), ) LazyRow( modifier = Modifier @@ -288,7 +287,9 @@ private fun ColumnScope.Genres(genres: ImmutableList, tagColor: Color, g val haptic = LocalHapticFeedback.current Text( - text = "Tags:", style = MaterialTheme.typography.labelMedium, color = MaterialTheme.colorScheme.onSurface.copy(alpha = NekoColors.mediumAlphaLowContrast), + text = "Tags:", + style = MaterialTheme.typography.labelMedium, + color = MaterialTheme.colorScheme.onSurface.copy(alpha = NekoColors.mediumAlphaLowContrast), ) Gap(8.dp) FlowRow( @@ -303,11 +304,14 @@ private fun ColumnScope.Genres(genres: ImmutableList, tagColor: Color, g placeable.place(0, 0) } }, - mainAxisAlignment = FlowMainAxisAlignment.Start, mainAxisSpacing = 12.dp, crossAxisSpacing = 12.dp, + mainAxisAlignment = FlowMainAxisAlignment.Start, + mainAxisSpacing = 12.dp, + crossAxisSpacing = 12.dp, ) { genres.forEach { genre -> Chip( - label = genre, containerColor = tagColor, + label = genre, + containerColor = tagColor, modifier = Modifier.combinedClickable( onClick = { genreClick(genre) }, onLongClick = { @@ -317,7 +321,6 @@ private fun ColumnScope.Genres(genres: ImmutableList, tagColor: Color, g ), ) } - } } diff --git a/app/src/main/java/org/nekomanga/presentation/screens/mangadetails/DetailsBottomSheet.kt b/app/src/main/java/org/nekomanga/presentation/screens/mangadetails/DetailsBottomSheet.kt index e6b6ad261c..358c88e9fc 100644 --- a/app/src/main/java/org/nekomanga/presentation/screens/mangadetails/DetailsBottomSheet.kt +++ b/app/src/main/java/org/nekomanga/presentation/screens/mangadetails/DetailsBottomSheet.kt @@ -104,7 +104,7 @@ fun DetailsBottomSheet( }, ) is DetailsBottomSheetScreen.TrackingSearchSheet -> { - //do the initial search this way we dont need to "reset" the state after the sheet closes + // do the initial search this way we dont need to "reset" the state after the sheet closes LaunchedEffect(key1 = currentScreen.trackingService.id) { trackActions.search(mangaState.value.originalTitle, currentScreen.trackingService) } @@ -148,7 +148,8 @@ fun DetailsBottomSheet( } is DetailsBottomSheetScreen.ExternalLinksSheet -> { ExternalLinksSheet( - themeColorState = themeColorState, externalLinks = mangaState.value.externalLinks, + themeColorState = themeColorState, + externalLinks = mangaState.value.externalLinks, onLinkClick = { url, title -> closeSheet() openInWebView(url, title) diff --git a/app/src/main/java/org/nekomanga/presentation/screens/mangadetails/InformationBlock.kt b/app/src/main/java/org/nekomanga/presentation/screens/mangadetails/InformationBlock.kt index 6d9a927005..f759f81192 100644 --- a/app/src/main/java/org/nekomanga/presentation/screens/mangadetails/InformationBlock.kt +++ b/app/src/main/java/org/nekomanga/presentation/screens/mangadetails/InformationBlock.kt @@ -56,7 +56,6 @@ fun InformationBlock( titleLongClick: (String) -> Unit = {}, creatorLongClicked: (String) -> Unit = {}, ) { - val highAlpha = MaterialTheme.colorScheme.onSurface.copy(alpha = NekoColors.highAlphaLowContrast) val mediumAlpha = MaterialTheme.colorScheme.onSurface.copy(alpha = NekoColors.mediumAlphaLowContrast) @@ -122,7 +121,7 @@ fun InformationBlock( mainAxisAlignment = FlowMainAxisAlignment.Start, crossAxisAlignment = FlowCrossAxisAlignment.Center, - ) { + ) { if (langFlagProvider() != null) { val flag = when (langFlagProvider()!!.lowercase(Locale.US)) { "zh-hk" -> R.drawable.ic_flag_hk @@ -188,17 +187,15 @@ fun InformationBlock( com.mikepenz.iconics.compose.Image(asset = CommunityMaterial.Icon.cmd_check_decagram, colorFilter = ColorFilter.tint(mediumAlpha)) } } - } missingChaptersProvider()?.let { numberOfMissingChapters -> Gap(4.dp) NoRippleText( - text = stringResource(id = R.string.missing_chapters, numberOfMissingChapters), style = MaterialTheme.typography.bodyLarge, + text = stringResource(id = R.string.missing_chapters, numberOfMissingChapters), + style = MaterialTheme.typography.bodyLarge, color = mediumAlpha, ) } - } } - diff --git a/app/src/main/java/org/nekomanga/presentation/screens/mangadetails/MangaDetailsHeader.kt b/app/src/main/java/org/nekomanga/presentation/screens/mangadetails/MangaDetailsHeader.kt index 6d217c302a..4f64e9990b 100644 --- a/app/src/main/java/org/nekomanga/presentation/screens/mangadetails/MangaDetailsHeader.kt +++ b/app/src/main/java/org/nekomanga/presentation/screens/mangadetails/MangaDetailsHeader.kt @@ -67,7 +67,6 @@ fun MangaDetailsHeader( quickReadClick: () -> Unit = {}, ) { CompositionLocalProvider(LocalRippleTheme provides themeColorState.rippleTheme, LocalTextSelectionColors provides themeColorState.textSelectionColors) { - var favoriteExpanded by rememberSaveable { mutableStateOf(false) } val isExpanded = rememberSaveable { @@ -82,7 +81,6 @@ fun MangaDetailsHeader( false -> (LocalConfiguration.current.screenHeightDp / 2.1).dp } - Column { BoxWithConstraints { BackDrop( @@ -227,6 +225,5 @@ private fun FavoriteDropDown(favoriteExpanded: Boolean, themeColorState: ThemeCo ), ), - ) + ) } - diff --git a/app/src/main/java/org/nekomanga/presentation/screens/mangadetails/OverflowOptions.kt b/app/src/main/java/org/nekomanga/presentation/screens/mangadetails/OverflowOptions.kt index 513293d46a..df28e69188 100644 --- a/app/src/main/java/org/nekomanga/presentation/screens/mangadetails/OverflowOptions.kt +++ b/app/src/main/java/org/nekomanga/presentation/screens/mangadetails/OverflowOptions.kt @@ -27,12 +27,12 @@ fun OverflowOptions(chapterActions: MangaConstants.ChapterActions, chaptersProvi title = stringResource(id = R.string.next_5_unread), onClick = { chapterActions.download(emptyList(), MangaConstants.DownloadAction.DownloadNextUnread(5)) }, - ), + ), AppBar.OverflowAction( title = stringResource(id = R.string.next_10_unread), onClick = { chapterActions.download(emptyList(), MangaConstants.DownloadAction.DownloadNextUnread(10)) }, - ), + ), ), ), AppBar.OverflowAction( diff --git a/app/src/main/java/org/nekomanga/presentation/screens/stats/DetailedStats.kt b/app/src/main/java/org/nekomanga/presentation/screens/stats/DetailedStats.kt index bced4cc6dd..5786f85214 100644 --- a/app/src/main/java/org/nekomanga/presentation/screens/stats/DetailedStats.kt +++ b/app/src/main/java/org/nekomanga/presentation/screens/stats/DetailedStats.kt @@ -69,7 +69,6 @@ import org.nekomanga.presentation.extensions.surfaceColorAtElevation @Composable fun DetailedStats(detailedStats: DetailedState, colors: ImmutableList, contentPadding: PaddingValues, windowSizeClass: WindowSizeClass) { - var filterState by rememberSaveable { mutableStateOf(Filter.None) } var sortType by remember { mutableStateOf(Sort.Entries) } @@ -101,7 +100,6 @@ fun DetailedStats(detailedStats: DetailedState, colors: ImmutableList, co val context = LocalContext.current - when (filterState) { Filter.None -> { DetailedCardView(detailedStats.manga, contentPadding = contentPadding, splitScreen) @@ -135,7 +133,6 @@ fun DetailedStats(detailedStats: DetailedState, colors: ImmutableList, co @Composable private fun FilterChipHeader(filterState: Filter, filterStateClick: (Filter) -> Unit) { - LazyRow(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.spacedBy(4.dp)) { item { Gap(8.dp) @@ -289,7 +286,6 @@ private fun StartYearView( } val colorMap = remember { sortedSeries.associate { it.key to colors[0] }.toImmutableMap() } - DefaultView( contentPadding = contentPadding, splitScreen = splitScreen, @@ -378,7 +374,6 @@ private fun DefaultView( showSortChip: Boolean = true, graph: @Composable (width: Float) -> Unit, ) { - val chartWidth = when (splitScreen) { true -> .5f false -> 1f @@ -392,7 +387,6 @@ private fun DefaultView( } if (splitScreen) { - item { Row( modifier = Modifier @@ -423,7 +417,6 @@ private fun DefaultView( } } } else { - item { graph(chartWidth) } @@ -446,8 +439,7 @@ private fun DefaultView( @Composable private fun DetailedCardView(mangaList: ImmutableList, contentPadding: PaddingValues, splitScreen: Boolean) { if (splitScreen) { - LazyGridWrapper(contentPadding = contentPadding) - { + LazyGridWrapper(contentPadding = contentPadding) { items(mangaList, key = { it.id }) { DetailedCard(manga = it, modifier = Modifier.fillMaxWidth(.3f)) } @@ -508,7 +500,6 @@ private fun StatCardView( @Composable private fun LazyGridWrapper(contentPadding: PaddingValues, showSortChip: Boolean = false, sortType: Sort = Sort.Entries, sortChipClick: () -> Unit = {}, content: LazyGridScope.() -> Unit) { - LazyVerticalGrid(columns = GridCells.Adaptive(400.dp), contentPadding = PaddingValues(bottom = contentPadding.calculateBottomPadding())) { if (showSortChip) { item { @@ -623,7 +614,8 @@ private fun Pie(pieData: List, chartWidth: Float) { PieChart( modifier = Modifier .fillMaxWidth(), - pieData = pieData, config = PieConfig(isDonut = true, expandDonutOnClick = false), + pieData = pieData, + config = PieConfig(isDonut = true, expandDonutOnClick = false), ) } else { Text( @@ -719,7 +711,6 @@ private fun StatCard(header: String, headerColor: Color, count: Int, totalCount: Text(text = readDuration.getReadDuration(stringResource(id = R.string.none)), style = valueStyle) Text(text = percentage(readDuration, totalReadDuration), style = valueStyle) - } } } @@ -787,6 +778,5 @@ private enum class Filter { private enum class Sort(@StringRes val stringRes: Int) { Entries(R.string.most_entries), Chapters(R.string.chapters_read), - Duration(R.string.read_duration) + Duration(R.string.read_duration), } - diff --git a/app/src/main/java/org/nekomanga/presentation/screens/stats/SimpleStats.kt b/app/src/main/java/org/nekomanga/presentation/screens/stats/SimpleStats.kt index 669bdbec82..1e8f1fc28e 100644 --- a/app/src/main/java/org/nekomanga/presentation/screens/stats/SimpleStats.kt +++ b/app/src/main/java/org/nekomanga/presentation/screens/stats/SimpleStats.kt @@ -32,7 +32,6 @@ import kotlinx.collections.immutable.toImmutableList @Composable fun SimpleStats(statsState: StatsConstants.SimpleState, contentPadding: PaddingValues, windowSizeClass: WindowSizeClass) { - val na = stringResource(id = R.string.n_a) val context = LocalContext.current @@ -40,7 +39,6 @@ fun SimpleStats(statsState: StatsConstants.SimpleState, contentPadding: PaddingV val numberFormat = NumberFormat.getInstance(NumberFormat.NUMBERSTYLE) val stats = remember { - val userScore = when (statsState.averageUserRating == 0.0) { true -> na false -> statsState.averageUserRating.toString() @@ -73,9 +71,7 @@ fun SimpleStats(statsState: StatsConstants.SimpleState, contentPadding: PaddingV false -> Arrangement.Top } - LazyColumn(modifier = Modifier.fillMaxSize(), contentPadding = contentPadding, verticalArrangement = verticalArrangement) { - val axisPadding = when (isTablet) { true -> 16.dp false -> 8.dp @@ -101,14 +97,11 @@ fun SimpleStats(statsState: StatsConstants.SimpleState, contentPadding: PaddingV @Composable private fun BasicStat(value: String, label: String, isTablet: Boolean) { - val (titleTypography, labelTypography, padding) = when (isTablet) { true -> Triple(MaterialTheme.typography.headlineLarge.copy(fontWeight = FontWeight.SemiBold), MaterialTheme.typography.titleMedium, 20.dp) false -> Triple(MaterialTheme.typography.titleLarge.copy(fontWeight = FontWeight.SemiBold), MaterialTheme.typography.labelMedium, 12.dp) } - - ElevatedCard( shape = RoundedCornerShape(25), ) { @@ -120,4 +113,3 @@ private fun BasicStat(value: String, label: String, isTablet: Boolean) { } } } - diff --git a/app/src/main/java/org/nekomanga/presentation/theme/NekoColors.kt b/app/src/main/java/org/nekomanga/presentation/theme/NekoColors.kt index 7760e95a3d..bd677b2b59 100644 --- a/app/src/main/java/org/nekomanga/presentation/theme/NekoColors.kt +++ b/app/src/main/java/org/nekomanga/presentation/theme/NekoColors.kt @@ -71,5 +71,3 @@ fun dynamicTextSelectionColor(color: Color) = TextSelectionColors( handleColor = color, backgroundColor = color.copy(alpha = NekoColors.disabledAlphaHighContrast), ) - - diff --git a/gradle/androidx.versions.toml b/gradle/androidx.versions.toml index f2810e11e6..0e5c50d95e 100644 --- a/gradle/androidx.versions.toml +++ b/gradle/androidx.versions.toml @@ -1,5 +1,5 @@ [versions] -agp_version = "7.2.2" +agp_version = "7.3.0" lifecycle_version = "2.5.1" [libraries]