refactor: use immutable collections where flagged by Lint

This commit is contained in:
Harsh Shandilya 2023-03-08 02:23:49 +05:30
parent d7cc55ed53
commit b969b5f0bf
No known key found for this signature in database
11 changed files with 22 additions and 43 deletions

View file

@ -36,6 +36,7 @@ dependencies {
implementation(libs.compose.richtext.markdown)
implementation(libs.compose.richtext.material3)
implementation(libs.compose.richtext.ui)
implementation(libs.kotlinx.collections.immutable)
implementation(libs.kotlinx.coroutines.core)
testImplementation(kotlin("test-junit"))
testImplementation(libs.testparameterinjector)

View file

@ -1,15 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<issues format="6" by="lint 7.4.2" type="baseline" client="gradle" dependencies="false" name="AGP (7.4.2)" variant="all" version="7.4.2">
<issue
id="ComposeUnstableCollections"
message="The Compose Compiler cannot infer the stability of a parameter if a List&lt;String> is used in it, even if the item type is stable.&#xA;You should use Kotlinx Immutable Collections instead: `tags: ImmutableList&lt;String>` or create an `@Immutable` wrapper for this class: `@Immutable data class TagsList(val items: List&lt;String>)`&#xA;See https://slackhq.github.io/compose-lints/rules/#avoid-using-unstable-collections for more information."
errorLine1=" tags: List&lt;String>,"
errorLine2=" ~~~~~~~~~~~~">
<location
file="src/main/kotlin/dev/msfjarvis/claw/common/posts/LobstersCard.kt"
line="204"
column="9"/>
</issue>
</issues>

View file

@ -48,6 +48,7 @@ import dev.msfjarvis.claw.model.LinkMetadata
import dev.msfjarvis.claw.model.LobstersPostDetails
import java.time.Instant
import java.time.temporal.TemporalAccessor
import kotlinx.collections.immutable.toImmutableList
@Composable
internal fun CommentsHeader(
@ -71,7 +72,7 @@ internal fun CommentsHeader(
verticalArrangement = Arrangement.spacedBy(8.dp),
) {
PostTitle(title = postDetails.title)
TagRow(tags = postDetails.tags)
TagRow(tags = postDetails.tags.toImmutableList())
Spacer(Modifier.height(4.dp))
if (linkMetadata.url.isNotBlank()) {

View file

@ -47,6 +47,8 @@ import com.google.accompanist.flowlayout.FlowRow
import dev.msfjarvis.claw.common.res.ClawIcons
import dev.msfjarvis.claw.common.ui.NetworkImage
import dev.msfjarvis.claw.database.local.SavedPost
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.toImmutableList
@Composable
@OptIn(ExperimentalFoundationApi::class)
@ -104,7 +106,7 @@ fun LobstersCard(
fun PostDetails(post: SavedPost, modifier: Modifier = Modifier) {
Column(modifier = modifier, verticalArrangement = Arrangement.spacedBy(8.dp)) {
PostTitle(title = post.title)
TagRow(tags = post.tags)
TagRow(tags = post.tags.toImmutableList())
Spacer(Modifier.height(4.dp))
Submitter(
text = AnnotatedString("Submitted by ${post.submitterName}"),
@ -201,7 +203,7 @@ private fun CommentsButton(
@Composable
internal fun TagRow(
tags: List<String>,
tags: ImmutableList<String>,
modifier: Modifier = Modifier,
) {
FlowRow(