Skip to content

Commit 3530ba5

Browse files
authored
Merge pull request #4918 from element-hq/renovate/kotlin
Update kotlin
2 parents 29b223e + 182909d commit 3530ba5

File tree

22 files changed

+87
-48
lines changed

22 files changed

+87
-48
lines changed

.idea/kotlinc.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build.gradle.kts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,10 @@ allprojects {
9898

9999
// Uncomment to suppress Compose Kotlin compiler compatibility warning
100100
// freeCompilerArgs.addAll(listOf("-P", "plugin:androidx.compose.compiler.plugins.kotlin:suppressKotlinVersionCompatibilityCheck=true"))
101+
102+
// Fix compilation warning for annotations
103+
// See https://youtrack.jetbrains.com/issue/KT-73255/Change-defaulting-rule-for-annotations for more details
104+
freeCompilerArgs.add("-Xannotation-default-target=first-only")
101105
}
102106
}
103107
}

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesView.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,7 @@ private fun MessagesViewContent(
391391

392392
Box {
393393
val scrollBehavior = PinnedMessagesBannerViewDefaults.rememberScrollBehavior(
394-
pinnedMessagesCount = state.pinnedMessagesBannerState.pinnedMessagesCount(),
394+
pinnedMessagesCount = (state.pinnedMessagesBannerState as? PinnedMessagesBannerState.Visible)?.pinnedMessagesCount() ?: 0,
395395
)
396396
TimelineView(
397397
state = state.timelineState,

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/banner/PinnedMessagesBannerState.kt

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -10,38 +10,36 @@ package io.element.android.features.messages.impl.pinned.banner
1010
import androidx.compose.runtime.Composable
1111
import androidx.compose.runtime.Immutable
1212
import androidx.compose.ui.res.stringResource
13-
import androidx.compose.ui.text.AnnotatedString
1413
import io.element.android.libraries.designsystem.text.toAnnotatedString
1514
import io.element.android.libraries.ui.strings.CommonStrings
1615

1716
@Immutable
1817
sealed interface PinnedMessagesBannerState {
1918
data object Hidden : PinnedMessagesBannerState
20-
sealed interface Visible : PinnedMessagesBannerState
19+
@Immutable
20+
sealed interface Visible : PinnedMessagesBannerState {
21+
fun pinnedMessagesCount() = when (this) {
22+
is Loading -> expectedPinnedMessagesCount
23+
is Loaded -> loadedPinnedMessagesCount
24+
}
25+
26+
fun currentPinnedMessageIndex() = when (this) {
27+
is Loading -> expectedPinnedMessagesCount - 1
28+
is Loaded -> currentPinnedMessageIndex
29+
}
30+
31+
@Composable
32+
fun formattedMessage() = when (this) {
33+
is Loading -> stringResource(id = CommonStrings.screen_room_pinned_banner_loading_description).toAnnotatedString()
34+
is Loaded -> currentPinnedMessage.formatted
35+
}
36+
}
37+
2138
data class Loading(val expectedPinnedMessagesCount: Int) : Visible
2239
data class Loaded(
2340
val currentPinnedMessage: PinnedMessagesBannerItem,
2441
val currentPinnedMessageIndex: Int,
2542
val loadedPinnedMessagesCount: Int,
2643
val eventSink: (PinnedMessagesBannerEvents) -> Unit
2744
) : Visible
28-
29-
fun pinnedMessagesCount() = when (this) {
30-
is Hidden -> 0
31-
is Loading -> expectedPinnedMessagesCount
32-
is Loaded -> loadedPinnedMessagesCount
33-
}
34-
35-
fun currentPinnedMessageIndex() = when (this) {
36-
is Hidden -> 0
37-
is Loading -> expectedPinnedMessagesCount - 1
38-
is Loaded -> currentPinnedMessageIndex
39-
}
40-
41-
@Composable
42-
fun formattedMessage() = when (this) {
43-
is Hidden -> AnnotatedString("")
44-
is Loading -> stringResource(id = CommonStrings.screen_room_pinned_banner_loading_description).toAnnotatedString()
45-
is Loaded -> currentPinnedMessage.formatted
46-
}
4745
}

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/banner/PinnedMessagesBannerView.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ fun PinnedMessagesBannerView(
7878

7979
@Composable
8080
private fun PinnedMessagesBannerRow(
81-
state: PinnedMessagesBannerState,
81+
state: PinnedMessagesBannerState.Visible,
8282
onClick: (EventId) -> Unit,
8383
onViewAllClick: () -> Unit,
8484
modifier: Modifier = Modifier,
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/*
2+
* Copyright 2025 New Vector Ltd.
3+
*
4+
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
5+
* Please see LICENSE files in the repository root for full details.
6+
*/
7+
8+
package io.element.android.features.messages.impl.attachments
9+
10+
import com.google.common.truth.Truth.assertThat
11+
import io.element.android.features.messages.impl.attachments.preview.SendActionState
12+
import io.element.android.features.messages.impl.attachments.preview.aMediaUploadInfo
13+
import io.element.android.libraries.mediaupload.api.MediaUploadInfo
14+
import org.junit.Test
15+
16+
class SendActionStateTest {
17+
@Test
18+
fun `mediaUploadInfo() should return the value from Uploading class`() {
19+
val mediaUploadInfo: MediaUploadInfo = aMediaUploadInfo()
20+
val state: SendActionState = SendActionState.Sending.Uploading(
21+
progress = 0.5f,
22+
mediaUploadInfo = aMediaUploadInfo()
23+
)
24+
assertThat(state.mediaUploadInfo()).isEqualTo(mediaUploadInfo)
25+
}
26+
}

features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/pinned/banner/PinnedMessagesBannerPresenterTest.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ class PinnedMessagesBannerPresenterTest {
6262
val presenter = createPinnedMessagesBannerPresenter(room = room)
6363
presenter.test {
6464
skipItems(2)
65-
val loadingState = awaitItem()
65+
val loadingState = awaitItem() as PinnedMessagesBannerState.Loading
6666
assertThat(loadingState).isEqualTo(PinnedMessagesBannerState.Loading(1))
6767
assertThat(loadingState.pinnedMessagesCount()).isEqualTo(1)
6868
assertThat(loadingState.currentPinnedMessageIndex()).isEqualTo(0)
@@ -167,7 +167,8 @@ class PinnedMessagesBannerPresenterTest {
167167
val presenter = createPinnedMessagesBannerPresenter(room = room)
168168
presenter.test {
169169
skipItems(2)
170-
awaitItem().also { loadingState ->
170+
awaitItem().also { state ->
171+
val loadingState = state as PinnedMessagesBannerState.Loading
171172
assertThat(loadingState).isEqualTo(PinnedMessagesBannerState.Loading(1))
172173
assertThat(loadingState.pinnedMessagesCount()).isEqualTo(1)
173174
assertThat(loadingState.currentPinnedMessageIndex()).isEqualTo(0)

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ signing.element.nightly.keyPassword=Secret
4040

4141
# Customise the Lint version to use a more recent version than the one bundled with AGP
4242
# https://googlesamples.github.io/android-custom-lint-rules/usage/newer-lint.md.html
43-
android.experimental.lint.version=8.11.0
43+
android.experimental.lint.version=8.12.0-alpha07
4444

4545
# Enable test fixture for all modules by default
4646
android.experimental.enableTestFixtures=true

gradle/libs.versions.toml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
[versions]
55
# Project
66
android_gradle_plugin = "8.11.0"
7-
kotlin = "2.1.21"
7+
kotlin = "2.2.0"
88
kotlinpoet = "2.2.0"
9-
ksp = "2.1.21-2.0.2"
9+
ksp = "2.2.0-2.0.2"
1010
firebaseAppDistribution = "5.1.1"
1111

1212
# AndroidX
@@ -33,8 +33,8 @@ accompanist = "0.37.3"
3333
test_core = "1.6.1"
3434

3535
# Jetbrain
36-
datetime = "0.6.2"
37-
serialization_json = "1.8.1"
36+
datetime = "0.7.0"
37+
serialization_json = "1.9.0"
3838

3939
#other
4040
detekt = "1.23.8"

libraries/dateformatter/impl/build.gradle.kts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,14 @@ android {
2222
}
2323
}
2424

25+
kotlin {
26+
compilerOptions {
27+
optIn = listOf(
28+
"kotlin.time.ExperimentalTime"
29+
)
30+
}
31+
}
32+
2533
dependencies {
2634
implementation(libs.dagger)
2735
implementation(projects.libraries.core)

0 commit comments

Comments
 (0)