From 496f3637c44449a32f0743e7c9cf5eb53ebe99fa Mon Sep 17 00:00:00 2001 From: Koitharu Date: Fri, 4 Aug 2023 15:15:30 +0300 Subject: [PATCH] Update gradle and kotlin --- app/build.gradle | 21 +++++++++---------- .../core/db/migrations/Migration16To17.kt | 2 +- .../kotatsu/core/model/MangaSource.kt | 2 +- .../kotatsu/core/prefs/ColorScheme.kt | 5 +++-- .../kotatsu/core/prefs/NetworkPolicy.kt | 2 +- .../core/ui/list/fastscroll/FastScroller.kt | 2 +- .../ui/scrobbling/ScrobblingInfoSheet.kt | 4 ++-- .../kotatsu/favourites/domain/model/Cover.kt | 3 ++- .../ui/list/FavouritesListMenuProvider.kt | 2 +- .../history/ui/HistoryListMenuProvider.kt | 6 +++--- .../ui/adapter/TypedListSpacingDecoration.kt | 2 +- .../koitharu/kotatsu/local/data/MangaIndex.kt | 3 ++- .../ui/config/ScrobblerConfigViewModel.kt | 4 ++-- .../settings/AppearanceSettingsFragment.kt | 2 +- .../settings/NetworkSettingsFragment.kt | 7 +------ .../settings/ReaderSettingsFragment.kt | 6 +++--- .../userdata/UserDataSettingsViewModel.kt | 4 ++-- build.gradle | 5 +++-- gradle.properties | 1 - gradle/wrapper/gradle-wrapper.properties | 4 ++-- 20 files changed, 42 insertions(+), 45 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 8470855f2..6cdf39362 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,13 +2,15 @@ plugins { id 'com.android.application' id 'kotlin-android' id 'kotlin-kapt' + id 'com.google.devtools.ksp' id 'kotlin-parcelize' id 'dagger.hilt.android.plugin' } android { compileSdk = 33 - buildToolsVersion = '33.0.2' + compileSdkExtension = 4 + buildToolsVersion = '34.0.0' namespace = 'org.koitharu.kotatsu' defaultConfig { @@ -22,10 +24,8 @@ android { generatedDensities = [] testInstrumentationRunner "org.koitharu.kotatsu.HiltTestRunner" - kapt { - arguments { - arg 'room.schemaLocation', "$projectDir/schemas".toString() - } + ksp { + arg("room.schemaLocation", "$projectDir/schemas") } } buildTypes { @@ -41,6 +41,7 @@ android { } buildFeatures { viewBinding true + buildConfig true } sourceSets { androidTest.assets.srcDirs += files("$projectDir/schemas".toString()) @@ -81,11 +82,11 @@ afterEvaluate { } dependencies { //noinspection GradleDependency - implementation('com.github.KotatsuApp:kotatsu-parsers:03b4fc9f00') { + implementation('com.github.KotatsuApp:kotatsu-parsers:08eb9552d6') { exclude group: 'org.json', module: 'json' } - implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.8.22' + implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.9.0' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3' implementation 'androidx.appcompat:appcompat:1.6.1' @@ -103,8 +104,7 @@ dependencies { implementation 'androidx.preference:preference-ktx:1.2.0' implementation 'androidx.biometric:biometric-ktx:1.2.0-alpha05' implementation 'com.google.android.material:material:1.9.0' - //noinspection LifecycleAnnotationProcessorWithJava8 - kapt 'androidx.lifecycle:lifecycle-compiler:2.6.1' + implementation 'androidx.lifecycle:lifecycle-common-java8:2.6.1' // TODO https://issuetracker.google.com/issues/254846063 implementation 'androidx.work:work-runtime-ktx:2.8.1' @@ -117,8 +117,7 @@ dependencies { implementation 'androidx.room:room-runtime:2.5.2' implementation 'androidx.room:room-ktx:2.5.2' - //noinspection KaptUsageInsteadOfKsp - kapt 'androidx.room:room-compiler:2.5.2' + ksp 'androidx.room:room-compiler:2.5.2' implementation 'com.squareup.okhttp3:okhttp:4.11.0' implementation 'com.squareup.okhttp3:okhttp-dnsoverhttps:4.11.0' diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/db/migrations/Migration16To17.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/db/migrations/Migration16To17.kt index 776fdc0c1..cc86586f8 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/db/migrations/Migration16To17.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/db/migrations/Migration16To17.kt @@ -15,7 +15,7 @@ class Migration16To17(context: Context) : Migration(16, 17) { database.execSQL("CREATE INDEX `index_sources_sort_key` ON `sources` (`sort_key`)") val hiddenSources = prefs.getStringSet("sources_hidden", null).orEmpty() val order = prefs.getString("sources_order_2", null)?.split('|').orEmpty() - val sources = MangaSource.values() + val sources = MangaSource.entries for (source in sources) { if (source == MangaSource.LOCAL) { continue diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/model/MangaSource.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/model/MangaSource.kt index 341796c1e..ac21c279a 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/model/MangaSource.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/model/MangaSource.kt @@ -10,7 +10,7 @@ fun MangaSource.getLocaleTitle(): String? { } fun MangaSource(name: String): MangaSource { - MangaSource.values().forEach { + MangaSource.entries.forEach { if (it.name == name) return it } return MangaSource.DUMMY diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/prefs/ColorScheme.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/prefs/ColorScheme.kt index cd8c97b22..c2ffee581 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/prefs/ColorScheme.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/prefs/ColorScheme.kt @@ -4,6 +4,7 @@ import androidx.annotation.StringRes import androidx.annotation.StyleRes import com.google.android.material.color.DynamicColors import org.koitharu.kotatsu.R +import org.koitharu.kotatsu.parsers.util.find enum class ColorScheme( @StyleRes val styleResId: Int, @@ -31,7 +32,7 @@ enum class ColorScheme( } fun getAvailableList(): List { - val list = enumValues().toMutableList() + val list = ColorScheme.entries.toMutableList() if (!DynamicColors.isDynamicColorAvailable()) { list.remove(MONET) } @@ -39,7 +40,7 @@ enum class ColorScheme( } fun safeValueOf(name: String): ColorScheme? { - return enumValues().find { it.name == name } + return ColorScheme.entries.find(name) } } } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/prefs/NetworkPolicy.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/prefs/NetworkPolicy.kt index 8be2cf0c7..fc5556801 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/prefs/NetworkPolicy.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/prefs/NetworkPolicy.kt @@ -20,7 +20,7 @@ enum class NetworkPolicy( fun from(key: String?, default: NetworkPolicy): NetworkPolicy { val intKey = key?.toIntOrNull() ?: return default - return enumValues().find { it.key == intKey } ?: default + return NetworkPolicy.entries.find { it.key == intKey } ?: default } } } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/list/fastscroll/FastScroller.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/list/fastscroll/FastScroller.kt index 946992aea..973664042 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/list/fastscroll/FastScroller.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/list/fastscroll/FastScroller.kt @@ -519,7 +519,7 @@ class FastScroller @JvmOverloads constructor( private fun TypedArray.getBubbleSize(@StyleableRes index: Int, defaultValue: BubbleSize): BubbleSize { val ordinal = getInt(index, -1) - return BubbleSize.values().getOrNull(ordinal) ?: defaultValue + return BubbleSize.entries.getOrNull(ordinal) ?: defaultValue } private fun findValidParent(view: View): ViewGroup? = view.parents.firstNotNullOfOrNull { p -> diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/scrobbling/ScrobblingInfoSheet.kt b/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/scrobbling/ScrobblingInfoSheet.kt index c48304386..3593b0e69 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/scrobbling/ScrobblingInfoSheet.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/scrobbling/ScrobblingInfoSheet.kt @@ -88,7 +88,7 @@ class ScrobblingInfoSheet : viewModel.updateScrobbling( index = scrobblerIndex, rating = requireViewBinding().ratingBar.rating / requireViewBinding().ratingBar.numStars, - status = enumValues().getOrNull(position), + status = ScrobblingStatus.entries.getOrNull(position), ) } @@ -99,7 +99,7 @@ class ScrobblingInfoSheet : viewModel.updateScrobbling( index = scrobblerIndex, rating = rating / ratingBar.numStars, - status = enumValues().getOrNull(requireViewBinding().spinnerStatus.selectedItemPosition), + status = ScrobblingStatus.entries.getOrNull(requireViewBinding().spinnerStatus.selectedItemPosition), ) } } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/favourites/domain/model/Cover.kt b/app/src/main/kotlin/org/koitharu/kotatsu/favourites/domain/model/Cover.kt index 293a318a9..1b44af3bb 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/favourites/domain/model/Cover.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/favourites/domain/model/Cover.kt @@ -1,6 +1,7 @@ package org.koitharu.kotatsu.favourites.domain.model import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.util.find class Cover( val url: String, @@ -8,7 +9,7 @@ class Cover( ) { val mangaSource: MangaSource? - get() = if (source.isEmpty()) null else MangaSource.values().find { it.name == source } + get() = if (source.isEmpty()) null else MangaSource.entries.find(source) override fun equals(other: Any?): Boolean { if (this === other) return true diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/favourites/ui/list/FavouritesListMenuProvider.kt b/app/src/main/kotlin/org/koitharu/kotatsu/favourites/ui/list/FavouritesListMenuProvider.kt index 4300d3e05..c6da76d8b 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/favourites/ui/list/FavouritesListMenuProvider.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/favourites/ui/list/FavouritesListMenuProvider.kt @@ -38,7 +38,7 @@ class FavouritesListMenuProvider( override fun onMenuItemSelected(menuItem: MenuItem): Boolean { if (menuItem.groupId == R.id.group_order) { - val order = enumValues()[menuItem.order] + val order = SortOrder.entries[menuItem.order] viewModel.setSortOrder(order) return true } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/history/ui/HistoryListMenuProvider.kt b/app/src/main/kotlin/org/koitharu/kotatsu/history/ui/HistoryListMenuProvider.kt index 978bc0b12..c88046df8 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/history/ui/HistoryListMenuProvider.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/history/ui/HistoryListMenuProvider.kt @@ -23,7 +23,7 @@ class HistoryListMenuProvider( override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) { menuInflater.inflate(R.menu.opt_history, menu) val subMenu = menu.findItem(R.id.action_order)?.subMenu ?: return - for (order in HistoryOrder.values()) { + for (order in HistoryOrder.entries) { subMenu.add(R.id.group_order, Menu.NONE, order.ordinal, order.titleResId) } subMenu.setGroupCheckable(R.id.group_order, true, true) @@ -31,7 +31,7 @@ class HistoryListMenuProvider( override fun onMenuItemSelected(menuItem: MenuItem): Boolean { if (menuItem.groupId == R.id.group_order) { - val order = enumValues()[menuItem.order] + val order = HistoryOrder.entries[menuItem.order] viewModel.setSortOrder(order) return true } @@ -51,7 +51,7 @@ class HistoryListMenuProvider( } override fun onPrepareMenu(menu: Menu) { - val order = viewModel.sortOrder.value ?: return + val order = viewModel.sortOrder.value menu.findItem(R.id.action_order)?.subMenu?.forEach { item -> if (item.order == order.ordinal) { item.isChecked = true diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/list/ui/adapter/TypedListSpacingDecoration.kt b/app/src/main/kotlin/org/koitharu/kotatsu/list/ui/adapter/TypedListSpacingDecoration.kt index 9e4afc0e2..8a9db6002 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/list/ui/adapter/TypedListSpacingDecoration.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/list/ui/adapter/TypedListSpacingDecoration.kt @@ -21,7 +21,7 @@ class TypedListSpacingDecoration( state: RecyclerView.State ) { val itemType = parent.getChildViewHolder(view)?.itemViewType?.let { - ListItemType.values().getOrNull(it) + ListItemType.entries.getOrNull(it) } when (itemType) { ListItemType.FILTER_SORT, diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/local/data/MangaIndex.kt b/app/src/main/kotlin/org/koitharu/kotatsu/local/data/MangaIndex.kt index 6d08885af..a6a1c4bdc 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/local/data/MangaIndex.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/local/data/MangaIndex.kt @@ -9,6 +9,7 @@ import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.model.MangaState import org.koitharu.kotatsu.parsers.model.MangaTag +import org.koitharu.kotatsu.parsers.util.find import org.koitharu.kotatsu.parsers.util.json.getBooleanOrDefault import org.koitharu.kotatsu.parsers.util.json.getLongOrDefault import org.koitharu.kotatsu.parsers.util.json.getStringOrNull @@ -67,7 +68,7 @@ class MangaIndex(source: String?) { isNsfw = json.getBooleanOrDefault("nsfw", false), coverUrl = json.getString("cover"), state = json.getStringOrNull("state")?.let { stateString -> - MangaState.values().find { it.name == stateString } + MangaState.entries.find(stateString) }, description = json.getStringOrNull("description"), tags = json.getJSONArray("tags").mapJSONToSet { x -> diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/scrobbling/common/ui/config/ScrobblerConfigViewModel.kt b/app/src/main/kotlin/org/koitharu/kotatsu/scrobbling/common/ui/config/ScrobblerConfigViewModel.kt index 029d7ce1e..c18aaca7a 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/scrobbling/common/ui/config/ScrobblerConfigViewModel.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/scrobbling/common/ui/config/ScrobblerConfigViewModel.kt @@ -84,7 +84,7 @@ class ScrobblerConfigViewModel @Inject constructor( ) } val grouped = list.groupBy { it.status } - val statuses = enumValues() + val statuses = ScrobblingStatus.entries val result = ArrayList(list.size + statuses.size) for (st in statuses) { val subList = grouped[st] @@ -102,7 +102,7 @@ class ScrobblerConfigViewModel @Inject constructor( ): ScrobblerService { val serviceId = savedStateHandle.get(ScrobblerConfigActivity.EXTRA_SERVICE_ID) ?: 0 if (serviceId != 0) { - return enumValues().first { it.id == serviceId } + return ScrobblerService.entries.first { it.id == serviceId } } val uri = savedStateHandle.require(BaseActivity.EXTRA_DATA) return when (uri.host) { diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/settings/AppearanceSettingsFragment.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/AppearanceSettingsFragment.kt index 5905e7f17..c227eff25 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/settings/AppearanceSettingsFragment.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/settings/AppearanceSettingsFragment.kt @@ -49,7 +49,7 @@ class AppearanceSettingsFragment : } } findPreference(AppSettings.KEY_LIST_MODE)?.run { - entryValues = ListMode.values().names() + entryValues = ListMode.entries.names() setDefaultValueCompat(ListMode.GRID.name) } findPreference(AppSettings.KEY_APP_LOCALE)?.run { diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/settings/NetworkSettingsFragment.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/NetworkSettingsFragment.kt index 48d6f6407..72a5251d2 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/settings/NetworkSettingsFragment.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/settings/NetworkSettingsFragment.kt @@ -29,12 +29,7 @@ class NetworkSettingsFragment : addPreferencesFromResource(R.xml.pref_network) findPreference(AppSettings.KEY_PREFETCH_CONTENT)?.isVisible = contentCache.isCachingEnabled findPreference(AppSettings.KEY_DOH)?.run { - entryValues = arrayOf( - DoHProvider.NONE, - DoHProvider.GOOGLE, - DoHProvider.CLOUDFLARE, - DoHProvider.ADGUARD, - ).names() + entryValues = DoHProvider.entries.names() setDefaultValueCompat(DoHProvider.NONE.name) } bindProxySummary() diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/settings/ReaderSettingsFragment.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/ReaderSettingsFragment.kt index 8c2b792ac..fe59043eb 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/settings/ReaderSettingsFragment.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/settings/ReaderSettingsFragment.kt @@ -25,18 +25,18 @@ class ReaderSettingsFragment : override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { addPreferencesFromResource(R.xml.pref_reader) findPreference(AppSettings.KEY_READER_MODE)?.run { - entryValues = ReaderMode.values().names() + entryValues = ReaderMode.entries.names() setDefaultValueCompat(ReaderMode.STANDARD.name) } findPreference(AppSettings.KEY_READER_BACKGROUND)?.run { - entryValues = ReaderBackground.values().names() + entryValues = ReaderBackground.entries.names() setDefaultValueCompat(ReaderBackground.DEFAULT.name) } findPreference(AppSettings.KEY_READER_SWITCHERS)?.run { summaryProvider = MultiSummaryProvider(R.string.gestures_only) } findPreference(AppSettings.KEY_ZOOM_MODE)?.run { - entryValues = ZoomMode.values().names() + entryValues = ZoomMode.entries.names() setDefaultValueCompat(ZoomMode.FIT_CENTER.name) } updateReaderModeDependency() diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/settings/userdata/UserDataSettingsViewModel.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/userdata/UserDataSettingsViewModel.kt index 626d0f601..ff4b3a87a 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/settings/userdata/UserDataSettingsViewModel.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/settings/userdata/UserDataSettingsViewModel.kt @@ -43,7 +43,7 @@ class UserDataSettingsViewModel @Inject constructor( private var storageUsageJob: Job? = null init { - CacheDir.values().forEach { + CacheDir.entries.forEach { cacheSizes[it] = MutableStateFlow(-1L) } launchJob(Dispatchers.Default) { @@ -52,7 +52,7 @@ class UserDataSettingsViewModel @Inject constructor( launchJob(Dispatchers.Default) { feedItemsCount.value = trackingRepository.getLogsCount() } - CacheDir.values().forEach { cache -> + CacheDir.entries.forEach { cache -> launchJob(Dispatchers.Default) { checkNotNull(cacheSizes[cache]).value = storageManager.computeCacheSize(cache) } diff --git a/build.gradle b/build.gradle index 4f5a72761..9c706bc1d 100644 --- a/build.gradle +++ b/build.gradle @@ -4,9 +4,10 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:8.0.2' - classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.22' + classpath 'com.android.tools.build:gradle:8.2.0-alpha15' + classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.0' classpath 'com.google.dagger:hilt-android-gradle-plugin:2.47' + classpath 'com.google.devtools.ksp:symbol-processing-gradle-plugin:1.9.0-1.0.13' } } diff --git a/gradle.properties b/gradle.properties index 1522bd3a9..0c9e2bae4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,5 +17,4 @@ android.useAndroidX=true kotlin.code.style=official org.gradle.jvmargs=-Xmx1536M -Dkotlin.daemon.jvm.options\="-Xmx1536M" android.enableR8.fullMode=true -android.defaults.buildfeatures.buildconfig=true android.nonFinalResIds=false diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 2735291ae..a9ba95a45 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,7 @@ #Sat Feb 25 17:16:02 EET 2023 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionSha256Sum=ff7bf6a86f09b9b2c40bb8f48b25fc19cf2b2664fd1d220cd7ab833ec758d0d7 -distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip +distributionSha256Sum=38f66cd6eef217b4c35855bb11ea4e9fbc53594ccccb5fb82dfd317ef8c2c5a3 +distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists