diff --git a/app/src/main/kotlin/me/tylerbwong/stack/data/site/SiteStore.kt b/app/src/main/kotlin/me/tylerbwong/stack/data/site/SiteStore.kt index 3016b590..c0ce1691 100644 --- a/app/src/main/kotlin/me/tylerbwong/stack/data/site/SiteStore.kt +++ b/app/src/main/kotlin/me/tylerbwong/stack/data/site/SiteStore.kt @@ -15,7 +15,7 @@ class SiteStore @Inject constructor( ) { var site: String @Synchronized - get() = deepLinkSites.firstOrNull() + get() = deepLinkSites.lastOrNull() ?: preferences.getString(SITE_KEY, defaultSite) ?: defaultSite set(value) { @@ -26,7 +26,7 @@ class SiteStore @Inject constructor( /** * Used to determine the current site for the deep link session only. */ - private val deepLinkSites: MutableSet = mutableSetOf() + private val deepLinkSites: MutableList = mutableListOf() val siteLiveData: LiveData get() = mutableSiteLiveData @@ -37,8 +37,10 @@ class SiteStore @Inject constructor( mutableSiteLiveData.value = this.site } fun pushCurrentDeepLinkSite(site: String) { - deepLinkSites.add(site) - mutableSiteLiveData.value = this.site + if (deepLinkSites.lastOrNull() != site) { + deepLinkSites.add(site) + mutableSiteLiveData.value = this.site + } } companion object { diff --git a/app/src/main/kotlin/me/tylerbwong/stack/ui/comments/CommentHolder.kt b/app/src/main/kotlin/me/tylerbwong/stack/ui/comments/CommentHolder.kt index d30f23d9..880d5be7 100644 --- a/app/src/main/kotlin/me/tylerbwong/stack/ui/comments/CommentHolder.kt +++ b/app/src/main/kotlin/me/tylerbwong/stack/ui/comments/CommentHolder.kt @@ -81,6 +81,7 @@ class CommentHolder( binding.commentBody.setSpannableFactory(noCopySpannableFactory) } + @Suppress("ComplexMethod", "LongMethod") override fun CommentHolderBinding.bind(item: CommentItem) { val (bodyMarkdown, commentId, _, creationDate, _, owner, _) = item.comment commentBody.setMarkdown(bodyMarkdown) diff --git a/app/src/main/kotlin/me/tylerbwong/stack/ui/questions/detail/AnswerVotesHeaderHolder.kt b/app/src/main/kotlin/me/tylerbwong/stack/ui/questions/detail/AnswerVotesHeaderHolder.kt index 81c3df68..0ad033ce 100644 --- a/app/src/main/kotlin/me/tylerbwong/stack/ui/questions/detail/AnswerVotesHeaderHolder.kt +++ b/app/src/main/kotlin/me/tylerbwong/stack/ui/questions/detail/AnswerVotesHeaderHolder.kt @@ -25,6 +25,7 @@ class AnswerVotesHeaderHolder( parent, AnswerVotesHeaderHolderBinding::inflate ) { + @Suppress("LongMethod") override fun AnswerVotesHeaderHolderBinding.bind(item: AnswerVotesHeaderItem) { val voteCount = item.upVoteCount - item.downVoteCount votes.text = itemView.context.resources.getQuantityString( diff --git a/app/src/main/kotlin/me/tylerbwong/stack/ui/settings/sites/SitesActivity.kt b/app/src/main/kotlin/me/tylerbwong/stack/ui/settings/sites/SitesActivity.kt index dc906ee1..6de7807c 100644 --- a/app/src/main/kotlin/me/tylerbwong/stack/ui/settings/sites/SitesActivity.kt +++ b/app/src/main/kotlin/me/tylerbwong/stack/ui/settings/sites/SitesActivity.kt @@ -54,12 +54,12 @@ class SitesActivity : BaseActivity( supportActionBar?.title = getString(R.string.sites, getString(it.filterNameRes)) } - viewModel.fetchSites() + viewModel.forceFetchSites() } override fun onResume() { super.onResume() - viewModel.forceFetchSites() + viewModel.fetchSites() viewModel.currentQuery?.let { searchView?.setQuery(it, true) } } diff --git a/app/src/main/kotlin/me/tylerbwong/stack/ui/settings/sites/SitesViewModel.kt b/app/src/main/kotlin/me/tylerbwong/stack/ui/settings/sites/SitesViewModel.kt index ffc7a371..4ba5f15b 100644 --- a/app/src/main/kotlin/me/tylerbwong/stack/ui/settings/sites/SitesViewModel.kt +++ b/app/src/main/kotlin/me/tylerbwong/stack/ui/settings/sites/SitesViewModel.kt @@ -86,10 +86,9 @@ class SitesViewModel @Inject constructor( } private fun List.applySearch(query: String): List { - return filter { - val containsName = it.name.contains(query, ignoreCase = true) - val containsAudience = it.audience.contains(query, ignoreCase = true) - containsName || containsAudience - } + fun Site.queryInName() = name.contains(query, ignoreCase = true) + fun Site.queryInAudience() = audience.contains(query, ignoreCase = true) + return filter { it.queryInName() || it.queryInAudience() } + .sortedByDescending { it.queryInName() } } } diff --git a/buildSrc/src/main/kotlin/AndroidConfig.kt b/buildSrc/src/main/kotlin/AndroidConfig.kt index 4a5743a6..4cbe0ecc 100644 --- a/buildSrc/src/main/kotlin/AndroidConfig.kt +++ b/buildSrc/src/main/kotlin/AndroidConfig.kt @@ -2,7 +2,7 @@ object AndroidConfig { const val APPLICATION_ID = "me.tylerbwong.stack" const val COMPILE_SDK = 33 const val MIN_SDK = 26 - const val TARGET_SDK = 33 + const val TARGET_SDK = 34 const val VERSION_CODE = 24 const val VERSION_NAME = "2.1.2" } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 1a7187ff..e283c771 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,23 +1,23 @@ [versions] about-libraries = "10.6.2" -android-gradlePlugin = "8.0.2" +android-gradlePlugin = "8.1.0" androidx-activity = "1.7.2" androidx-appcompat = "1.6.1" androidx-browser = "1.5.0" androidx-compose-foundation = "1.4.3" -androidx-compose-compiler = "1.4.8" +androidx-compose-compiler = "1.5.1" androidx-compose-material = "1.4.3" androidx-compose-material3 = "1.2.0-alpha02" androidx-compose-runtime = "1.4.3" androidx-compose-ui = "1.4.3" androidx-constraintlayout = "2.1.4" androidx-core = "1.10.1" -androidx-fragment = "1.6.0" +androidx-fragment = "1.6.1" androidx-hilt = "1.0.0" androidx-lifecycle = "2.6.1" -androidx-preference = "1.2.0" +androidx-preference = "1.2.1" androidx-profileinstaller = "1.3.1" -androidx-recyclerview = "1.3.0" +androidx-recyclerview = "1.3.1" androidx-room = "2.5.2" androidx-security = "1.1.0-alpha06" androidx-swiperefreshlayout = "1.1.0" @@ -36,7 +36,7 @@ detekt = "1.19.0" espresso = "3.5.1" google-firebase-bom = "32.2.0" google-firebase-crashlytics-gradle = "2.9.7" -google-ksp = "1.8.22-1.0.11" +google-ksp = "1.9.0-1.0.12" google-material = "1.9.0" google-play-appUpdate = "2.1.0" google-play-billing = "6.0.1" @@ -44,8 +44,8 @@ google-play-review = "2.0.1" google-services = "4.3.15" insetter = "0.6.1" javaPoet = "1.13.0" -jetbrains-kotlin = "1.8.22" -jetbrains-kotlinx-coroutines = "1.7.2" +jetbrains-kotlin = "1.9.0" +jetbrains-kotlinx-coroutines = "1.7.3" jetbrains-markdown = "0.4.1" junit = "4.13.2" klock = "3.4.0"