diff --git a/build.gradle.kts b/build.gradle.kts index 9c90da30ce..01a1c7164c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -48,7 +48,7 @@ allprojects { config.from(files("$rootDir/tools/detekt/detekt.yml")) } dependencies { - detektPlugins("io.nlopez.compose.rules:detekt:0.4.12") + detektPlugins("io.nlopez.compose.rules:detekt:0.4.15") } // KtLint diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/welcome/WelcomeView.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/welcome/WelcomeView.kt index e9d6e7ae1e..e93a4e7145 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/welcome/WelcomeView.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/welcome/WelcomeView.kt @@ -42,8 +42,8 @@ import kotlinx.collections.immutable.persistentListOf @Composable fun WelcomeView( applicationName: String, - modifier: Modifier = Modifier, onContinueClick: () -> Unit, + modifier: Modifier = Modifier, ) { BackHandler(onBack = onContinueClick) OnBoardingPage( diff --git a/features/location/api/src/main/kotlin/io/element/android/features/location/api/internal/StaticMapPlaceholder.kt b/features/location/api/src/main/kotlin/io/element/android/features/location/api/internal/StaticMapPlaceholder.kt index 4d5c853a3c..8a7a734c2d 100644 --- a/features/location/api/src/main/kotlin/io/element/android/features/location/api/internal/StaticMapPlaceholder.kt +++ b/features/location/api/src/main/kotlin/io/element/android/features/location/api/internal/StaticMapPlaceholder.kt @@ -38,8 +38,8 @@ internal fun StaticMapPlaceholder( contentDescription: String?, width: Dp, height: Dp, - modifier: Modifier = Modifier, onLoadMapClick: () -> Unit, + modifier: Modifier = Modifier, ) { Box( contentAlignment = Alignment.Center, diff --git a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderView.kt b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderView.kt index 25e52de2fd..e13a5b736f 100644 --- a/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderView.kt +++ b/features/login/impl/src/main/kotlin/io/element/android/features/login/impl/accountprovider/AccountProviderView.kt @@ -38,8 +38,8 @@ import io.element.android.libraries.designsystem.theme.components.Text @Composable fun AccountProviderView( item: AccountProvider, - modifier: Modifier = Modifier, onClick: () -> Unit, + modifier: Modifier = Modifier, ) { Column( modifier = modifier diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/ExpandableBottomSheetScaffold.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/ExpandableBottomSheetScaffold.kt index df7c4a60f1..5d9214900a 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/ExpandableBottomSheetScaffold.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/ExpandableBottomSheetScaffold.kt @@ -58,6 +58,8 @@ import kotlin.math.roundToInt @Composable internal fun ExpandableBottomSheetScaffold( content: @Composable (padding: PaddingValues) -> Unit, + // False positive, it's not being reused + @Suppress("ContentSlotReused") sheetContent: @Composable (subcomposing: Boolean) -> Unit, sheetDragHandle: @Composable () -> Unit, sheetSwipeEnabled: Boolean, diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesView.kt index 25ecbcc758..067d0da87b 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesView.kt @@ -319,8 +319,8 @@ private fun MessagesViewContent( onJoinCallClick: () -> Unit, onViewAllPinnedMessagesClick: () -> Unit, forceJumpToBottomVisibility: Boolean, - modifier: Modifier = Modifier, onSwipeToReply: (TimelineItem.Event) -> Unit, + modifier: Modifier = Modifier, ) { Box( modifier = modifier diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListView.kt index 7c1e6a724b..ad62ad616a 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/pinned/list/PinnedMessagesListView.kt @@ -239,8 +239,8 @@ private fun PinnedMessagesListLoaded( private fun TimelineItemEventContentViewWrapper( event: TimelineItem.Event, onLinkClick: (String) -> Unit, - modifier: Modifier = Modifier, onContentLayoutChange: (ContentAvoidingLayoutData) -> Unit, + modifier: Modifier = Modifier, ) { if (event.content is TimelineItemPollContent) { PollTitleView( diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRow.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRow.kt index 85af8ff6e9..5a5fd6d470 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRow.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/TimelineItemEventRow.kt @@ -28,6 +28,7 @@ import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.movableContentOf import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment @@ -455,6 +456,8 @@ private fun MessageEventBubbleContent( canShrinkContent: Boolean = false, content: @Composable (onContentLayoutChange: (ContentAvoidingLayoutData) -> Unit) -> Unit, ) { + @Suppress("NAME_SHADOWING") + val content = remember { movableContentOf(content) } when (timestampPosition) { TimestampPosition.Overlay -> Box(modifier, contentAlignment = Alignment.Center) { diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/pages/HeaderFooterPage.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/pages/HeaderFooterPage.kt index e51c2ec761..25adde1cbc 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/pages/HeaderFooterPage.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/pages/HeaderFooterPage.kt @@ -18,6 +18,8 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable +import androidx.compose.runtime.movableContentOf +import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color @@ -39,6 +41,7 @@ import io.element.android.libraries.designsystem.theme.components.Text * @param footer optional footer. * @param content main content. */ +@Suppress("NAME_SHADOWING") @Composable fun HeaderFooterPage( modifier: Modifier = Modifier, @@ -51,6 +54,10 @@ fun HeaderFooterPage( footer: @Composable () -> Unit = {}, content: @Composable () -> Unit = {}, ) { + val topBar = remember { movableContentOf(topBar) } + val header = remember { movableContentOf(header) } + val footer = remember { movableContentOf(footer) } + val content = remember { movableContentOf(content) } Scaffold( modifier = modifier, topBar = topBar, diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/async/AsyncActionView.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/async/AsyncActionView.kt index 6e42909f0b..be3e2ef7d8 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/async/AsyncActionView.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/async/AsyncActionView.kt @@ -28,6 +28,7 @@ import io.element.android.libraries.designsystem.preview.PreviewsDayNight * closed, [onErrorDismiss] will be invoked. If [onRetry] is not null, a retry button will be displayed. * - When loading, display a loading dialog using [progressDialog]. Pass empty lambda to disable. */ +@Suppress("ContentSlotReused") // False positive, the lambdas don't add composable views @Composable fun AsyncActionView( async: AsyncAction,