From e7d5676cb5d814294fbb6240ed7ec6547b2dba87 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Fri, 26 Jan 2024 14:54:21 +0530 Subject: [PATCH] refactor: address issues from compose-lint 1.3.x --- .../msfjarvis/claw/android/BaseActivity.kt | 2 + .../claw/android/glance/SavedPostsWidget.kt | 50 +++++++++---------- .../android/ui/screens/LobstersPostsScreen.kt | 2 +- .../dev/msfjarvis/claw/gradle/LintConfig.kt | 4 +- .../claw/common/posts/LobstersCard.kt | 2 +- .../dev/msfjarvis/claw/common/ui/SearchBar.kt | 2 +- .../claw/common}/ui/decorations/ClawAppBar.kt | 4 +- .../claw/common/ui/decorations/MonthHeader.kt | 2 +- 8 files changed, 34 insertions(+), 34 deletions(-) rename {android/src/main/kotlin/dev/msfjarvis/claw/android => common/src/main/kotlin/dev/msfjarvis/claw/common}/ui/decorations/ClawAppBar.kt (95%) diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/BaseActivity.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/BaseActivity.kt index 285d0a42..ab46333b 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/BaseActivity.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/BaseActivity.kt @@ -15,6 +15,7 @@ import androidx.activity.SystemBarStyle import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.compose.runtime.Composable +import androidx.compose.runtime.Stable import androidx.compose.ui.platform.LocalUriHandler import com.deliveryhero.whetstone.Whetstone import dev.msfjarvis.claw.android.viewmodel.ClawViewModel @@ -24,6 +25,7 @@ import dev.msfjarvis.claw.common.urllauncher.UrlLauncher import javax.inject.Inject /** A base class that encapsulates all activities used by Claw. */ +@Stable abstract class BaseActivity : ComponentActivity() { @Inject lateinit var urlLauncher: UrlLauncher diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/glance/SavedPostsWidget.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/glance/SavedPostsWidget.kt index ffc74c94..173df685 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/glance/SavedPostsWidget.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/glance/SavedPostsWidget.kt @@ -29,6 +29,8 @@ import androidx.glance.text.TextStyle import dev.msfjarvis.claw.common.theme.DarkThemeColors import dev.msfjarvis.claw.common.theme.LightThemeColors import dev.msfjarvis.claw.database.local.SavedPost +import kotlinx.collections.immutable.ImmutableList +import kotlinx.collections.immutable.toImmutableList class SavedPostsWidget(private val posts: List) : GlanceAppWidget() { override suspend fun provideGlance(context: Context, id: GlanceId) { @@ -37,35 +39,33 @@ class SavedPostsWidget(private val posts: List) : GlanceAppWidget() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) GlanceTheme.colors else ColorProviders(light = LightThemeColors, dark = DarkThemeColors) ) { - WidgetHost() + WidgetHost(posts.toImmutableList()) } } } +} - @Composable - private fun WidgetHost() { - LazyColumn( - modifier = - GlanceModifier.fillMaxSize() - .background(GlanceTheme.colors.background) - .appWidgetBackground(), - horizontalAlignment = Alignment.CenterHorizontally, - ) { - item { - val style = MaterialTheme.typography.titleLarge - Text( - text = "Saved posts", - style = - TextStyle( - color = GlanceTheme.colors.onBackground, - fontSize = style.fontSize, - fontWeight = style.fontWeight.toGlance(), - fontStyle = style.fontStyle.toGlance(), - ), - modifier = GlanceModifier.padding(vertical = 8.dp), - ) - } - items(posts) { post -> WidgetListEntry(post = post) } +@Composable +fun WidgetHost(posts: ImmutableList, modifier: GlanceModifier = GlanceModifier) { + LazyColumn( + modifier = + modifier.fillMaxSize().background(GlanceTheme.colors.background).appWidgetBackground(), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + item { + val style = MaterialTheme.typography.titleLarge + Text( + text = "Saved posts", + style = + TextStyle( + color = GlanceTheme.colors.onBackground, + fontSize = style.fontSize, + fontWeight = style.fontWeight.toGlance(), + fontStyle = style.fontStyle.toGlance(), + ), + modifier = GlanceModifier.padding(vertical = 8.dp), + ) } + items(posts) { post -> WidgetListEntry(post = post) } } } diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/screens/LobstersPostsScreen.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/screens/LobstersPostsScreen.kt index f5acc7b9..fb08f2a0 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/screens/LobstersPostsScreen.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/screens/LobstersPostsScreen.kt @@ -65,7 +65,6 @@ import com.mikepenz.aboutlibraries.ui.compose.m3.LibrariesContainer import dev.msfjarvis.claw.android.MainActivity import dev.msfjarvis.claw.android.R import dev.msfjarvis.claw.android.SearchActivity -import dev.msfjarvis.claw.android.ui.decorations.ClawAppBar import dev.msfjarvis.claw.android.ui.decorations.ClawNavigationBar import dev.msfjarvis.claw.android.ui.decorations.ClawNavigationRail import dev.msfjarvis.claw.android.ui.decorations.NavigationItem @@ -79,6 +78,7 @@ import dev.msfjarvis.claw.android.viewmodel.ClawViewModel import dev.msfjarvis.claw.api.LobstersApi import dev.msfjarvis.claw.common.comments.CommentsPage import dev.msfjarvis.claw.common.comments.HTMLConverter +import dev.msfjarvis.claw.common.ui.decorations.ClawAppBar import dev.msfjarvis.claw.common.urllauncher.UrlLauncher import dev.msfjarvis.claw.common.user.UserProfile import kotlinx.collections.immutable.persistentListOf diff --git a/build-logic/src/main/kotlin/dev/msfjarvis/claw/gradle/LintConfig.kt b/build-logic/src/main/kotlin/dev/msfjarvis/claw/gradle/LintConfig.kt index a2851166..b2d26ec5 100644 --- a/build-logic/src/main/kotlin/dev/msfjarvis/claw/gradle/LintConfig.kt +++ b/build-logic/src/main/kotlin/dev/msfjarvis/claw/gradle/LintConfig.kt @@ -1,5 +1,5 @@ /* - * Copyright © 2023 Harsh Shandilya. + * Copyright © 2023-2024 Harsh Shandilya. * Use of this source code is governed by an MIT-style * license that can be found in the LICENSE file or at * https://opensource.org/licenses/MIT. @@ -39,8 +39,6 @@ object LintConfig { disable += "AndroidGradlePluginVersion" disable += "GradleDependency" disable += "NewerVersionAvailable" - // Jetpack Compose lints are incompatible with AGP 8.3.0-alpha06 - disable += "ObsoleteLintCustomCheck" } fun configureRootProject(project: Project) { diff --git a/common/src/main/kotlin/dev/msfjarvis/claw/common/posts/LobstersCard.kt b/common/src/main/kotlin/dev/msfjarvis/claw/common/posts/LobstersCard.kt index 9a03ba8a..aee19b15 100644 --- a/common/src/main/kotlin/dev/msfjarvis/claw/common/posts/LobstersCard.kt +++ b/common/src/main/kotlin/dev/msfjarvis/claw/common/posts/LobstersCard.kt @@ -230,7 +230,7 @@ private fun TagText(tag: String, modifier: Modifier = Modifier) { @ThemePreviews @Composable -fun LobstersCardPreview() { +private fun LobstersCardPreview() { LobstersTheme { LobstersCard( post = diff --git a/common/src/main/kotlin/dev/msfjarvis/claw/common/ui/SearchBar.kt b/common/src/main/kotlin/dev/msfjarvis/claw/common/ui/SearchBar.kt index 5221e7d7..a992436f 100644 --- a/common/src/main/kotlin/dev/msfjarvis/claw/common/ui/SearchBar.kt +++ b/common/src/main/kotlin/dev/msfjarvis/claw/common/ui/SearchBar.kt @@ -70,7 +70,7 @@ fun SearchBar( @DevicePreviews @ThemePreviews @Composable -fun SearchBarPreview() { +private fun SearchBarPreview() { LobstersTheme { Box(Modifier.fillMaxWidth().background(MaterialTheme.colorScheme.background).padding(8.dp)) { var value by remember { mutableStateOf("") } diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/decorations/ClawAppBar.kt b/common/src/main/kotlin/dev/msfjarvis/claw/common/ui/decorations/ClawAppBar.kt similarity index 95% rename from android/src/main/kotlin/dev/msfjarvis/claw/android/ui/decorations/ClawAppBar.kt rename to common/src/main/kotlin/dev/msfjarvis/claw/common/ui/decorations/ClawAppBar.kt index 57fb67bc..d27ee07f 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/decorations/ClawAppBar.kt +++ b/common/src/main/kotlin/dev/msfjarvis/claw/common/ui/decorations/ClawAppBar.kt @@ -4,7 +4,7 @@ * license that can be found in the LICENSE file or at * https://opensource.org/licenses/MIT. */ -package dev.msfjarvis.claw.android.ui.decorations +package dev.msfjarvis.claw.common.ui.decorations import androidx.compose.foundation.layout.RowScope import androidx.compose.material3.ExperimentalMaterial3Api @@ -45,6 +45,6 @@ fun ClawAppBar( @DevicePreviews @ThemePreviews @Composable -fun ClawAppBarPreview() { +private fun ClawAppBarPreview() { LobstersTheme { ClawAppBar(title = { Text("Claw", fontWeight = FontWeight.Bold) }) } } diff --git a/common/src/main/kotlin/dev/msfjarvis/claw/common/ui/decorations/MonthHeader.kt b/common/src/main/kotlin/dev/msfjarvis/claw/common/ui/decorations/MonthHeader.kt index 64b363a4..bf03a831 100644 --- a/common/src/main/kotlin/dev/msfjarvis/claw/common/ui/decorations/MonthHeader.kt +++ b/common/src/main/kotlin/dev/msfjarvis/claw/common/ui/decorations/MonthHeader.kt @@ -40,6 +40,6 @@ fun MonthHeader(label: String, modifier: Modifier = Modifier) { @DevicePreviews @ThemePreviews @Composable -fun MonthHeaderPreview() { +private fun MonthHeaderPreview() { LobstersTheme { MonthHeader("April 2023") } }