From 54cb379a50eeb1b8b82600a02e2cbc9845180106 Mon Sep 17 00:00:00 2001 From: Jobobby04 Date: Sat, 16 Mar 2024 12:22:18 -0400 Subject: [PATCH] Update Detekt baseline --- .../sync/service/GoogleDriveSyncService.kt | 7 +- .../data/sync/service/SyncService.kt | 24 ++-- .../kanade/tachiyomi/ui/library/LibraryTab.kt | 3 +- config/detekt/baseline.xml | 108 +++++++++--------- 4 files changed, 72 insertions(+), 70 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/sync/service/GoogleDriveSyncService.kt b/app/src/main/java/eu/kanade/tachiyomi/data/sync/service/GoogleDriveSyncService.kt index 7beb6d512..3cd705652 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/sync/service/GoogleDriveSyncService.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/sync/service/GoogleDriveSyncService.kt @@ -469,9 +469,10 @@ class GoogleDriveService(private val context: Context) { } /** - * Handles the authorization code returned after the user has granted the application permission to access their Google Drive account. - * It obtains the access token and refresh token using the authorization code, saves the tokens to the SyncPreferences, - * sets up the Google Drive service using the obtained tokens, and initializes the service. + * Handles the authorization code returned after the user has granted the application permission to access their + * Google Drive account. + * It obtains the access token and refresh token using the authorization code, saves the tokens to the + * SyncPreferences, sets up the Google Drive service using the obtained tokens, and initializes the service. * @param authorizationCode The authorization code obtained from the OAuthCallbackServer. * @param activity The current activity. * @param onSuccess A callback function to be called on successful authorization. diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/sync/service/SyncService.kt b/app/src/main/java/eu/kanade/tachiyomi/data/sync/service/SyncService.kt index cf61869fa..c99dd902c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/sync/service/SyncService.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/sync/service/SyncService.kt @@ -70,7 +70,8 @@ abstract class SyncService( val mergedCategoriesList = mergeCategoriesLists(localSyncData.backup?.backupCategories, remoteSyncData.backup?.backupCategories) - val mergedSourcesList = mergeSourcesLists(localSyncData.backup?.backupSources, remoteSyncData.backup?.backupSources) + val mergedSourcesList = + mergeSourcesLists(localSyncData.backup?.backupSources, remoteSyncData.backup?.backupSources) val mergedPreferencesList = mergePreferencesLists(localSyncData.backup?.backupPreferences, remoteSyncData.backup?.backupPreferences) val mergedSourcePreferencesList = mergeSourcePreferencesLists( @@ -85,7 +86,6 @@ abstract class SyncService( ) // SY <-- - // Create the merged Backup object val mergedBackup = Backup( backupManga = mergedMangaList, @@ -150,10 +150,14 @@ abstract class SyncService( local != null && remote != null -> { // Compare versions to decide which manga to keep if (local.version >= remote.version) { - logcat(LogPriority.DEBUG, logTag) { "Keeping local version of ${local.title} with merged chapters." } + logcat(LogPriority.DEBUG, logTag) { + "Keeping local version of ${local.title} with merged chapters." + } local.copy(chapters = mergeChapters(local.chapters, remote.chapters)) } else { - logcat(LogPriority.DEBUG, logTag) { "Keeping remote version of ${remote.title} with merged chapters." } + logcat(LogPriority.DEBUG, logTag) { + "Keeping remote version of ${remote.title} with merged chapters." + } remote.copy(chapters = mergeChapters(local.chapters, remote.chapters)) } } @@ -227,7 +231,11 @@ abstract class SyncService( } localChapter != null && remoteChapter != null -> { // Use version number to decide which chapter to keep - val chosenChapter = if (localChapter.version >= remoteChapter.version) localChapter else remoteChapter + val chosenChapter = if (localChapter.version >= remoteChapter.version) { + localChapter + } else { + remoteChapter + } logcat(LogPriority.DEBUG, logTag) { "Merging chapter: ${chosenChapter.name}. Chosen version from: ${ if (localChapter.version >= remoteChapter.version) "Local" else "Remote" @@ -427,7 +435,8 @@ abstract class SyncService( } localSourcePreference != null && remoteSourcePreference != null -> { // Merge the individual preferences within the source preferences - val mergedPrefs = mergeIndividualPreferences(localSourcePreference.prefs, remoteSourcePreference.prefs) + val mergedPrefs = + mergeIndividualPreferences(localSourcePreference.prefs, remoteSourcePreference.prefs) BackupSourcePreferences(sourceKey, mergedPrefs) } else -> null @@ -449,8 +458,6 @@ abstract class SyncService( return mergedPrefsMap.values.toList() } - - // SY --> private fun mergeSavedSearchesLists( localSearches: List?, @@ -507,5 +514,4 @@ abstract class SyncService( return mergedSearches } // SY <-- - } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt index a668bbad6..599b8ae27 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt @@ -41,8 +41,8 @@ import eu.kanade.presentation.more.onboarding.GETTING_STARTED_URL import eu.kanade.presentation.util.Tab import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.library.LibraryUpdateJob -import eu.kanade.tachiyomi.ui.browse.migration.advanced.design.PreMigrationScreen import eu.kanade.tachiyomi.data.sync.SyncDataJob +import eu.kanade.tachiyomi.ui.browse.migration.advanced.design.PreMigrationScreen import eu.kanade.tachiyomi.ui.browse.source.globalsearch.GlobalSearchScreen import eu.kanade.tachiyomi.ui.category.CategoryScreen import eu.kanade.tachiyomi.ui.home.HomeScreen @@ -52,7 +52,6 @@ import eu.kanade.tachiyomi.ui.reader.ReaderActivity import eu.kanade.tachiyomi.util.system.toast import exh.favorites.FavoritesSyncStatus import exh.source.MERGED_SOURCE_ID -import eu.kanade.tachiyomi.util.system.toast import kotlinx.collections.immutable.persistentListOf import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.flow.collectLatest diff --git a/config/detekt/baseline.xml b/config/detekt/baseline.xml index f185da8d9..3ee4081b7 100644 --- a/config/detekt/baseline.xml +++ b/config/detekt/baseline.xml @@ -14,7 +14,6 @@ ArgumentListWrapping:BiometricTimesScreen.kt$BiometricTimesScreen$(SYMR.strings.delete_time_range_confirmation, dialog.timeRange.formattedString) ArgumentListWrapping:BiometricTimesScreen.kt$BiometricTimesScreen$(context) ArgumentListWrapping:BiometricTimesScreen.kt$BiometricTimesScreen$(if (startTime == null) SYMR.strings.biometric_lock_start_time.getString(context) else SYMR.strings.biometric_lock_end_time.getString(context)) - ArgumentListWrapping:ChapterLoader.kt$ChapterLoader$(chapter, manga, source, downloadManager, downloadProvider, tempFileManager) ArgumentListWrapping:DataSaver.kt$BandwidthHeroDataSaver$(imageUrl) ArgumentListWrapping:DataSaver.kt$WsrvNlDataSaver$(imageUrl) ArgumentListWrapping:DownloadPageLoader.kt$DownloadPageLoader$(dbChapter.name, dbChapter.scanlator, /* SY --> */ manga.ogTitle /* SY <-- */, source) @@ -305,6 +304,7 @@ CyclomaticComplexMethod:RateLimitInterceptor.kt$RateLimitInterceptor$override fun intercept(chain: Interceptor.Chain): Response CyclomaticComplexMethod:ReaderActivity.kt$ReaderActivity$override fun onCreate(savedInstanceState: Bundle?) CyclomaticComplexMethod:ReaderActivity.kt$ReaderActivity$private fun initializeMenu() + CyclomaticComplexMethod:ReaderViewModel.kt$ReaderViewModel$private suspend fun updateChapterProgress( readerChapter: ReaderChapter, page: Page/* SY --> */, hasExtraPage: Boolean, /* SY <-- */ ) CyclomaticComplexMethod:Scaffold.kt$@Composable private fun ScaffoldLayout( fabPosition: FabPosition, topBar: @Composable () -> Unit, startBar: @Composable () -> Unit, content: @Composable (PaddingValues) -> Unit, snackbar: @Composable () -> Unit, fab: @Composable () -> Unit, contentWindowInsets: WindowInsets, bottomBar: @Composable () -> Unit, ) CyclomaticComplexMethod:SearchEngine.kt$SearchEngine$fun parseQuery(query: String, enableWildcard: Boolean = true) CyclomaticComplexMethod:SettingsEhScreen.kt$SettingsEhScreen$private fun getRelativeTimeFromNow(then: Duration): RelativeTime @@ -414,6 +414,7 @@ FunctionNaming:Requests.kt$fun DELETE( url: String, headers: Headers = DEFAULT_HEADERS, body: RequestBody = DEFAULT_BODY, cache: CacheControl = DEFAULT_CACHE_CONTROL, ): Request FunctionNaming:Requests.kt$fun GET( url: HttpUrl, headers: Headers = DEFAULT_HEADERS, cache: CacheControl = DEFAULT_CACHE_CONTROL, ): Request FunctionNaming:Requests.kt$fun GET( url: String, headers: Headers = DEFAULT_HEADERS, cache: CacheControl = DEFAULT_CACHE_CONTROL, ): Request + FunctionNaming:Requests.kt$fun PATCH( url: String, headers: Headers = DEFAULT_HEADERS, body: RequestBody = DEFAULT_BODY, cache: CacheControl = DEFAULT_CACHE_CONTROL, ): Request FunctionNaming:Requests.kt$fun POST( url: String, headers: Headers = DEFAULT_HEADERS, body: RequestBody = DEFAULT_BODY, cache: CacheControl = DEFAULT_CACHE_CONTROL, ): Request FunctionNaming:Requests.kt$fun PUT( url: String, headers: Headers = DEFAULT_HEADERS, body: RequestBody = DEFAULT_BODY, cache: CacheControl = DEFAULT_CACHE_CONTROL, ): Request FunctionParameterNaming:MangaScreen.kt$MangaScreen$manga_: Manga? @@ -427,11 +428,12 @@ ImplicitDefaultLocale:MetadataUtil.kt$MetadataUtil$String.format("%.1f %sB", bytes / unit.toDouble().pow(exp.toDouble()), pre) ImplicitDefaultLocale:TimeRange.kt$TimeRange$String.format("%02d:%02d - %02d:%02d", startHour, startMinute, endHour, endMinute) ImportOrdering:Commands.kt$import org.gradle.api.Project import java.io.ByteArrayOutputStream import java.text.SimpleDateFormat import java.util.TimeZone import java.util.Date - ImportOrdering:LocalSource.kt$import android.content.Context import com.hippo.unifile.UniFile import eu.kanade.tachiyomi.source.CatalogueSource import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.UnmeteredSource import eu.kanade.tachiyomi.source.model.FilterList import eu.kanade.tachiyomi.source.model.MangasPage import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.util.lang.compareToCaseInsensitiveNaturalOrder import eu.kanade.tachiyomi.util.storage.CbzCrypto import eu.kanade.tachiyomi.util.storage.CbzCrypto.addStreamToZip import eu.kanade.tachiyomi.util.storage.CbzCrypto.getCoverStreamFromZip import eu.kanade.tachiyomi.util.storage.CbzCrypto.getZipInputStream import eu.kanade.tachiyomi.util.storage.CbzCrypto.isEncryptedZip import eu.kanade.tachiyomi.util.storage.EpubFile import kotlinx.coroutines.async import kotlinx.coroutines.awaitAll import kotlinx.serialization.json.Json import kotlinx.serialization.json.decodeFromStream import kotlinx.serialization.json.encodeToStream import logcat.LogPriority import nl.adaptivity.xmlutil.AndroidXmlReader import nl.adaptivity.xmlutil.serialization.XML import tachiyomi.core.common.i18n.stringResource import tachiyomi.core.metadata.comicinfo.COMIC_INFO_FILE import tachiyomi.core.metadata.comicinfo.ComicInfo import tachiyomi.core.metadata.comicinfo.copyFromComicInfo import tachiyomi.core.metadata.comicinfo.getComicInfo import tachiyomi.core.metadata.tachiyomi.MangaDetails import tachiyomi.core.common.storage.UniFileTempFileManager import tachiyomi.core.common.storage.extension import tachiyomi.core.common.storage.nameWithoutExtension import tachiyomi.core.common.util.lang.withIOContext import tachiyomi.core.common.util.system.ImageUtil import tachiyomi.core.common.util.system.logcat import tachiyomi.domain.chapter.service.ChapterRecognition import tachiyomi.domain.manga.model.Manga import tachiyomi.i18n.MR import tachiyomi.source.local.filter.OrderBy import tachiyomi.source.local.image.LocalCoverManager import tachiyomi.source.local.io.Archive import tachiyomi.source.local.io.Format import tachiyomi.source.local.io.LocalSourceFileSystem import tachiyomi.source.local.metadata.fillMetadata import uy.kohesive.injekt.injectLazy import java.io.InputStream import java.nio.charset.StandardCharsets import kotlin.time.Duration.Companion.days import com.github.junrar.Archive as JunrarArchive import tachiyomi.domain.source.model.Source as DomainSource + ImportOrdering:LocalCoverManager.kt$import android.content.Context import com.hippo.unifile.UniFile import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.util.storage.CbzCrypto import tachiyomi.core.common.storage.addStreamToZip import eu.kanade.tachiyomi.util.storage.DiskUtil import tachiyomi.core.common.storage.nameWithoutExtension import tachiyomi.core.common.util.system.ImageUtil import tachiyomi.source.local.io.LocalSourceFileSystem import java.io.InputStream + ImportOrdering:LocalSource.kt$import android.content.Context import android.os.Build import com.hippo.unifile.UniFile import eu.kanade.tachiyomi.source.CatalogueSource import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.UnmeteredSource import eu.kanade.tachiyomi.source.model.FilterList import eu.kanade.tachiyomi.source.model.MangasPage import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.util.lang.compareToCaseInsensitiveNaturalOrder import eu.kanade.tachiyomi.util.storage.CbzCrypto import eu.kanade.tachiyomi.util.storage.EpubFile import kotlinx.coroutines.async import kotlinx.coroutines.awaitAll import kotlinx.serialization.json.Json import kotlinx.serialization.json.decodeFromStream import kotlinx.serialization.json.encodeToStream import logcat.LogPriority import nl.adaptivity.xmlutil.AndroidXmlReader import nl.adaptivity.xmlutil.serialization.XML import tachiyomi.core.common.i18n.stringResource import tachiyomi.core.metadata.comicinfo.COMIC_INFO_FILE import tachiyomi.core.metadata.comicinfo.ComicInfo import tachiyomi.core.metadata.comicinfo.copyFromComicInfo import tachiyomi.core.metadata.comicinfo.getComicInfo import tachiyomi.core.metadata.tachiyomi.MangaDetails import tachiyomi.core.common.storage.UniFileTempFileManager import tachiyomi.core.common.storage.addStreamToZip import tachiyomi.core.common.storage.extension import tachiyomi.core.common.storage.getCoverStreamFromZip import tachiyomi.core.common.storage.getZipInputStream import tachiyomi.core.common.storage.isEncryptedZip import tachiyomi.core.common.storage.nameWithoutExtension import tachiyomi.core.common.util.lang.withIOContext import tachiyomi.core.common.util.system.ImageUtil import tachiyomi.core.common.util.system.logcat import tachiyomi.domain.chapter.service.ChapterRecognition import tachiyomi.domain.manga.model.Manga import tachiyomi.i18n.MR import tachiyomi.source.local.filter.OrderBy import tachiyomi.source.local.image.LocalCoverManager import tachiyomi.source.local.io.Archive import tachiyomi.source.local.io.Format import tachiyomi.source.local.io.LocalSourceFileSystem import tachiyomi.source.local.metadata.fillMetadata import uy.kohesive.injekt.injectLazy import java.io.InputStream import java.nio.charset.StandardCharsets import kotlin.time.Duration.Companion.days import com.github.junrar.Archive as JunrarArchive import tachiyomi.domain.source.model.Source as DomainSource Indentation:BackupCreator.kt$BackupCreator$ + Indentation:LocalSource.kt$LocalSource$ Indentation:LocalesConfigPlugin.kt$ Indentation:PagerPageHolder.kt$PagerPageHolder$ - Indentation:ReaderPreferences.kt$ReaderPreferences$ InstanceOfCheckForException:AppUpdateDownloadJob.kt$AppUpdateDownloadJob$e is CancellationException InstanceOfCheckForException:AppUpdateDownloadJob.kt$AppUpdateDownloadJob$e is StreamResetException InstanceOfCheckForException:BackupRestoreJob.kt$BackupRestoreJob$e is CancellationException @@ -533,6 +535,7 @@ LongMethod:ReaderViewModel.kt$ReaderViewModel$suspend fun init(mangaId: Long, initialChapterId: Long /* SY --> */, page: Int?/* SY <-- */): Result<Boolean> LongMethod:SYDomainModule.kt$SYDomainModule$override fun InjektRegistrar.registerInjectables() LongMethod:SyncChaptersWithSource.kt$SyncChaptersWithSource$suspend fun await( rawSourceChapters: List<SChapter>, manga: Manga, source: Source, manualFetch: Boolean = false, fetchWindow: Pair<Long, Long> = Pair(0, 0), ): List<Chapter> + LongMethod:SyncManager.kt$SyncManager$suspend fun syncData() LongMethod:Tester.kt$Tester$@Test fun localFavoritesStorageTester(): Unit LongMethod:TrackStatus.kt$TrackStatus.Companion$fun parseTrackerStatus(trackerManager: TrackerManager, tracker: Long, status: Long): TrackStatus? LongMethod:Tsumino.kt$Tsumino$override suspend fun parseIntoMetadata(metadata: TsuminoSearchMetadata, input: Document) @@ -547,8 +550,6 @@ LongParameterList:HistoryMapper.kt$HistoryMapper$( historyId: Long, mangaId: Long, chapterId: Long, title: String, thumbnailUrl: String?, sourceId: Long, isFavorite: Boolean, coverLastModified: Long, chapterNumber: Double, readAt: Date?, readDuration: Long, ) LongParameterList:MangaChapterListItem.kt$( action: LibraryPreferences.ChapterSwipeAction, read: Boolean, bookmark: Boolean, downloadState: Download.State, background: Color, onSwipe: () -> Unit, ) LongParameterList:MangaCoverFetcher.kt$MangaCoverFetcher$( private val url: String?, private val isLibraryManga: Boolean, private val options: Options, private val coverFileLazy: Lazy<File?>, private val customCoverFileLazy: Lazy<File>, private val diskCacheKeyLazy: Lazy<String>, private val sourceLazy: Lazy<HttpSource?>, private val callFactoryLazy: Lazy<Call.Factory>, private val diskCacheLazy: Lazy<DiskCache>, ) - LongParameterList:MangaMapper.kt$MangaMapper$( id: Long, source: Long, url: String, artist: String?, author: String?, description: String?, genre: List<String>?, title: String, status: Long, thumbnailUrl: String?, favorite: Boolean, lastUpdate: Long?, nextUpdate: Long?, initialized: Boolean, viewerFlags: Long, chapterFlags: Long, coverLastModified: Long, dateAdded: Long, // SY --> @Suppress("UNUSED_PARAMETER") filteredScanlators: String?, // SY <-- updateStrategy: UpdateStrategy, calculateInterval: Long, lastModifiedAt: Long, favoriteModifiedAt: Long?, ) - LongParameterList:MangaMapper.kt$MangaMapper$( id: Long, source: Long, url: String, artist: String?, author: String?, description: String?, genre: List<String>?, title: String, status: Long, thumbnailUrl: String?, favorite: Boolean, lastUpdate: Long?, nextUpdate: Long?, initialized: Boolean, viewerFlags: Long, chapterFlags: Long, coverLastModified: Long, dateAdded: Long, // SY --> @Suppress("UNUSED_PARAMETER") filteredScanlators: String?, // SY <-- updateStrategy: UpdateStrategy, calculateInterval: Long, lastModifiedAt: Long, favoriteModifiedAt: Long?, totalCount: Long, readCount: Double, latestUpload: Long, chapterFetchedAt: Long, lastRead: Long, bookmarkCount: Double, category: Long, ) LongParameterList:MangaRestorer.kt$MangaRestorer$( manga: Manga, chapters: List<BackupChapter>, categories: List<Long>, backupCategories: List<BackupCategory>, history: List<BackupHistory>, tracks: List<BackupTracking>, excludedScanlators: List<String>, // SY --> mergedMangaReferences: List<BackupMergedMangaReference>, flatMetadata: BackupFlatMetadata?, customManga: CustomMangaInfo?, // SY <-- ) LongParameterList:MangaScreen.kt$( manga: Manga, chapters: List<ChapterList>, isAnyChapterSelected: Boolean, chapterSwipeStartAction: LibraryPreferences.ChapterSwipeAction, chapterSwipeEndAction: LibraryPreferences.ChapterSwipeAction, // SY --> alwaysShowReadingProgress: Boolean, // SY <-- onChapterClicked: (Chapter) -> Unit, onDownloadChapter: ((List<ChapterList.Item>, ChapterDownloadAction) -> Unit)?, onChapterSelected: (ChapterList.Item, Boolean, Boolean, Boolean) -> Unit, onChapterSwipe: (ChapterList.Item, LibraryPreferences.ChapterSwipeAction) -> Unit, ) LongParameterList:MangaScreenModel.kt$MangaScreenModel$( title: String?, author: String?, artist: String?, thumbnailUrl: String?, description: String?, tags: List<String>?, status: Long?, ) @@ -567,6 +568,7 @@ LongParameterList:WebtoonRecyclerView.kt$WebtoonRecyclerView$( fromRate: Float, toRate: Float, fromX: Float, toX: Float, fromY: Float, toY: Float, ) LoopWithTooManyJumpStatements:DownloadStore.kt$DownloadStore$for LoopWithTooManyJumpStatements:EHentaiUpdateWorker.kt$EHentaiUpdateWorker$for + LoopWithTooManyJumpStatements:GoogleDriveSyncService.kt$GoogleDriveSyncService$while LoopWithTooManyJumpStatements:ImageUtil.kt$ImageUtil$for LoopWithTooManyJumpStatements:Kavita.kt$Kavita$for LoopWithTooManyJumpStatements:MemAutoFlushingLookupTable.kt$MemAutoFlushingLookupTable$while @@ -615,49 +617,10 @@ MagicNumber:Backup.kt$Backup$105 MagicNumber:Backup.kt$Backup$600 MagicNumber:BackupCategory.kt$BackupCategory$100 - MagicNumber:BackupChapter.kt$BackupChapter$10 - MagicNumber:BackupChapter.kt$BackupChapter$11 - MagicNumber:BackupChapter.kt$BackupChapter$3 - MagicNumber:BackupChapter.kt$BackupChapter$4 - MagicNumber:BackupChapter.kt$BackupChapter$5 - MagicNumber:BackupChapter.kt$BackupChapter$6 - MagicNumber:BackupChapter.kt$BackupChapter$7 - MagicNumber:BackupChapter.kt$BackupChapter$8 - MagicNumber:BackupChapter.kt$BackupChapter$9 MagicNumber:BackupCreateJob.kt$BackupCreateJob.Companion$10 MagicNumber:BackupDecoder.kt$BackupDecoder$0x1f8b MagicNumber:BackupFlatMetadata.kt$BackupFlatMetadata$3 MagicNumber:BackupHistory.kt$BackupHistory$3 - MagicNumber:BackupManga.kt$BackupManga$100 - MagicNumber:BackupManga.kt$BackupManga$101 - MagicNumber:BackupManga.kt$BackupManga$102 - MagicNumber:BackupManga.kt$BackupManga$103 - MagicNumber:BackupManga.kt$BackupManga$104 - MagicNumber:BackupManga.kt$BackupManga$105 - MagicNumber:BackupManga.kt$BackupManga$106 - MagicNumber:BackupManga.kt$BackupManga$107 - MagicNumber:BackupManga.kt$BackupManga$108 - MagicNumber:BackupManga.kt$BackupManga$13 - MagicNumber:BackupManga.kt$BackupManga$14 - MagicNumber:BackupManga.kt$BackupManga$16 - MagicNumber:BackupManga.kt$BackupManga$17 - MagicNumber:BackupManga.kt$BackupManga$18 - MagicNumber:BackupManga.kt$BackupManga$3 - MagicNumber:BackupManga.kt$BackupManga$4 - MagicNumber:BackupManga.kt$BackupManga$5 - MagicNumber:BackupManga.kt$BackupManga$6 - MagicNumber:BackupManga.kt$BackupManga$600 - MagicNumber:BackupManga.kt$BackupManga$601 - MagicNumber:BackupManga.kt$BackupManga$602 - MagicNumber:BackupManga.kt$BackupManga$603 - MagicNumber:BackupManga.kt$BackupManga$7 - MagicNumber:BackupManga.kt$BackupManga$8 - MagicNumber:BackupManga.kt$BackupManga$800 - MagicNumber:BackupManga.kt$BackupManga$801 - MagicNumber:BackupManga.kt$BackupManga$802 - MagicNumber:BackupManga.kt$BackupManga$804 - MagicNumber:BackupManga.kt$BackupManga$805 - MagicNumber:BackupManga.kt$BackupManga$9 MagicNumber:BackupMergedMangaReference.kt$BackupMergedMangaReference$3 MagicNumber:BackupMergedMangaReference.kt$BackupMergedMangaReference$4 MagicNumber:BackupMergedMangaReference.kt$BackupMergedMangaReference$5 @@ -696,7 +659,6 @@ MagicNumber:BrowseSourceEHentaiList.kt$5 MagicNumber:CbzCrypto.kt$CbzCrypto$100 MagicNumber:CbzCrypto.kt$CbzCrypto$128 - MagicNumber:CbzCrypto.kt$CbzCrypto$32 MagicNumber:CbzCrypto.kt$CbzCrypto$42 MagicNumber:ChapterCache.kt$ChapterCache$1024 MagicNumber:ChapterDownloadIndicator.kt$0.5f @@ -874,6 +836,10 @@ MagicNumber:GlanceUtils.kt$64 MagicNumber:GlanceUtils.kt$95 MagicNumber:GlobalSearchItem.kt$99f + MagicNumber:GoogleDriveSyncService.kt$GoogleDriveSyncService$10 + MagicNumber:GoogleDriveSyncService.kt$GoogleDriveSyncService$1000L + MagicNumber:GoogleDriveSyncService.kt$GoogleDriveSyncService$16000L + MagicNumber:GoogleDriveSyncService.kt$GoogleDriveSyncService$3 MagicNumber:Hash.kt$Hash$15 MagicNumber:Hash.kt$Hash$240 MagicNumber:Hash.kt$Hash$4 @@ -1104,11 +1070,19 @@ MagicNumber:Scrollbar.kt$50 MagicNumber:SecureActivityDelegate.kt$SecureActivityDelegate.Companion$60_000 MagicNumber:SecurityPreferences.kt$SecurityPreferences$0x7F + MagicNumber:SettingsDataScreen.kt$SettingsDataScreen$10080 MagicNumber:SettingsDataScreen.kt$SettingsDataScreen$12 + MagicNumber:SettingsDataScreen.kt$SettingsDataScreen$1440 MagicNumber:SettingsDataScreen.kt$SettingsDataScreen$168 + MagicNumber:SettingsDataScreen.kt$SettingsDataScreen$180 MagicNumber:SettingsDataScreen.kt$SettingsDataScreen$24 + MagicNumber:SettingsDataScreen.kt$SettingsDataScreen$2880 + MagicNumber:SettingsDataScreen.kt$SettingsDataScreen$30 + MagicNumber:SettingsDataScreen.kt$SettingsDataScreen$360 MagicNumber:SettingsDataScreen.kt$SettingsDataScreen$48 MagicNumber:SettingsDataScreen.kt$SettingsDataScreen$6 + MagicNumber:SettingsDataScreen.kt$SettingsDataScreen$60 + MagicNumber:SettingsDataScreen.kt$SettingsDataScreen$720 MagicNumber:SettingsDownloadScreen.kt$SettingsDownloadScreen$10 MagicNumber:SettingsDownloadScreen.kt$SettingsDownloadScreen$3 MagicNumber:SettingsDownloadScreen.kt$SettingsDownloadScreen$4 @@ -1170,6 +1144,12 @@ MagicNumber:Surface.kt$4.5f MagicNumber:Suwayomi.kt$Suwayomi$255 MagicNumber:Suwayomi.kt$Suwayomi$35 + MagicNumber:SyncDataJob.kt$SyncDataJob.Companion$10 + MagicNumber:SyncManager.kt$SyncManager$1000 + MagicNumber:SyncManager.kt$SyncManager$60000 + MagicNumber:SyncYomiSyncService.kt$SyncYomiSyncService$2000L + MagicNumber:SyncYomiSyncService.kt$SyncYomiSyncService$30L + MagicNumber:SyncYomiSyncService.kt$SyncYomiSyncService$32000L MagicNumber:Tabs.kt$0.08f MagicNumber:Tabs.kt$0.12f MagicNumber:TimeUtils.kt$4 @@ -1260,7 +1240,6 @@ MaxLineLength:BatchAddScreen.kt$BatchAddScreen$Text(text = stringResource(SYMR.strings.eh_batch_add_title), style = MaterialTheme.typography.titleLarge) MaxLineLength:BiometricTimesScreen.kt$BiometricTimesScreen$. MaxLineLength:BiometricTimesScreen.kt$BiometricTimesScreen$text = stringResource(SYMR.strings.delete_time_range_confirmation, dialog.timeRange.formattedString) - MaxLineLength:ChapterLoader.kt$ChapterLoader$isDownloaded -> DownloadPageLoader(chapter, manga, source, downloadManager, downloadProvider, tempFileManager) MaxLineLength:ComikeyHandler.kt$ComikeyHandler$private val urlForbidden = "https://fakeimg.pl/1800x2252/FFFFFF/000000/?font_size=120&text=This%20chapter%20is%20not%20available%20for%20free.%0A%0AIf%20you%20have%20purchased%20this%20chapter%2C%20please%20%0Aopen%20the%20website%20in%20web%20view%20and%20log%20in." MaxLineLength:CoroutinesExtensions.kt$* MaxLineLength:DataSaver.kt$BandwidthHeroDataSaver$imageUrl.contains(".jpeg", true) || imageUrl.contains(".jpg", true) -> if (ignoreJpg) imageUrl else getUrl(imageUrl) @@ -1380,6 +1359,8 @@ MaxLineLength:SourcesScreenModel.kt$SourcesScreenModel$SourceUiModel.Header(it.key.removePrefix(CATEGORY_KEY_PREFIX), it.value.firstOrNull()?.category != null) MaxLineLength:SourcesScreenModel.kt$SourcesScreenModel$private MaxLineLength:SpecificHostRateLimitInterceptor.kt$* + MaxLineLength:SyncService.kt$SyncService$* + MaxLineLength:SyncService.kt$SyncService$val MaxLineLength:TsuminoDescriptionAdapter.kt$binding.pages.text = context.pluralStringResource(SYMR.plurals.num_pages, meta.length ?: 0, meta.length ?: 0) MaxLineLength:TsuminoDescriptionAdapter.kt$binding.rating.text = (round((meta.averageRating ?: 0F) * 100.0) / 100.0).toString() + " - " + MetadataUIUtil.getRatingString(context, meta.averageRating?.times(2)) MaxLineLength:WebViewUtil.kt$WebViewUtil$* @@ -1391,7 +1372,6 @@ MaximumLineLength:BangumiInterceptor.kt$BangumiInterceptor$ MaximumLineLength:BatchAddScreen.kt$BatchAddScreen$ MaximumLineLength:BiometricTimesScreen.kt$BiometricTimesScreen$ - MaximumLineLength:ChapterLoader.kt$ChapterLoader$ MaximumLineLength:ComikeyHandler.kt$ComikeyHandler$ MaximumLineLength:DataSaver.kt$BandwidthHeroDataSaver$ MaximumLineLength:DataSaver.kt$WsrvNlDataSaver$ @@ -1453,6 +1433,7 @@ MaximumLineLength:ShikimoriApi.kt$ShikimoriApi$ MaximumLineLength:SourceFeedScreen.kt$SourceFeedScreen$ MaximumLineLength:SourcesScreenModel.kt$SourcesScreenModel$ + MaximumLineLength:SyncService.kt$SyncService$ MaximumLineLength:TsuminoDescriptionAdapter.kt$ MaximumLineLength:WebtoonPageHolder.kt$WebtoonPageHolder$ MayBeConst:TsuminoSearchMetadata.kt$TsuminoSearchMetadata.Companion$val BASE_URL = "https://www.tsumino.com" @@ -1589,9 +1570,6 @@ ModifierWithoutDefault:SortTagListItem.kt$modifier ModifierWithoutDefault:SourceCategoryListItem.kt$modifier ModifierWithoutDefault:SourcesFilterScreen.kt$modifier - MultiLineIfElse:CbzCrypto.kt$CbzCrypto$ZipOutputStream(this.openOutputStream()) - MultiLineIfElse:CbzCrypto.kt$CbzCrypto$ZipOutputStream(this.openOutputStream(), password) - MultiLineIfElse:CbzCrypto.kt$CbzCrypto$throw zipException MultiLineIfElse:SettingsAppearanceScreen.kt$SettingsAppearanceScreen$pluralStringResource( SYMR.plurals.row_count, previewsRowCount, previewsRowCount, ) MultiLineIfElse:SettingsAppearanceScreen.kt$SettingsAppearanceScreen$stringResource(MR.strings.disabled) NestedBlockDepth:Anilist.kt$Anilist$override suspend fun update(track: Track, didReadChapter: Boolean): Track @@ -1612,6 +1590,7 @@ NestedBlockDepth:FilterHandler.kt$FilterHandler$fun getQueryMap(filters: FilterList): Map<String, Any> NestedBlockDepth:GalleryAdder.kt$GalleryAdder$suspend fun addGallery( context: Context, url: String, fav: Boolean = false, forceSource: UrlImportableSource? = null, throttleFunc: suspend () -> Unit = {}, retry: Int = 1, ): GalleryAddEvent NestedBlockDepth:GetMergedChaptersByMangaId.kt$GetMergedChaptersByMangaId$private fun dedupeByPriority( mangaReferences: List<MergedMangaReference>, chapterList: List<Chapter>, ): List<Chapter> + NestedBlockDepth:GoogleDriveSyncService.kt$GoogleDriveSyncService$override suspend fun beforeSync() NestedBlockDepth:HBrowse.kt$HBrowse$override suspend fun parseIntoMetadata(metadata: HBrowseSearchMetadata, input: Document) NestedBlockDepth:ImageUtil.kt$ImageUtil$fun chooseBackground(context: Context, imageStream: InputStream): Drawable NestedBlockDepth:KavitaApi.kt$KavitaApi$fun getNewToken(apiUrl: String, apiKey: String): String? @@ -1636,13 +1615,10 @@ NestedBlockDepth:WebtoonRecyclerView.kt$WebtoonRecyclerView.Detector$override fun onTouchEvent(ev: MotionEvent): Boolean NestedBlockDepth:WebtoonViewer.kt$WebtoonViewer$fun scrollDown() NewLineAtEndOfFile:Commands.kt$.Commands.kt - NoBlankLineBeforeRbrace:CbzCrypto.kt$CbzCrypto$ - NoConsecutiveBlankLines:CbzCrypto.kt$CbzCrypto$ NoConsecutiveBlankLines:LocalesConfigPlugin.kt$ NoTrailingSpaces:ReaderViewModel.kt$ReaderViewModel$ NoUnusedImports:BackupManga.kt$eu.kanade.tachiyomi.data.backup.models.BackupManga.kt NoUnusedImports:CreateBackupScreen.kt$eu.kanade.presentation.more.settings.screen.data.CreateBackupScreen.kt - NoUnusedImports:SettingsAdvancedScreen.kt$eu.kanade.presentation.more.settings.screen.SettingsAdvancedScreen.kt NoUnusedImports:TachiyomiImageDecoder.kt$eu.kanade.tachiyomi.data.coil.TachiyomiImageDecoder.kt PreviewPublic:NamespaceTags.kt$NamespaceTagsPreview PreviewPublic:Scrollbar.kt$LazyListHorizontalScrollbarPreview @@ -1665,12 +1641,14 @@ ReturnCount:ExtensionLoader.kt$ExtensionLoader$private fun selectExtensionPackage(shared: ExtensionInfo?, private: ExtensionInfo?): ExtensionInfo? ReturnCount:FavoritesSyncHelper.kt$FavoritesSyncHelper$private suspend fun beginSync() ReturnCount:GalleryAdder.kt$GalleryAdder$suspend fun addGallery( context: Context, url: String, fav: Boolean = false, forceSource: UrlImportableSource? = null, throttleFunc: suspend () -> Unit = {}, retry: Int = 1, ): GalleryAddEvent + ReturnCount:GoogleDriveSyncService.kt$GoogleDriveSyncService$override suspend fun pullSyncData(): SyncData? ReturnCount:HttpPageLoader.kt$HttpPageLoader$private fun preloadNextPages(currentPage: ReaderPage, amount: Int): List<PriorityPage> ReturnCount:ImageUtil.kt$ImageUtil$fun chooseBackground(context: Context, imageStream: InputStream): Drawable ReturnCount:KavitaApi.kt$KavitaApi$fun getNewToken(apiUrl: String, apiKey: String): String? ReturnCount:KavitaApi.kt$KavitaApi$private fun getLatestChapterRead(url: String): Double ReturnCount:LibraryUpdateJob.kt$LibraryUpdateJob$override suspend fun doWork(): Result ReturnCount:LibraryUpdateJob.kt$LibraryUpdateJob$private suspend fun updateManga(manga: Manga, fetchWindow: Pair<Long, Long>): List<Chapter> + ReturnCount:LibraryUpdateJob.kt$LibraryUpdateJob.Companion$fun startNow( context: Context, category: Category? = null, target: Target = Target.CHAPTERS, // SY --> group: Int = LibraryGroup.BY_DEFAULT, groupExtra: String? = null, // SY <-- ): Boolean ReturnCount:LocalCoverManager.kt$LocalCoverManager$actual fun update( manga: SManga, inputStream: InputStream, // SY --> encrypted: Boolean, // SY <-- ): UniFile? ReturnCount:LocalSource.kt$LocalSource$private fun copyComicInfoFileFromArchive(chapterArchives: List<UniFile>, folder: UniFile): UniFile? ReturnCount:MainActivity.kt$MainActivity$private fun handleIntentAction(intent: Intent, navigator: Navigator): Boolean @@ -1691,6 +1669,9 @@ ReturnCount:ReaderViewModel.kt$ReaderViewModel$fun setAsCover(useExtraPage: Boolean) ReturnCount:ReaderViewModel.kt$ReaderViewModel$fun shareImages() ReturnCount:ReorderSortTag.kt$ReorderSortTag$fun await(tag: String, newPosition: Int): Result + ReturnCount:SyncManager.kt$SyncManager$private fun areChaptersDifferent(localChapters: List<Chapters>, remoteChapters: List<BackupChapter>): Boolean + ReturnCount:SyncManager.kt$SyncManager$private suspend fun isMangaDifferent(localManga: Manga, remoteManga: BackupManga): Boolean + ReturnCount:SyncManager.kt$SyncManager$suspend fun syncData() ReturnCount:TimeRange.kt$TimeRange.Companion$fun fromPreferenceString(timeRange: String): TimeRange? ReturnCount:WebViewInterceptor.kt$WebViewInterceptor$override fun intercept(chain: Interceptor.Chain): Response ReturnCount:WebViewInterceptor.kt$private fun isRequestHeaderSafe(_name: String, _value: String): Boolean @@ -1701,6 +1682,7 @@ SerialVersionUIDInSerializableClass:Manga.kt$Manga : Serializable SerialVersionUIDInSerializableClass:MigrationProcedureConfig.kt$MigrationProcedureConfig : Serializable SerialVersionUIDInSerializableClass:SourcesScreen.kt$SourcesScreen$SmartSearchConfig : Serializable + SerialVersionUIDInSerializableClass:Track.kt$Track : Serializable SpreadOperator:App.kt$App$( logConfig, *printers.toTypedArray(), ) SpreadOperator:ChapterRepositoryImpl.kt$ChapterRepositoryImpl$(*chapterUpdates.toTypedArray()) SpreadOperator:ChapterSanitizer.kt$ChapterSanitizer$(*CHAPTER_TRIM_CHARS) @@ -1722,7 +1704,6 @@ SwallowedException:Bangumi.kt$Bangumi$e: Exception SwallowedException:Bangumi.kt$Bangumi$e: Throwable SwallowedException:BrowseIcons.kt$e: Exception - SwallowedException:CbzCrypto.kt$CbzCrypto$e: Exception SwallowedException:ChapterCache.kt$ChapterCache$e: IOException SwallowedException:ChapterLoader.kt$ChapterLoader$e: UnsupportedRarV5Exception SwallowedException:ContextExtensions.kt$e: Exception @@ -1746,6 +1727,9 @@ SwallowedException:GalleryAdder.kt$GalleryAdder$e: Exception SwallowedException:GetChapterByUrlAndMangaId.kt$GetChapterByUrlAndMangaId$e: Exception SwallowedException:GetPagePreviews.kt$GetPagePreviews$e: Exception + SwallowedException:GoogleDriveSyncService.kt$GoogleDriveService$e: IOException + SwallowedException:GoogleDriveSyncService.kt$GoogleDriveService$e: TokenResponseException + SwallowedException:GoogleDriveSyncService.kt$GoogleDriveSyncService$e: Exception SwallowedException:HttpSource.kt$HttpSource$e: URISyntaxException SwallowedException:ImageUtil.kt$ImageUtil$e: Exception SwallowedException:Kavita.kt$Kavita$e: Exception @@ -1783,6 +1767,7 @@ SwallowedException:SourceFeedScreenModel.kt$SourceFeedScreenModel$e: Exception SwallowedException:StorageStep.kt$StorageStep$e: ActivityNotFoundException SwallowedException:Suwayomi.kt$Suwayomi$e: Exception + SwallowedException:SyncManager.kt$SyncManager$e: IOException SwallowedException:TrackInfoDialog.kt$TrackInfoDialogHomeScreen.Model$e: Exception SwallowedException:UrlImportableSource.kt$UrlImportableSource$e: URISyntaxException ThrowingExceptionsWithoutMessageOrCause:MangaScreenModel.kt$MangaScreenModel$IllegalStateException() @@ -1816,7 +1801,6 @@ TooGenericExceptionCaught:BaseTracker.kt$BaseTracker$e: Exception TooGenericExceptionCaught:BaseTracker.kt$BaseTracker$e: Throwable TooGenericExceptionCaught:BrowseIcons.kt$e: Exception - TooGenericExceptionCaught:CbzCrypto.kt$CbzCrypto$e: Exception TooGenericExceptionCaught:ChapterCache.kt$ChapterCache$e: Exception TooGenericExceptionCaught:ChapterLoader.kt$ChapterLoader$e: Throwable TooGenericExceptionCaught:ChapterRepositoryImpl.kt$ChapterRepositoryImpl$e: Exception @@ -1871,6 +1855,8 @@ TooGenericExceptionCaught:GetPagePreviews.kt$GetPagePreviews$e: Exception TooGenericExceptionCaught:GetTracks.kt$GetTracks$e: Exception TooGenericExceptionCaught:GlobalExceptionHandler.kt$GlobalExceptionHandler.Companion$e: Exception + TooGenericExceptionCaught:GoogleDriveSyncService.kt$GoogleDriveService$e: Exception + TooGenericExceptionCaught:GoogleDriveSyncService.kt$GoogleDriveSyncService$e: Exception TooGenericExceptionCaught:HistoryRepositoryImpl.kt$HistoryRepositoryImpl$e: Exception TooGenericExceptionCaught:HttpPageLoader.kt$HttpPageLoader$e: Throwable TooGenericExceptionCaught:ImageSaver.kt$ImageSaver$e: Exception @@ -1949,6 +1935,7 @@ TooGenericExceptionCaught:SourcePagingSource.kt$SourcePagingSource$e: Exception TooGenericExceptionCaught:Suwayomi.kt$Suwayomi$e: Exception TooGenericExceptionCaught:SyncChapterProgressWithTrack.kt$SyncChapterProgressWithTrack$e: Throwable + TooGenericExceptionCaught:SyncDataJob.kt$SyncDataJob$e: Exception TooGenericExceptionCaught:TrackChapter.kt$TrackChapter$e: Exception TooGenericExceptionCaught:TrackInfoDialog.kt$TrackInfoDialogHomeScreen.Model$e: Exception TooGenericExceptionCaught:TrackInfoDialog.kt$TrackerSearchScreen.Model$e: Throwable @@ -1978,6 +1965,13 @@ TooGenericExceptionThrown:EHentai.kt$EHentai$throw Exception("HTTP error ${response.code}", stacktrace) TooGenericExceptionThrown:EHentai.kt$EHentai$throw Exception(it.text()) TooGenericExceptionThrown:ExtensionLoader.kt$ExtensionLoader$throw Exception("Unknown source class type: ${obj.javaClass}") + TooGenericExceptionThrown:GoogleDriveSyncService.kt$GoogleDriveService$throw Exception(context.stringResource(MR.strings.google_drive_not_signed_in)) + TooGenericExceptionThrown:GoogleDriveSyncService.kt$GoogleDriveSyncService$throw Exception(context.stringResource(MR.strings.error_before_sync_gdrive) + ": ${e.message}") + TooGenericExceptionThrown:GoogleDriveSyncService.kt$GoogleDriveSyncService$throw Exception(context.stringResource(MR.strings.error_before_sync_gdrive) + ": Max retries reached.") + TooGenericExceptionThrown:GoogleDriveSyncService.kt$GoogleDriveSyncService$throw Exception(context.stringResource(MR.strings.error_deleting_google_drive_lock_file)) + TooGenericExceptionThrown:GoogleDriveSyncService.kt$GoogleDriveSyncService$throw Exception(context.stringResource(MR.strings.error_uploading_sync_data) + ": ${e.message}") + TooGenericExceptionThrown:GoogleDriveSyncService.kt$GoogleDriveSyncService$throw Exception(context.stringResource(MR.strings.google_drive_not_signed_in)) + TooGenericExceptionThrown:GoogleDriveSyncService.kt$GoogleDriveSyncService$throw Exception(e.message) TooGenericExceptionThrown:HttpSource.kt$HttpSource$throw RuntimeException(e) TooGenericExceptionThrown:KitsuApi.kt$KitsuApi$throw Exception("Could not find manga") TooGenericExceptionThrown:KitsuInterceptor.kt$KitsuInterceptor$throw Exception("Not authenticated with Kitsu") @@ -2074,6 +2068,7 @@ TooManyFunctions:ReaderViewModel.kt$ReaderViewModel : ViewModel TooManyFunctions:SecurityPreferences.kt$SecurityPreferences TooManyFunctions:SettingsAdvancedScreen.kt$SettingsAdvancedScreen : SearchableSettings + TooManyFunctions:SettingsDataScreen.kt$SettingsDataScreen : SearchableSettings TooManyFunctions:SettingsEhScreen.kt$SettingsEhScreen : SearchableSettings TooManyFunctions:SettingsItems.kt$tachiyomi.presentation.core.components.SettingsItems.kt TooManyFunctions:SettingsReaderScreen.kt$SettingsReaderScreen : SearchableSettings @@ -2082,6 +2077,8 @@ TooManyFunctions:SourceFeedScreenModel.kt$SourceFeedScreenModel : StateScreenModel TooManyFunctions:SourcePreferences.kt$SourcePreferences TooManyFunctions:Suwayomi.kt$Suwayomi : BaseTrackerEnhancedTracker + TooManyFunctions:SyncPreferences.kt$SyncPreferences + TooManyFunctions:SyncService.kt$SyncService TooManyFunctions:Tracker.kt$Tracker TooManyFunctions:UiPreferences.kt$UiPreferences TooManyFunctions:UnsortedPreferences.kt$UnsortedPreferences @@ -2282,7 +2279,6 @@ VariableNaming:TrackSearch.kt$TrackSearch$var publishing_status: String = "" VariableNaming:TrackSearch.kt$TrackSearch$var publishing_type: String = "" VariableNaming:TrackSearch.kt$TrackSearch$var start_date: String = "" - Wrapping:CbzCrypto.kt$CbzCrypto$( Wrapping:LibraryScreenModel.kt$LibraryScreenModel$->