Skip to content

Commit 687a81f

Browse files
committed
Improve UI performance by marking composeable stable via .conf
1 parent 339c5c0 commit 687a81f

7 files changed

Lines changed: 31 additions & 15 deletions

File tree

composeApp/build.gradle.kts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,10 @@ android {
9393
sourceSets["main"].assets.setSrcDirs(listOf("../assets"))
9494
}
9595

96+
composeCompiler {
97+
stabilityConfigurationFiles.add(project.layout.projectDirectory.file("stability_config.conf"))
98+
}
99+
96100
compose.resources {
97101
publicResClass = true
98102
packageOfResClass = "com.linuxcommandlibrary.app.resources"

composeApp/src/commonMain/kotlin/com/linuxcommandlibrary/app/data/TipsRepository.kt

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,11 @@
11
package com.linuxcommandlibrary.app.data
22

33
import com.linuxcommandlibrary.shared.MarkdownParser
4-
import com.linuxcommandlibrary.shared.TextElement
4+
import com.linuxcommandlibrary.shared.TipInfo
55
import com.linuxcommandlibrary.shared.TipSectionElement
66
import com.linuxcommandlibrary.shared.platform.AssetReader
7-
import kotlinx.collections.immutable.ImmutableList
87
import kotlinx.collections.immutable.toImmutableList
98

10-
data class TipInfo(
11-
val id: Long,
12-
val title: String,
13-
val sections: ImmutableList<TipSectionElement>,
14-
)
15-
169
class TipsRepository(private val assetReader: AssetReader) {
1710

1811
fun getTips(): List<TipInfo> = try {

composeApp/src/commonMain/kotlin/com/linuxcommandlibrary/app/ui/composables/TableView.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,12 @@ import androidx.compose.ui.text.withStyle
2525
import androidx.compose.ui.unit.dp
2626
import com.linuxcommandlibrary.app.NavEvent
2727
import com.linuxcommandlibrary.shared.TextElement
28+
import kotlinx.collections.immutable.ImmutableList
2829

2930
@Composable
3031
fun TableView(
31-
headers: List<List<TextElement>>,
32-
rows: List<List<List<TextElement>>>,
32+
headers: ImmutableList<ImmutableList<TextElement>>,
33+
rows: ImmutableList<ImmutableList<ImmutableList<TextElement>>>,
3334
onNavigate: (NavEvent) -> Unit = {},
3435
modifier: Modifier = Modifier,
3536
) {

composeApp/src/commonMain/kotlin/com/linuxcommandlibrary/app/ui/composables/TipSectionContent.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import androidx.compose.ui.unit.dp
2121
import com.linuxcommandlibrary.app.NavEvent
2222
import com.linuxcommandlibrary.shared.TextElement
2323
import com.linuxcommandlibrary.shared.TipSectionElement
24+
import kotlinx.collections.immutable.ImmutableList
2425

2526
fun buildTextElementString(
2627
elements: List<TextElement>,
@@ -81,7 +82,7 @@ fun buildTextElementString(
8182

8283
@Composable
8384
fun TipSectionContent(
84-
sections: List<TipSectionElement>,
85+
sections: ImmutableList<TipSectionElement>,
8586
onNavigate: (NavEvent) -> Unit,
8687
textColor: Color = Color.Unspecified,
8788
commandVerticalPadding: Dp = 0.dp,

composeApp/src/commonMain/kotlin/com/linuxcommandlibrary/app/ui/screens/tips/TipsScreen.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import androidx.compose.runtime.getValue
1818
import androidx.compose.ui.Modifier
1919
import androidx.compose.ui.unit.dp
2020
import com.linuxcommandlibrary.app.NavEvent
21-
import com.linuxcommandlibrary.app.data.TipInfo
21+
import com.linuxcommandlibrary.shared.TipInfo
2222
import com.linuxcommandlibrary.app.ui.composables.SectionTitle
2323
import com.linuxcommandlibrary.app.ui.composables.TipSectionContent
2424
import kotlinx.collections.immutable.ImmutableList
@@ -46,7 +46,7 @@ fun TipsContent(
4646
.background(MaterialTheme.colorScheme.background)
4747
.fillMaxSize(),
4848
columns = StaggeredGridCells.Adaptive(minSize = 300.dp),
49-
contentPadding = PaddingValues(horizontal = 4.dp),
49+
contentPadding = PaddingValues(horizontal = 4.dp, vertical = 4.dp),
5050
) {
5151
items(
5252
items = tips,
@@ -59,7 +59,9 @@ fun TipsContent(
5959
}
6060

6161
@Composable
62-
private fun TipItemCard(tip: TipInfo, onNavigate: (NavEvent) -> Unit) {
62+
private fun TipItemCard(
63+
tip: TipInfo,
64+
onNavigate: (NavEvent) -> Unit) {
6365
Card(
6466
elevation = CardDefaults.cardElevation(defaultElevation = 4.dp),
6567
modifier = Modifier

composeApp/src/commonMain/kotlin/com/linuxcommandlibrary/app/ui/screens/tips/TipsViewModel.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.linuxcommandlibrary.app.ui.screens.tips
22

3-
import com.linuxcommandlibrary.app.data.TipInfo
3+
import com.linuxcommandlibrary.shared.TipInfo
44
import com.linuxcommandlibrary.app.data.TipsRepository
55
import com.linuxcommandlibrary.app.platform.showAndroidTerminalTip
66
import com.linuxcommandlibrary.shared.TextElement

composeApp/stability_config.conf

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// Classes from the common module that should be considered stable
2+
com.linuxcommandlibrary.shared.TipSectionElement
3+
com.linuxcommandlibrary.shared.TipSectionElement.*
4+
com.linuxcommandlibrary.shared.TextElement
5+
com.linuxcommandlibrary.shared.TextElement.*
6+
com.linuxcommandlibrary.shared.CommandElement
7+
com.linuxcommandlibrary.shared.CommandElement.*
8+
com.linuxcommandlibrary.shared.TipInfo
9+
com.linuxcommandlibrary.shared.BasicInfo
10+
com.linuxcommandlibrary.shared.BasicGroup
11+
com.linuxcommandlibrary.shared.CommandInfo
12+
com.linuxcommandlibrary.shared.CommandSectionInfo
13+
14+
// AndroidX Navigation
15+
androidx.navigation.NavDestination

0 commit comments

Comments
 (0)