Skip to content

Commit 67bc11c

Browse files
committed
Migrate to Kotlin 2.0.0 and Compose compiler plugin
1 parent cd86559 commit 67bc11c

File tree

10 files changed

+49
-54
lines changed

10 files changed

+49
-54
lines changed

build-logic/convention/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ java {
1111

1212
dependencies {
1313
compileOnly(libs.android.gradlePlugin)
14+
compileOnly(libs.compose.compiler.gradlePlugin)
1415
compileOnly(libs.kotlin.gradlePlugin)
1516
compileOnly(libs.spotless.gradlePlugin)
1617
}
Lines changed: 7 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,27 @@
11
package io.getstream.whatsappclone
22

33
import com.android.build.api.dsl.CommonExtension
4-
import java.io.File
54
import org.gradle.api.Project
6-
import org.gradle.api.artifacts.VersionCatalogsExtension
7-
import org.gradle.kotlin.dsl.getByType
5+
import org.gradle.kotlin.dsl.assign
6+
import org.gradle.kotlin.dsl.configure
7+
import org.jetbrains.kotlin.compose.compiler.gradle.ComposeCompilerGradlePluginExtension
88

99
/**
1010
* Configure Compose-specific options
1111
*/
1212
internal fun Project.configureAndroidCompose(
1313
commonExtension: CommonExtension<*, *, *, *, *, *>,
1414
) {
15-
val libs = extensions.getByType<VersionCatalogsExtension>().named("libs")
15+
pluginManager.apply("org.jetbrains.kotlin.plugin.compose")
1616

1717
commonExtension.apply {
1818
buildFeatures {
1919
compose = true
2020
}
21-
22-
composeOptions {
23-
kotlinCompilerExtensionVersion = libs.findVersion("androidxComposeCompiler").get().toString()
24-
}
25-
26-
kotlinOptions {
27-
freeCompilerArgs = freeCompilerArgs + buildComposeMetricsParameters()
28-
}
29-
}
30-
}
31-
32-
private fun Project.buildComposeMetricsParameters(): List<String> {
33-
val metricParameters = mutableListOf<String>()
34-
val enableMetricsProvider = project.providers.gradleProperty("enableComposeCompilerMetrics")
35-
val enableMetrics = (enableMetricsProvider.orNull == "true")
36-
if (enableMetrics) {
37-
val metricsFolder = File(project.buildDir, "compose-metrics")
38-
metricParameters.add("-P")
39-
metricParameters.add(
40-
"plugin:androidx.compose.compiler.plugins.kotlin:metricsDestination=" + metricsFolder.absolutePath
41-
)
4221
}
4322

44-
val enableReportsProvider = project.providers.gradleProperty("enableComposeCompilerReports")
45-
val enableReports = (enableReportsProvider.orNull == "true")
46-
if (enableReports) {
47-
val reportsFolder = File(project.buildDir, "compose-reports")
48-
metricParameters.add("-P")
49-
metricParameters.add(
50-
"plugin:androidx.compose.compiler.plugins.kotlin:reportsDestination=" + reportsFolder.absolutePath
51-
)
23+
extensions.configure<ComposeCompilerGradlePluginExtension> {
24+
enableStrongSkippingMode = true
25+
reportsDestination = layout.buildDirectory.dir("compose_compiler")
5226
}
53-
return metricParameters.toList()
5427
}

build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ plugins {
1212
alias(libs.plugins.kotlin.jvm) apply false
1313
alias(libs.plugins.kotlin.serialization) apply false
1414
alias(libs.plugins.ksp) apply false
15+
alias(libs.plugins.compose.compiler) apply false
1516
alias(libs.plugins.hilt) apply false
1617
alias(libs.plugins.google.secrets) apply false
1718
alias(libs.plugins.spotless) apply false

features/calls/src/main/kotlin/io/getstream/whatsappclone/calls/WhatsAppCallHistory.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import androidx.compose.runtime.Composable
3232
import androidx.compose.ui.Alignment
3333
import androidx.compose.ui.Modifier
3434
import androidx.compose.ui.draw.clip
35+
import androidx.compose.ui.res.painterResource
3536
import androidx.compose.ui.unit.dp
3637
import com.skydoves.landscapist.glide.GlideImage
3738
import io.getstream.whatsappclone.designsystem.icon.WhatsAppIcons
@@ -57,7 +58,9 @@ fun WhatsAppCallHistory(
5758
.size(56.dp)
5859
.clip(CircleShape),
5960
imageModel = { whatsAppUser.picture },
60-
previewPlaceholder = io.getstream.whatsappclone.designsystem.R.drawable.placeholder
61+
previewPlaceholder = painterResource(
62+
id = io.getstream.whatsappclone.designsystem.R.drawable.placeholder
63+
)
6164
)
6265

6366
Column(modifier = Modifier.padding(start = 12.dp)) {

features/calls/src/main/kotlin/io/getstream/whatsappclone/calls/info/WhatsAppCallHistoryInfoBody.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import androidx.compose.material3.Text
2727
import androidx.compose.runtime.Composable
2828
import androidx.compose.ui.Modifier
2929
import androidx.compose.ui.draw.clip
30+
import androidx.compose.ui.res.painterResource
3031
import androidx.compose.ui.unit.dp
3132
import androidx.constraintlayout.compose.ConstraintLayout
3233
import androidx.hilt.navigation.compose.hiltViewModel
@@ -57,7 +58,7 @@ fun WhatsAppCallHistoryInfoBody(
5758
top.linkTo(parent.top)
5859
},
5960
imageModel = { whatsAppUser.picture },
60-
previewPlaceholder = R.drawable.placeholder
61+
previewPlaceholder = painterResource(id = R.drawable.placeholder)
6162
)
6263

6364
Text(

features/chats/src/main/kotlin/io/getstream/whatsappclone/chats/messages/WhatsAppMessageTopBar.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import androidx.compose.material3.Text
3030
import androidx.compose.runtime.Composable
3131
import androidx.compose.ui.Modifier
3232
import androidx.compose.ui.draw.clip
33+
import androidx.compose.ui.res.painterResource
3334
import androidx.compose.ui.tooling.preview.Preview
3435
import androidx.compose.ui.unit.dp
3536
import com.skydoves.landscapist.animation.crossfade.CrossfadePlugin
@@ -121,7 +122,9 @@ private fun WhatsAppMessageUserInfo(
121122
component = rememberImageComponent {
122123
+CrossfadePlugin()
123124
},
124-
previewPlaceholder = io.getstream.whatsappclone.designsystem.R.drawable.placeholder
125+
previewPlaceholder = painterResource(
126+
id = io.getstream.whatsappclone.designsystem.R.drawable.placeholder
127+
)
125128
)
126129

127130
Text(

features/status/src/main/kotlin/io/getstream/whatsappclone/status/WhatsAppStatus.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import androidx.compose.ui.Alignment
3535
import androidx.compose.ui.Modifier
3636
import androidx.compose.ui.draw.clip
3737
import androidx.compose.ui.graphics.Color
38+
import androidx.compose.ui.res.painterResource
3839
import androidx.compose.ui.res.stringResource
3940
import androidx.compose.ui.tooling.preview.Preview
4041
import androidx.compose.ui.unit.dp
@@ -63,7 +64,9 @@ fun WhatsAppStatus() {
6364
.size(56.dp)
6465
.clip(CircleShape),
6566
imageModel = { "https://placekitten.com/200/300" },
66-
previewPlaceholder = io.getstream.whatsappclone.designsystem.R.drawable.placeholder
67+
previewPlaceholder = painterResource(
68+
id = io.getstream.whatsappclone.designsystem.R.drawable.placeholder
69+
)
6770
)
6871

6972
Column(modifier = Modifier.padding(start = 12.dp)) {

features/video/src/main/kotlin/io/getstream/whatsappclone/video/ReactionsMenu.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ internal fun ReactionsMenu(
9696
val scope = rememberCoroutineScope()
9797
val modifier = Modifier
9898
.background(
99-
color = VideoTheme.colors.barsBackground,
99+
color = VideoTheme.colors.basePrimary,
100100
shape = RoundedCornerShape(2.dp)
101101
)
102102
.wrapContentWidth()
@@ -107,14 +107,14 @@ internal fun ReactionsMenu(
107107
Dialog(onDismiss) {
108108
Card(
109109
modifier = modifier.wrapContentWidth(),
110-
backgroundColor = VideoTheme.colors.barsBackground
110+
backgroundColor = VideoTheme.colors.basePrimary
111111
) {
112112
Column(Modifier.padding(16.dp)) {
113113
Row(horizontalArrangement = Arrangement.Center) {
114114
ReactionItem(
115115
modifier = Modifier
116116
.background(
117-
color = VideoTheme.colors.appBackground,
117+
color = VideoTheme.colors.basePrimary,
118118
shape = RoundedCornerShape(2.dp)
119119
)
120120
.fillMaxWidth(),
@@ -163,7 +163,7 @@ private fun ReactionItem(
163163
textAlign = TextAlign.Center,
164164
modifier = textModifier.padding(12.dp),
165165
text = "$mappedEmoji ${reaction.displayText}",
166-
color = VideoTheme.colors.textHighEmphasis
166+
color = VideoTheme.colors.baseSenary
167167
)
168168
}
169169
}

features/video/src/main/kotlin/io/getstream/whatsappclone/video/WhatsAppVideoCall.kt

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ import android.os.Build
2121
import androidx.compose.foundation.layout.Box
2222
import androidx.compose.foundation.layout.fillMaxSize
2323
import androidx.compose.foundation.layout.size
24-
import androidx.compose.material.Text
2524
import androidx.compose.material3.MaterialTheme
25+
import androidx.compose.material3.Text
2626
import androidx.compose.runtime.Composable
2727
import androidx.compose.runtime.DisposableEffect
2828
import androidx.compose.runtime.LaunchedEffect
@@ -32,7 +32,9 @@ import androidx.compose.runtime.remember
3232
import androidx.compose.runtime.setValue
3333
import androidx.compose.ui.Alignment
3434
import androidx.compose.ui.Modifier
35+
import androidx.compose.ui.graphics.vector.ImageVector
3536
import androidx.compose.ui.platform.LocalContext
37+
import androidx.compose.ui.res.vectorResource
3638
import androidx.compose.ui.tooling.preview.Preview
3739
import androidx.compose.ui.unit.dp
3840
import androidx.compose.ui.unit.sp
@@ -44,8 +46,8 @@ import io.getstream.video.android.compose.theme.VideoTheme
4446
import io.getstream.video.android.compose.ui.components.call.activecall.CallContent
4547
import io.getstream.video.android.compose.ui.components.call.controls.ControlActions
4648
import io.getstream.video.android.compose.ui.components.call.controls.actions.FlipCameraAction
49+
import io.getstream.video.android.compose.ui.components.call.controls.actions.GenericAction
4750
import io.getstream.video.android.compose.ui.components.call.controls.actions.LeaveCallAction
48-
import io.getstream.video.android.compose.ui.components.call.controls.actions.ReactionAction
4951
import io.getstream.video.android.compose.ui.components.call.controls.actions.ToggleCameraAction
5052
import io.getstream.video.android.compose.ui.components.call.controls.actions.ToggleMicrophoneAction
5153
import io.getstream.video.android.core.Call
@@ -110,9 +112,12 @@ private fun WhatsAppVideoCallContent(
110112
call = call,
111113
actions = listOf(
112114
{
113-
ReactionAction(
115+
GenericAction(
116+
icon = ImageVector.vectorResource(
117+
id = io.getstream.video.android.ui.common.R.drawable.stream_video_ic_reaction
118+
),
114119
modifier = Modifier.size(52.dp),
115-
onCallAction = { isShowingReactionDialog = true }
120+
onAction = { isShowingReactionDialog = true }
116121
)
117122
},
118123
{
@@ -148,9 +153,12 @@ private fun WhatsAppVideoCallContent(
148153
call = call,
149154
actions = listOf(
150155
{
151-
ReactionAction(
156+
GenericAction(
157+
icon = ImageVector.vectorResource(
158+
id = io.getstream.video.android.ui.common.R.drawable.stream_video_ic_reaction
159+
),
152160
modifier = Modifier.size(52.dp),
153-
onCallAction = { isShowingReactionDialog = true }
161+
onAction = { isShowingReactionDialog = true }
154162
)
155163
},
156164
{

gradle/libs.versions.toml

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
[versions]
22
streamChatSDK = "6.1.1"
3-
streamVideoSDK = "0.5.1"
3+
streamVideoSDK = "1.0.1"
44
streamLog = "1.1.4"
55
sealedx = "1.0.1"
6-
landscapist = "2.2.13"
6+
landscapist = "2.3.3"
77
accompanist = "0.34.0"
88
androidDesugarJdkLibs = "1.1.5"
99
androidGradlePlugin = "8.4.1"
@@ -30,14 +30,14 @@ composeStableMarker = "1.0.4"
3030
hilt = "2.51.1"
3131
hiltExt = "1.0.0"
3232
junit4 = "4.13.2"
33-
kotlin = "1.9.22"
34-
kotlinxCoroutines = "1.8.0"
33+
kotlin = "2.0.0"
34+
kotlinxCoroutines = "1.8.1"
3535
kotlinxSerializationJson = "1.6.3"
36-
ksp = "1.9.23-1.0.20"
36+
ksp = "2.0.0-1.0.21"
3737
ktlint = "0.43.0"
3838
okhttp = "4.12.0"
3939
retrofit = "2.11.0"
40-
retrofitResultAdapter = "1.0.9"
40+
retrofitResultAdapter = "1.0.10"
4141
retrofitKotlinxSerializationJson = "1.0.0"
4242
googleSecretPlugin = "2.0.1"
4343
spotless = "6.7.0"
@@ -102,11 +102,13 @@ retrofit-kotlin-serialization = { group = "com.jakewharton.retrofit", name = "re
102102
# Dependencies of the included build-logic
103103
android-gradlePlugin = { group = "com.android.tools.build", name = "gradle", version.ref = "androidGradlePlugin" }
104104
kotlin-gradlePlugin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" }
105+
compose-compiler-gradlePlugin = { group = "org.jetbrains.kotlin", name = "compose-compiler-gradle-plugin", version.ref = "kotlin" }
105106
spotless-gradlePlugin = { group = "com.diffplug.spotless", name = "spotless-plugin-gradle", version.ref = "spotless" }
106107

107108
[plugins]
108109
android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" }
109110
android-library = { id = "com.android.library", version.ref = "androidGradlePlugin" }
111+
compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
110112
android-test = { id = "com.android.test", version.ref = "androidGradlePlugin" }
111113
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
112114
hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" }

0 commit comments

Comments
 (0)