From f71d13e7fe6d1c8f261a8b12ddab5274aaf33c71 Mon Sep 17 00:00:00 2001 From: Vitor Hugo Schwaab Date: Tue, 2 Apr 2024 16:50:43 +0200 Subject: [PATCH] chore: upgrade kotlin to 1.9.23 (#2767) --- .../com/wire/android/WireApplication.kt | 7 +- .../android/gradle/ComposeConfiguration.kt | 2 +- .../gradle/KotlinAndroidConfiguration.kt | 3 +- buildSrc/build.gradle.kts | 30 +- buildSrc/settings.gradle.kts | 3 + .../main/kotlin/scripts/quality.gradle.kts | 6 +- config/detekt/baseline.xml | 1087 +++++++++++++++-- config/detekt/detekt.yml | 57 +- gradle/libs.versions.toml | 51 +- kalium | 2 +- 10 files changed, 1033 insertions(+), 215 deletions(-) diff --git a/app/src/main/kotlin/com/wire/android/WireApplication.kt b/app/src/main/kotlin/com/wire/android/WireApplication.kt index 71d41d122d6..432b8d95170 100644 --- a/app/src/main/kotlin/com/wire/android/WireApplication.kt +++ b/app/src/main/kotlin/com/wire/android/WireApplication.kt @@ -68,12 +68,12 @@ class WireApplication : Application(), Configuration.Provider { @Inject @ApplicationScope lateinit var globalAppScope: CoroutineScope - override fun getWorkManagerConfiguration(): Configuration { - return Configuration.Builder() + + override val workManagerConfiguration: Configuration + get() = Configuration.Builder() .setWorkerFactory(wireWorkerFactory.get()) .setMinimumLoggingLevel(android.util.Log.DEBUG) .build() - } override fun onCreate() { super.onCreate() @@ -183,6 +183,7 @@ class WireApplication : Application(), Configuration.Provider { values().firstOrNull { it.level == value } ?: TRIM_MEMORY_UNKNOWN } } + private const val TAG = "WireApplication" } } diff --git a/build-logic/plugins/src/main/kotlin/com/wire/android/gradle/ComposeConfiguration.kt b/build-logic/plugins/src/main/kotlin/com/wire/android/gradle/ComposeConfiguration.kt index 57340196e57..1391d51386a 100644 --- a/build-logic/plugins/src/main/kotlin/com/wire/android/gradle/ComposeConfiguration.kt +++ b/build-logic/plugins/src/main/kotlin/com/wire/android/gradle/ComposeConfiguration.kt @@ -22,7 +22,7 @@ import findVersion import org.gradle.api.Project internal fun Project.configureCompose( - commonExtension: CommonExtension<*, *, *, *, *>, + commonExtension: CommonExtension<*, *, *, *, *>, // Add another `*` when upgrading AGP to 8.3 ): Unit = with(commonExtension) { buildFeatures { compose = true diff --git a/build-logic/plugins/src/main/kotlin/com/wire/android/gradle/KotlinAndroidConfiguration.kt b/build-logic/plugins/src/main/kotlin/com/wire/android/gradle/KotlinAndroidConfiguration.kt index 8934de4bdee..d74c8c9ab64 100644 --- a/build-logic/plugins/src/main/kotlin/com/wire/android/gradle/KotlinAndroidConfiguration.kt +++ b/build-logic/plugins/src/main/kotlin/com/wire/android/gradle/KotlinAndroidConfiguration.kt @@ -30,7 +30,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import versionCatalog internal fun Project.configureKotlinAndroid( - commonExtension: CommonExtension<*, *, *, *, *>, + commonExtension: CommonExtension<*, *, *, *, *>, // Add another `*` when upgrading AGP to 8.3 ): Unit = with(commonExtension) { compileSdk = AndroidSdk.compile @@ -85,6 +85,7 @@ private fun Project.configureKotlin() { } } +// Add another `*` when upgrading AGP to 8.3 internal fun CommonExtension<*, *, *, *, *>.configureAndroidKotlinTests() { defaultConfig { testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index b6d47f377b0..e65942b32bd 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -16,18 +16,6 @@ * along with this program. If not, see http://www.gnu.org/licenses/. */ -private object Dependencies { - const val kotlinGradlePlugin = "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.0" - const val detektGradlePlugin = "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.23.0" - const val koverGradlePlugin = "org.jetbrains.kotlinx:kover-gradle-plugin:0.7.5" - const val junit = "junit:junit:4.13.2" - const val kluent = "org.amshove.kluent:kluent:1.73" - const val spotless = "com.diffplug.spotless:spotless-plugin-gradle:6.1.2" - const val junit5 = "de.mannodermaus.gradle.plugins:android-junit5:1.9.3.0" - const val grgit = "org.ajoberstar.grgit:grgit-core:5.2.0" - const val javapoet = "com.squareup:javapoet:1.13.0" -} - plugins { `kotlin-dsl` `kotlin-dsl-precompiled-script-plugins` @@ -43,14 +31,14 @@ repositories { dependencies { implementation("com.android.tools.build:gradle:${klibs.versions.agp.get()}") - implementation(Dependencies.kotlinGradlePlugin) - implementation(Dependencies.detektGradlePlugin) - implementation(Dependencies.koverGradlePlugin) - implementation(Dependencies.spotless) - implementation(Dependencies.junit5) + implementation(libs.kotlin.gradlePlugin) + implementation("io.gitlab.arturbosch.detekt:detekt-gradle-plugin:${klibs.versions.detekt.get()}") + implementation("org.jetbrains.kotlinx:kover-gradle-plugin:${klibs.versions.kover.get()}") + implementation(libs.spotless.gradlePlugin) + implementation(libs.android.junit5) - testImplementation(Dependencies.junit) - testImplementation(Dependencies.kluent) - implementation(Dependencies.grgit) - implementation(Dependencies.javapoet) // https://github.com/google/dagger/issues/3068 + testImplementation("junit:junit:${libs.versions.junit4.get()}") + testImplementation("org.amshove.kluent:kluent:${libs.versions.kluent.get()}") + implementation(libs.grgit.core) + implementation(libs.squareup.javapoet) // https://github.com/google/dagger/issues/3068 } diff --git a/buildSrc/settings.gradle.kts b/buildSrc/settings.gradle.kts index 438c3a1c861..70afd242b74 100644 --- a/buildSrc/settings.gradle.kts +++ b/buildSrc/settings.gradle.kts @@ -21,5 +21,8 @@ dependencyResolutionManagement { create("klibs") { from(files("../kalium/gradle/libs.versions.toml")) } + create("libs") { + from(files("../gradle/libs.versions.toml")) + } } } diff --git a/buildSrc/src/main/kotlin/scripts/quality.gradle.kts b/buildSrc/src/main/kotlin/scripts/quality.gradle.kts index 8de42f5679b..4ca42df005a 100644 --- a/buildSrc/src/main/kotlin/scripts/quality.gradle.kts +++ b/buildSrc/src/main/kotlin/scripts/quality.gradle.kts @@ -18,6 +18,7 @@ package scripts +import findVersion import io.gitlab.arturbosch.detekt.Detekt import io.gitlab.arturbosch.detekt.DetektCreateBaselineTask @@ -28,10 +29,11 @@ plugins { } dependencies { - val detektVersion = "1.19.0" + val detektVersion = findVersion("detekt").requiredVersion detekt("io.gitlab.arturbosch.detekt:detekt-cli:$detektVersion") detektPlugins("io.gitlab.arturbosch.detekt:detekt-formatting:$detektVersion") - detektPlugins("com.wire:detekt-rules:1.0.0-SNAPSHOT") { + detektPlugins("io.gitlab.arturbosch.detekt:detekt-rules-libraries:$detektVersion") + detektPlugins("com.wire:detekt-rules:1.0.0-1.23.6") { isChanging = true } } diff --git a/config/detekt/baseline.xml b/config/detekt/baseline.xml index 21bd486ca23..8ef1f2885cf 100644 --- a/config/detekt/baseline.xml +++ b/config/detekt/baseline.xml @@ -2,140 +2,957 @@ - CommentSpacing:com.wire.android.ui.home.conversationslist.model.LastConversationEvent.kt:40 - CommentSpacing:com.wire.android.ui.theme.ThemeUtils.kt:47 - CommentSpacing:com.wire.android.ui.theme.ThemeUtils.kt:48 - CommentSpacing:com.wire.android.ui.theme.ThemeUtils.kt:49 - CommentSpacing:com.wire.android.ui.theme.ThemeUtils.kt:50 - CommentSpacing:com.wire.android.util.debug.FeatureVisibilityFlags.kt:23 - CommentSpacing:com.wire.android.util.debug.FeatureVisibilityFlags.kt:26 - CommentSpacing:com.wire.android.util.debug.FeatureVisibilityFlags.kt:28 - CommentSpacing:com.wire.android.util.debug.FeatureVisibilityFlags.kt:29 - CommentSpacing:com.wire.android.util.debug.FeatureVisibilityFlags.kt:30 - CommentSpacing:com.wire.android.util.debug.FeatureVisibilityFlags.kt:31 - CommentSpacing:com.wire.android.util.debug.FeatureVisibilityFlags.kt:32 - CommentSpacing:com.wire.android.util.debug.FeatureVisibilityFlags.kt:33 - CommentSpacing:com.wire.android.util.debug.FeatureVisibilityFlags.kt:34 - CommentSpacing:com.wire.android.util.debug.FeatureVisibilityFlags.kt:35 - CommentSpacing:com.wire.android.util.debug.FeatureVisibilityFlags.kt:36 - CommentSpacing:com.wire.android.util.debug.FeatureVisibilityFlags.kt:37 - CommentSpacing:com.wire.android.util.debug.FeatureVisibilityFlags.kt:38 - CommentSpacing:com.wire.android.util.debug.FeatureVisibilityFlags.kt:39 - CommentSpacing:com.wire.android.util.debug.FeatureVisibilityFlags.kt:40 - CommentSpacing:com.wire.android.util.debug.FeatureVisibilityFlags.kt:41 - CommentSpacing:com.wire.android.util.debug.FeatureVisibilityFlags.kt:42 - MultiLineIfElse:MutingOptionsSheetContent.kt:65 - MultiLineIfElse:com.wire.android.ui.calling.controlbuttons.SpeakerButton.kt:59 - MultiLineIfElse:com.wire.android.ui.common.bottomsheet.conversation.ConversationSheetContent.kt:75 - MultiLineIfElse:com.wire.android.ui.common.bottomsheet.conversation.ConversationSheetContent.kt:77 - MultiLineIfElse:com.wire.android.ui.common.dialogs.BlockUserDialogs.kt:59 - MultiLineIfElse:com.wire.android.ui.common.dialogs.BlockUserDialogs.kt:61 - MultiLineIfElse:com.wire.android.ui.common.dialogs.UnblockUserDialogs.kt:60 - MultiLineIfElse:com.wire.android.ui.common.dialogs.UnblockUserDialogs.kt:62 - MultiLineIfElse:com.wire.android.ui.home.conversations.details.dialog.ClearConversationContentDialog.kt:55 - MultiLineIfElse:com.wire.android.ui.home.conversations.details.dialog.ClearConversationContentDialog.kt:57 - MultiLineIfElse:com.wire.android.ui.home.conversations.details.menu.DeleteConversationGroupDialog.kt:55 - MultiLineIfElse:com.wire.android.ui.home.conversations.details.menu.DeleteConversationGroupDialog.kt:57 - MultiLineIfElse:com.wire.android.ui.home.conversations.details.menu.LeaveConversationGroupDialog.kt:55 - MultiLineIfElse:com.wire.android.ui.home.conversations.details.menu.LeaveConversationGroupDialog.kt:57 - MultiLineIfElse:com.wire.android.ui.userprofile.other.RemoveConversationMemberDialog.kt:59 - MultiLineIfElse:com.wire.android.ui.userprofile.other.RemoveConversationMemberDialog.kt:61 - NoBlankLineBeforeRbrace:com.wire.android.datastore.UserDataStore.kt:85 - NoBlankLineBeforeRbrace:com.wire.android.framework.FakeKaliumFileSystem.kt:108 - NoBlankLineBeforeRbrace:com.wire.android.mapper.UserTypeMapper.kt:37 - NoBlankLineBeforeRbrace:com.wire.android.mapper.UserTypeMapperTest.kt:53 - NoBlankLineBeforeRbrace:com.wire.android.migration.feature.MigrateServerConfigUseCase.kt:77 - NoBlankLineBeforeRbrace:com.wire.android.ui.authentication.create.email.CreateAccountEmailViewState.kt:49 - NoBlankLineBeforeRbrace:com.wire.android.ui.common.spacers.VerticalSpace.kt:53 - NoBlankLineBeforeRbrace:com.wire.android.ui.home.conversations.banner.usecase.ObserveConversationMembersByTypesUseCase.kt:44 - NoBlankLineBeforeRbrace:com.wire.android.ui.home.conversations.banner.usecase.ObserveConversationMembersByTypesUseCaseTest.kt:152 - NoBlankLineBeforeRbrace:com.wire.android.ui.home.conversations.search.SearchPeopleScreenState.kt:76 - NoBlankLineBeforeRbrace:com.wire.android.ui.home.conversationslist.model.LastConversationEvent.kt:37 - NoBlankLineBeforeRbrace:com.wire.android.ui.userprofile.other.RemoveConversationMemberDialog.kt:66 - NoBlankLineBeforeRbrace:com.wire.android.ui.userprofile.other.bottomsheet.OtherUserBottomSheetState.kt:62 - NoBlankLineBeforeRbrace:com.wire.android.util.EmailComposer.kt:64 - NoBlankLineBeforeRbrace:com.wire.android.util.ScreenStateObserverTest.kt:134 - NoBlankLineBeforeRbrace:com.wire.android.util.ScreenStateObserverTest.kt:136 - NoBlankLineBeforeRbrace:com.wire.android.util.time.ISOFormatter.kt:34 - NoConsecutiveBlankLines:com.wire.android.di.CoroutineScope.kt:36 - NoConsecutiveBlankLines:com.wire.android.di.CoroutineScope.kt:53 - NoConsecutiveBlankLines:com.wire.android.media.CallRinger.kt:82 - NoConsecutiveBlankLines:com.wire.android.migration.ScalaServerConfigDAOTest.kt:112 - NoConsecutiveBlankLines:com.wire.android.migration.ScalaServerConfigDAOTest.kt:122 - NoConsecutiveBlankLines:com.wire.android.ui.common.SurfaceBackgroundWrapper.kt:41 - NoConsecutiveBlankLines:com.wire.android.ui.common.effects.LaunchedEffects.kt:28 - NoConsecutiveBlankLines:com.wire.android.ui.common.textfield.WireTextFieldDefaults.kt:136 - NoConsecutiveBlankLines:com.wire.android.ui.common.topappbar.search.SearchTopBar.kt:21 - NoConsecutiveBlankLines:com.wire.android.ui.home.conversations.details.participants.usecase.ObserveParticipantsForConversationUseCase.kt:51 - NoConsecutiveBlankLines:com.wire.android.ui.home.conversations.search.SearchPeopleScreenState.kt:33 - NoConsecutiveBlankLines:com.wire.android.ui.home.conversationslist.model.LastConversationEvent.kt:59 - NoConsecutiveBlankLines:com.wire.android.ui.home.conversationslist.model.LastConversationEvent.kt:66 - NoConsecutiveBlankLines:com.wire.android.ui.home.conversationslist.model.LastConversationEvent.kt:71 - NoConsecutiveBlankLines:com.wire.android.ui.home.conversationslist.navigation.ConversationsNavigationItem.kt:26 - NoConsecutiveBlankLines:com.wire.android.ui.home.settings.backup.BackUpAndRestoreStateHolder.kt:59 - NoConsecutiveBlankLines:com.wire.android.ui.userprofile.self.model.OtherAccount.kt:24 - NoConsecutiveBlankLines:com.wire.android.util.ScreenStateObserver.kt:65 - NoMultipleSpaces:com.wire.android.ui.common.ShakeAnimation.kt:45 - NoMultipleSpaces:com.wire.android.ui.common.ShakeAnimation.kt:46 - NoMultipleSpaces:com.wire.android.ui.server.ApiVersioningDialogs.kt:62 - NoMultipleSpaces:com.wire.android.ui.theme.ThemeUtils.kt:49 - NoMultipleSpaces:com.wire.android.ui.theme.ThemeUtils.kt:50 - NoSemicolons:com.wire.android.media.CallRinger.kt:78 - NoSemicolons:com.wire.android.media.CallRinger.kt:88 - NoSemicolons:com.wire.android.media.CallRinger.kt:94 - NoTrailingSpaces:com.wire.android.migration.ScalaServerConfigDAOTest.kt:112 - NoTrailingSpaces:com.wire.android.migration.ScalaServerConfigDAOTest.kt:53 - NoTrailingSpaces:com.wire.android.migration.ScalaServerConfigDAOTest.kt:60 - NoUnusedImports:com.wire.android.ui.calling.controlbuttons.CameraButton.kt:34 - NoUnusedImports:com.wire.android.ui.calling.controlbuttons.SpeakerButton.kt:30 - NoUnusedImports:com.wire.android.ui.home.conversations.search.SearchPeopleScreenState.kt:21 - NoUnusedImports:com.wire.android.ui.home.conversations.search.SearchPeopleScreenState.kt:22 - NoUnusedImports:com.wire.android.ui.home.gallery.ZoomableImage.kt:36 - NoUnusedImports:com.wire.android.ui.server.ApiVersioningDialogs.kt:21 - NoUnusedImports:com.wire.android.ui.server.ApiVersioningDialogs.kt:22 - NoUnusedImports:com.wire.android.ui.server.ApiVersioningDialogs.kt:23 - NoUnusedImports:com.wire.android.ui.server.ApiVersioningDialogs.kt:24 - NoUnusedImports:com.wire.android.ui.server.ApiVersioningDialogs.kt:26 - NoUnusedImports:com.wire.android.ui.server.ApiVersioningDialogs.kt:28 - NoUnusedImports:com.wire.android.ui.server.ApiVersioningDialogs.kt:30 - NoUnusedImports:com.wire.android.ui.server.ApiVersioningDialogs.kt:32 - NoUnusedImports:com.wire.android.ui.server.ApiVersioningDialogs.kt:38 - NoUnusedImports:com.wire.android.ui.theme.WireTypography.kt:24 - NoUnusedImports:com.wire.android.ui.theme.WireTypography.kt:25 - NoUnusedImports:com.wire.android.ui.theme.WireTypography.kt:26 - NoUnusedImports:com.wire.android.ui.theme.WireTypography.kt:27 - NoUnusedImports:com.wire.android.ui.theme.WireTypography.kt:28 - ParameterListWrapping:com.wire.android.ui.calling.controlbuttons.CameraButton.kt:97 - ParameterListWrapping:com.wire.android.ui.common.button.WireButtonDefaults.kt:115 - ParameterListWrapping:com.wire.android.ui.common.button.WireButtonDefaults.kt:116 - ParameterListWrapping:com.wire.android.ui.common.button.WireButtonDefaults.kt:117 - ParameterListWrapping:com.wire.android.ui.common.button.WireButtonDefaults.kt:118 - ParameterListWrapping:com.wire.android.ui.common.button.WireButtonDefaults.kt:119 - ParameterListWrapping:com.wire.android.ui.theme.WireTypography.kt:33 - ParameterListWrapping:com.wire.android.ui.theme.WireTypography.kt:34 - ParameterListWrapping:com.wire.android.ui.theme.WireTypography.kt:35 - ParameterListWrapping:com.wire.android.ui.theme.WireTypography.kt:36 - SpacingAroundColon:com.wire.android.migration.MigrateServerConfigUseCaseTest.kt:128 - SpacingAroundColon:com.wire.android.migration.MigrateServerConfigUseCaseTest.kt:132 - SpacingAroundColon:com.wire.android.migration.MigrateServerConfigUseCaseTest.kt:136 - SpacingAroundColon:com.wire.android.ui.WireActivityState.kt:23 - SpacingAroundColon:com.wire.android.ui.WireActivityState.kt:24 - SpacingAroundColon:com.wire.android.ui.WireActivityState.kt:25 - SpacingAroundColon:com.wire.android.ui.WireActivityState.kt:26 - SpacingAroundColon:com.wire.android.ui.authentication.create.code.CreateAccountCodeViewState.kt:46 - SpacingAroundColon:com.wire.android.ui.authentication.login.LoginError.kt:40 - SpacingAroundColon:com.wire.android.ui.authentication.login.LoginError.kt:41 - SpacingAroundColon:com.wire.android.ui.common.visbility.VisibilityState.kt:29 - SpacingAroundColon:com.wire.android.ui.common.visbility.VisibilityState.kt:39 - SpacingAroundColon:com.wire.android.ui.common.visbility.VisibilityState.kt:57 - SpacingAroundColon:com.wire.android.ui.home.conversationslist.model.LastConversationEvent.kt:32 - SpacingAroundColon:com.wire.android.util.SyncStateObserver.kt:26 - SpacingAroundColon:com.wire.android.workmanager.WireForegroundNotificationDetailsProvider.kt:24 - SpacingAroundCurly:com.wire.android.ui.home.conversations.banner.usecase.ObserveConversationMembersByTypesUseCase.kt:38 - SpacingAroundCurly:com.wire.android.ui.home.conversations.search.widget.SearchFailureWidget.kt:36 - SpacingAroundKeyword:com.wire.android.migration.feature.MigrateServerConfigUseCase.kt:63 - SpacingAroundKeyword:com.wire.android.ui.common.textfield.CodeTextField.kt:149 - SpacingAroundOperators:com.wire.android.ui.common.visbility.VisibilityState.kt:62 - SpacingAroundParens:com.wire.android.ui.settings.devices.model.SelfDevicesState.kt:23 + AnnotationSpacing:ConversationListViewModelTest.kt$ConversationListViewModelTest$@OptIn(ExperimentalCoroutinesApi::class) @ExtendWith(CoroutineTestExtension::class) + ArgumentListWrapping:AvatarPicker.kt$( { MenuBottomSheetItem( title = stringResource(R.string.profile_image_choose_from_gallery_menu_item), icon = { MenuItemIcon( id = R.drawable.ic_gallery, contentDescription = stringResource(R.string.content_description_choose_from_gallery) ) }, action = { ArrowRightIcon() }, onItemClick = state::openGallery ) }, { MenuBottomSheetItem( title = stringResource(R.string.profile_image_take_a_picture_menu_item), icon = { MenuItemIcon( id = R.drawable.ic_camera, contentDescription = stringResource(R.string.content_description_take_a_picture) ) }, action = { ArrowRightIcon() }, onItemClick = state::openCamera ) } ) + ArgumentListWrapping:Buttons.kt$( modifier = Modifier .fillMaxWidth() .padding( start = MaterialTheme.wireDimensions.spacing16x, end = MaterialTheme.wireDimensions.spacing16x, top = MaterialTheme.wireDimensions.spacing16x, bottom = MaterialTheme.wireDimensions.spacing4x ), text = stringResource(id = R.string.guest_link_button_copy_link), fillMaxWidth = true, onClick = onCopy ) + ArgumentListWrapping:Buttons.kt$( modifier = Modifier .fillMaxWidth() .padding( start = MaterialTheme.wireDimensions.spacing16x, end = MaterialTheme.wireDimensions.spacing16x, top = MaterialTheme.wireDimensions.spacing4x, bottom = MaterialTheme.wireDimensions.spacing4x ), text = stringResource(id = R.string.guest_link_button_share_link), fillMaxWidth = true, onClick = onShare ) + ArgumentListWrapping:CodeTextField.kt$( value = value, onValueChange = { val textDigits = it.text.filter { it.isDigit() } // don't allow characters other than digits to be entered .let { it.substring(0, min(codeLength, it.length)) } // don't allow more digits than required onValueChange( CodeFieldValue( text = TextFieldValue(text = textDigits, selection = TextRange(textDigits.length)), isFullyFilled = textDigits.length == codeLength ) ) }, enabled = enabled, keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number, autoCorrect = false, imeAction = ImeAction.Done), keyboardActions = KeyboardActions(onDone = { keyboardController?.hide() }), interactionSource = interactionSource, decorationBox = { Row(horizontalArrangement = Arrangement.SpaceBetween) { repeat(codeLength) { index -> if (index != 0) Spacer(modifier = Modifier .weight(1f, fill = false) .width(maxHorizontalSpacing)) Digit( char = value.text.getOrNull(index), shape = shape, colors = colors, textStyle = textStyle, selected = index == value.text.length, state = state ) } } }) + ArgumentListWrapping:CodeTextField.kt$(modifier = Modifier .weight(1f, fill = false) .width(maxHorizontalSpacing)) + ArgumentListWrapping:ConversationMessagesViewModelArrangement.kt$ConversationMessagesViewModelArrangement$( "key", assetMimeType, assetDataPath, assetSize, assetName, AttachmentType.fromMimeTypeString(assetMimeType) ) + ArgumentListWrapping:ConversationScreen.kt$( contentAlignment = Alignment.BottomEnd, modifier = Modifier .fillMaxSize() .background(color = colorsScheme().backgroundVariant), content = { LazyColumn( state = lazyListState, reverseLayout = true, // calculating bottom padding to have space for [UsersTypingIndicator] contentPadding = PaddingValues( bottom = dimensions().typingIndicatorHeight - dimensions().messageItemBottomPadding ), modifier = Modifier .fillMaxSize() ) { items( count = lazyPagingMessages.itemCount, key = lazyPagingMessages.itemKey { it.header.messageId }, contentType = lazyPagingMessages.itemContentType { it } ) { index -> val message: UIMessage = lazyPagingMessages[index] ?: return@items Box( contentAlignment = Alignment.Center, modifier = Modifier .fillMaxWidth() .height(dimensions().spacing56x), ) { WireCircularProgressIndicator( progressColor = MaterialTheme.wireColorScheme.secondaryText, size = dimensions().spacing24x ) } val showAuthor = rememberShouldShowHeader(index, message, lazyPagingMessages) val useSmallBottomPadding = rememberShouldHaveSmallBottomPadding(index, message, lazyPagingMessages) when (message) { is UIMessage.Regular -> { MessageItem( message = message, conversationDetailsData = conversationDetailsData, showAuthor = showAuthor, useSmallBottomPadding = useSmallBottomPadding, audioMessagesState = audioMessagesState, assetStatus = assetStatuses[message.header.messageId]?.transferStatus, onAudioClick = onAudioItemClicked, onChangeAudioPosition = onChangeAudioPosition, onLongClicked = onShowEditingOption, onAssetMessageClicked = onAssetItemClicked, onImageMessageClicked = onImageFullScreenMode, onOpenProfile = onOpenProfile, onReactionClicked = onReactionClicked, onResetSessionClicked = onResetSessionClicked, onSelfDeletingMessageRead = onSelfDeletingMessageRead, onFailedMessageCancelClicked = onFailedMessageCancelClicked, onFailedMessageRetryClicked = onFailedMessageRetryClicked, onLinkClick = onLinkClick, onReplyClickable = Clickable( enabled = true, onClick = { onNavigateToReplyOriginalMessage(message) } ), isSelectedMessage = (message.header.messageId == selectedMessageId), isInteractionAvailable = interactionAvailability == InteractionAvailability.ENABLED, ) } is UIMessage.System -> SystemMessageItem( message = message, onFailedMessageCancelClicked = onFailedMessageCancelClicked, onFailedMessageRetryClicked = onFailedMessageRetryClicked, onSelfDeletingMessageRead = onSelfDeletingMessageRead, isInteractionAvailable = interactionAvailability == InteractionAvailability.ENABLED, ) } } } JumpToLastMessageButton(lazyListState = lazyListState) }) + ArgumentListWrapping:ConversationScreen.kt$( messageId = compositionState.editMessageId, editMessageText = compositionState.messageText, mentions = compositionState.selectedMentions.map { it.intoMessageMention() }) + ArgumentListWrapping:ConversationTopAppBar.kt$( title = { Row( verticalAlignment = Alignment.CenterVertically, modifier = Modifier .fillMaxWidth() // TopAppBar adds TopAppBarHorizontalPadding = 4.dp to each element, so we need to offset it to retain the desired // spacing between navigation icon button and avatar according to the designs .offset(x = -dimensions().spacing4x) .clip(RoundedCornerShape(MaterialTheme.wireDimensions.buttonCornerSize)) .clickable(onClick = onDropDownClick, enabled = isDropDownEnabled && isInteractionEnabled) ) { val conversationAvatar: ConversationAvatar = conversationInfoViewState.conversationAvatar Avatar(conversationAvatar, conversationInfoViewState) Text( text = conversationInfoViewState.conversationName.asString(), style = MaterialTheme.wireTypography.title02, maxLines = 1, overflow = TextOverflow.Ellipsis, modifier = Modifier.weight(weight = 1f, fill = false) ) ConversationVerificationIcons( conversationInfoViewState.protocolInfo, conversationInfoViewState.mlsVerificationStatus, conversationInfoViewState.proteusVerificationStatus ) if (conversationInfoViewState.legalHoldStatus == Conversation.LegalHoldStatus.ENABLED) { HorizontalSpace.x4() LegalHoldIndicator() } if (isDropDownEnabled && isInteractionEnabled) { Icon( painter = painterResource(id = R.drawable.ic_dropdown_icon), contentDescription = stringResource(R.string.content_description_drop_down_icon) ) } } }, navigationIcon = { NavigationIconButton(NavigationIconType.Back, onBackButtonClick) }, actions = { Row( horizontalArrangement = Arrangement.spacedBy(dimensions().spacing4x), modifier = Modifier.padding(end = dimensions().spacing4x) ) { if (isSearchEnabled) { WireSecondaryIconButton( onButtonClicked = onSearchButtonClick, iconResource = R.drawable.ic_search, contentDescription = R.string.content_description_conversation_search_icon, minSize = dimensions().buttonSmallMinSize, minClickableSize = DpSize( dimensions().buttonSmallMinSize.width, dimensions().buttonMinClickableSize.height ), ) } CallControlButton( hasOngoingCall = hasOngoingCall, onJoinCallButtonClick = onJoinCallButtonClick, onPhoneButtonClick = onPhoneButtonClick, isCallingEnabled = isInteractionEnabled, onPermissionPermanentlyDenied = onPermissionPermanentlyDenied, ) } }, colors = TopAppBarDefaults.centerAlignedTopAppBarColors( containerColor = MaterialTheme.colorScheme.background, titleContentColor = MaterialTheme.colorScheme.onBackground, actionIconContentColor = MaterialTheme.colorScheme.onBackground, navigationIconContentColor = MaterialTheme.colorScheme.onBackground ) ) + ArgumentListWrapping:ConversationsNavigationItem.kt$ConversationsNavigationItem.All$( R.drawable.ic_conversation, R.string.conversations_all_tab_title, "conversations_all") + ArgumentListWrapping:ConversationsNavigationItem.kt$ConversationsNavigationItem.Calls$( R.drawable.ic_call, R.string.conversations_calls_tab_title, "conversations_calls") + ArgumentListWrapping:ConversationsNavigationItem.kt$ConversationsNavigationItem.Mentions$( R.drawable.ic_mention, R.string.conversations_mentions_tab_title, "conversations_mentions") + ArgumentListWrapping:DebugDataOptions.kt$(modifier = Modifier.wrapContentWidth(), title = { Text( style = MaterialTheme.wireTypography.body01, color = MaterialTheme.wireColorScheme.onBackground, text = stringResource(R.string.label_get_e2ei_cetificate), modifier = Modifier.padding(start = dimensions().spacing8x) ) }, actions = { WirePrimaryButton( onClick = { enrollE2EI() }, text = stringResource(R.string.label_get_e2ei_cetificate), fillMaxWidth = false ) } ) + ArgumentListWrapping:DeclineButton.kt$(interactionSource = remember { MutableInteractionSource() }, indication = rememberRipple(bounded = false, radius = dimensions().initiatingCallHangUpButtonSize / 2), role = Role.Button, onClick = { buttonClicked() }) + ArgumentListWrapping:DeviceItem.kt$( Modifier .wrapContentWidth() .align(Alignment.CenterVertically)) + ArgumentListWrapping:DrawableResultWrapper.kt$DrawableResultWrapper$( source = ImageSource(file = assetPath, diskCacheKey = assetPath.name), mimeType = null, dataSource = DataSource.DISK ) + ArgumentListWrapping:DropDownMentionsSuggestions.kt$(modifier = Modifier .fillMaxWidth() .offset { IntOffset(0, coordinateY) } ) + ArgumentListWrapping:EditGuestAccessScreen.kt$( onConfirm = ::onGuestDialogConfirm, onDialogDismiss = ::onGuestDialogDismiss ) + ArgumentListWrapping:EditGuestAccessScreen.kt$( onConfirm = ::removeGuestLink, onDialogDismiss = ::onRevokeDialogDismiss ) + ArgumentListWrapping:EditSelfDeletingMessagesScreen.kt$( topBar = { WireCenterAlignedTopAppBar( elevation = scrollState.rememberTopBarElevationState().value, onNavigationPressed = navigator::navigateBack, title = stringResource(id = R.string.self_deleting_messages_title) ) }) + ArgumentListWrapping:Extensions.kt$( TimeZone.currentSystemDefault()) + ArgumentListWrapping:FileUtil.kt$( this, getProviderAuthority(), it ) + ArgumentListWrapping:FileUtil.kt$( this, getProviderAuthority(), path.toFile(), assetDisplayName ) + ArgumentListWrapping:GetE2EICertificateUI.kt$( context.getActivity()!!.activityResultRegistry, forceLoginFlow = true ) + ArgumentListWrapping:GroupConversationDetailsViewModel.kt$GroupConversationDetailsViewModel$( isServicesAllowed = !enableServices, error = GroupConversationOptionsState.Error.UpdateServicesError(result.cause) ) + ArgumentListWrapping:GroupConversationDetailsViewModel.kt$GroupConversationDetailsViewModel$( leaveGroupState.conversationId, selfUser.id ) + ArgumentListWrapping:GroupConversationDetailsViewModel.kt$GroupConversationDetailsViewModel$( savedStateHandle, observeConversationMembers, refreshUsersWithoutMetadata ) + ArgumentListWrapping:GroupConversationOptions.kt$( GroupConversationOptionsState( conversationId = ConversationId("someValue", "someDomain"), groupName = "Normal Group Conversation", areAccessOptionsAvailable = false ), {}, {}, {}, {}, {} ) + ArgumentListWrapping:GroupConversationOptions.kt$( GroupConversationOptionsState( conversationId = ConversationId("someValue", "someDomain"), groupName = "Normal Group Conversation", areAccessOptionsAvailable = true, isUpdatingNameAllowed = false, isUpdatingGuestAllowed = false, isUpdatingServicesAllowed = false, isUpdatingSelfDeletingAllowed = false, isUpdatingReadReceiptAllowed = false, isGuestAllowed = true, isServicesAllowed = true, isReadReceiptAllowed = true, ), {}, {}, {}, {}, {} ) + ArgumentListWrapping:GroupConversationOptions.kt$( GroupConversationOptionsState( conversationId = ConversationId("someValue", "someDomain"), groupName = "Team Group Conversation", areAccessOptionsAvailable = true, isUpdatingNameAllowed = false, isUpdatingGuestAllowed = false, isUpdatingServicesAllowed = true, isUpdatingSelfDeletingAllowed = true, isUpdatingReadReceiptAllowed = true, isGuestAllowed = true, isServicesAllowed = true, isReadReceiptAllowed = true, ), {}, {}, {}, {}, {} ) + ArgumentListWrapping:GroupConversationOptions.kt$( GroupConversationOptionsState( conversationId = ConversationId("someValue", "someDomain"), groupName = "Team Group Conversation", areAccessOptionsAvailable = true, isUpdatingNameAllowed = true, isUpdatingGuestAllowed = false, isUpdatingServicesAllowed = true, isUpdatingSelfDeletingAllowed = true, isUpdatingReadReceiptAllowed = true, isGuestAllowed = true, isServicesAllowed = true, isReadReceiptAllowed = true, ), {}, {}, {}, {}, {} ) + ArgumentListWrapping:GroupConversationOptions.kt$( GroupConversationOptionsState( conversationId = ConversationId("someValue", "someDomain"), groupName = "Team Group Conversation", areAccessOptionsAvailable = true, isUpdatingNameAllowed = true, isUpdatingGuestAllowed = true, isUpdatingServicesAllowed = true, isUpdatingSelfDeletingAllowed = true, isUpdatingReadReceiptAllowed = true, isGuestAllowed = true, isServicesAllowed = true, isReadReceiptAllowed = true, ), {}, {}, {}, {}, {} ) + ArgumentListWrapping:GroupConversationOptions.kt$( enabled = canBeChanged, onClick = onClick, onLongClick = { /* not handled */ }) + ArgumentListWrapping:GroupOptionsScreen.kt$( title = stringResource(R.string.disable_guests_dialog_title), text = stringResource(R.string.disable_guests_dialog_description), onDismiss = onAllowGuestsDialogDismissed, buttonsHorizontalAlignment = false, optionButton1Properties = WireDialogButtonProperties( onClick = onNotAllowGuestsClicked, text = stringResource(id = R.string.disable_guests_dialog_button), type = WireDialogButtonType.Primary ), optionButton2Properties = WireDialogButtonProperties( text = stringResource(R.string.allow_guests), onClick = onAllowGuestsClicked, type = WireDialogButtonType.Primary ), dismissButtonProperties = WireDialogButtonProperties( text = stringResource(R.string.label_cancel), onClick = onAllowGuestsDialogDismissed ) ) + ArgumentListWrapping:GroupOptionsScreen.kt$(value = isAllowGuestEnabled, isOnOffVisible = false, onCheckedChange = { onAllowGuestChanged.invoke(it) }) + ArgumentListWrapping:GroupOptionsScreen.kt$(value = isAllowServicesEnabled, isOnOffVisible = false, onCheckedChange = { onAllowServicesChanged.invoke(it) }) + ArgumentListWrapping:GroupOptionsScreen.kt$(value = isReadReceiptEnabled, isOnOffVisible = false, onCheckedChange = { onReadReceiptChanged.invoke(it) }) + ArgumentListWrapping:HangUpButton.kt$(modifier = Modifier .width(MaterialTheme.wireDimensions.initiatingCallHangUpButtonSize) .height(MaterialTheme.wireDimensions.initiatingCallHangUpButtonSize), onHangUpButtonClicked = { }) + ArgumentListWrapping:HomeScreen.kt$( onPermissionDenied = { /** TODO: Show a dialog rationale explaining why the permission is needed **/ }) + ArgumentListWrapping:HomeSheetContent.kt$( icon = { MenuItemIcon( id = R.drawable.ic_archive, contentDescription = stringResource( if (conversationSheetContent.isArchived) R.string.content_description_unarchive else R.string.content_description_move_to_archive ), ) }, title = stringResource( if (!conversationSheetContent.isArchived) R.string.label_move_to_archive else R.string.label_unarchive ), onItemClick = { with(conversationSheetContent) { updateConversationArchiveStatus( DialogState( conversationId = conversationId, conversationName = title, conversationTypeDetail = conversationTypeDetail, isArchived = isArchived, isMember = conversationSheetContent.selfRole != null ) ) } }) + ArgumentListWrapping:ImageAssetTest.kt$ImageAssetTest$( imageLoader, userAssetId ) + ArgumentListWrapping:ImageAssetsContent.kt$( uiAsset.conversationId, uiAsset.messageId, uiAsset.isSelfAsset ) + ArgumentListWrapping:ImageMessageTypes.kt$(modifier = Modifier.size(MaterialTheme.wireDimensions.spacing24x), contentAlignment = Alignment.Center) + ArgumentListWrapping:ImportMediaScreen.kt$(text = stringResource(R.string.label_learn_more), tag = "learn_more", annotation = learnMoreUrl, onClick = { CustomTabsHelper.launchUrl(context, learnMoreUrl) } ) + ArgumentListWrapping:LegalHoldRequestedDialog.kt$( LegalHoldRequestedState.Visible( legalHoldDeviceFingerprint = "0123456789ABCDEF", requiresPassword = false, userId = UserId("", ""), ), {}, {}, {} ) + ArgumentListWrapping:LegalHoldRequestedDialog.kt$( LegalHoldRequestedState.Visible( legalHoldDeviceFingerprint = "0123456789ABCDEF", requiresPassword = true, userId = UserId("", ""), ), {}, {}, {} ) + ArgumentListWrapping:LegalHoldSubjectProfileDialog.kt$( title = stringResource(id = R.string.legal_hold_subject_dialog_title, userName), withDefaultInfo = true, cancelText = stringResource(id = R.string.label_close), dialogDismissed = dialogDismissed) + ArgumentListWrapping:LegalHoldSubjectProfileDialog.kt$( title = stringResource(id = R.string.legal_hold_subject_self_dialog_title), withDefaultInfo = true, cancelText = stringResource(id = R.string.label_close), dialogDismissed = dialogDismissed) + ArgumentListWrapping:LoginEmailVerificationCodeScreen.kt$(modifier = Modifier .height(dimensions().spacing8x) .weight(1f)) + ArgumentListWrapping:MarkdownBlockQuote.kt$(modifier = Modifier .drawBehind { drawLine( color = color, strokeWidth = 2f, start = Offset(xOffset, 0f), end = Offset(xOffset, size.height) ) } .padding(start = dimensions().spacing16x, top = dimensions().spacing4x, bottom = dimensions().spacing4x)) + ArgumentListWrapping:MarkdownCodeBlock.kt$( dimensions().spacing1x, MaterialTheme.wireColorScheme.outline, shape = RoundedCornerShape(dimensions().spacing4x) ) + ArgumentListWrapping:MarkdownComposer.kt$( paragraph = node, nodeData = updatedNodeData, clickable ) + ArgumentListWrapping:MarkdownHelperTest.kt$MarkdownHelperTest$(TableRow() .apply { appendChild(TableCell().apply { appendChild(Text("Cell")) }) }) + ArgumentListWrapping:MarkdownHelperTest.kt$MarkdownHelperTest$(TableRow() .apply { appendChild(TableCell().apply { appendChild(Text("Header")) }) }) + ArgumentListWrapping:MessageExpiration.kt$<no name provided>$( when (type) { StringResourceType.WEEKS -> R.plurals.weeks_left StringResourceType.DAYS -> R.plurals.days_left StringResourceType.HOURS -> R.plurals.hours_left StringResourceType.MINUTES -> R.plurals.minutes_left StringResourceType.SECONDS -> R.plurals.seconds_left }, quantity, quantity ) + ArgumentListWrapping:MessageItem.kt$(enabled = true, onClick = { if (isContentClickable) { onMessageClick(message.header.messageId) } }, onLongClick = remember(message) { { if (!isContentClickable && !message.isDeleted) { onLongClicked(message) } } } ) + ArgumentListWrapping:MessagePreviewContentMapper.kt$( userUIText, UIText.StringResource( if (isSelfMessage) R.string.last_message_self_user_shared_asset else R.string.last_message_other_user_shared_asset ) ) + ArgumentListWrapping:MessagePreviewContentMapperTest.kt$MessagePreviewContentMapperTest$( content = MessagePreviewContent.WithUser.Asset("admin", AssetType.IMAGE), isSelfMessage = false ) + ArgumentListWrapping:MessagePreviewContentMapperTest.kt$MessagePreviewContentMapperTest$( content = MessagePreviewContent.WithUser.Asset("admin", AssetType.IMAGE), isSelfMessage = true ) + ArgumentListWrapping:MessagePreviewContentMapperTest.kt$MessagePreviewContentMapperTest$( content = MessagePreviewContent.WithUser.Asset("admin", AssetType.VIDEO), isSelfMessage = true ) + ArgumentListWrapping:MessagePreviewContentMapperTest.kt$MessagePreviewContentMapperTest$( content = MessagePreviewContent.WithUser.Knock("admin"), isSelfMessage = false ) + ArgumentListWrapping:MessagePreviewContentMapperTest.kt$MessagePreviewContentMapperTest$( content = MessagePreviewContent.WithUser.Knock("admin"), isSelfMessage = true ) + ArgumentListWrapping:MessagePreviewContentMapperTest.kt$MessagePreviewContentMapperTest$( content = MessagePreviewContent.WithUser.MemberLeft("user"), isSelfMessage = false ) + ArgumentListWrapping:MessagePreviewContentMapperTest.kt$MessagePreviewContentMapperTest$( content = MessagePreviewContent.WithUser.MemberLeft("user"), isSelfMessage = true ) + ArgumentListWrapping:MessageTypes.kt$( color = MaterialTheme.wireColorScheme.onPrimary, shape = RoundedCornerShape(dimensions().messageAssetBorderRadius) ) + ArgumentListWrapping:MessageTypes.kt$( imgParams.normalizedWidth, imgParams.normalizedHeight, transferStatus == DOWNLOAD_IN_PROGRESS ) + ArgumentListWrapping:MessageTypes.kt$( imgParams.normalizedWidth, imgParams.normalizedHeight, transferStatus == FAILED_DOWNLOAD ) + ArgumentListWrapping:MessageTypes.kt$( imgParams.normalizedWidth, imgParams.normalizedHeight, true ) + ArgumentListWrapping:MessageTypesPreview.kt$( flowStatus = MessageFlowStatus.Delivered, isDeleted = true, expirationStatus = ExpirationStatus.NotExpirable ) + ArgumentListWrapping:MigrateClientsDataUseCase.kt$MigrateClientsDataUseCase$( clientId, RegisterClientParam( password = null, capabilities = null ) ) + ArgumentListWrapping:MigrationManager.kt$MigrationManager$( { when (it) { is NetworkFailure.NoNetworkConnection -> MigrationData.Result.Failure.NoNetwork else -> MigrationData.Result.Failure.Account.Any(report.toFormattedString()) } }, { (migratedAccounts, isFederated) -> onAccountsMigrated(migratedAccounts, isFederated, coroutineScope, updateProgress, migrationDispatcher) } ) + ArgumentListWrapping:Mock.kt$( UserAssetId("a", "domain"), ImageAsset.PrivateAsset(mockImageLoader, ConversationId("id", "domain"), "messageId", true), 800, 600 ) + ArgumentListWrapping:Mock.kt$( flowStatus = MessageFlowStatus.Delivered, isDeleted = true, expirationStatus = ExpirationStatus.NotExpirable ) + ArgumentListWrapping:Mock.kt$(object : ImageLoader { override val components: ComponentRegistry get() = TODO("Not yet implemented") override val defaults: DefaultRequestOptions get() = TODO("Not yet implemented") override val diskCache: DiskCache get() = TODO("Not yet implemented") override val memoryCache: MemoryCache get() = TODO("Not yet implemented") override fun enqueue(request: ImageRequest): Disposable = TODO("Not yet implemented") override suspend fun execute(request: ImageRequest): ImageResult = TODO("Not yet implemented") override fun newBuilder(): ImageLoader.Builder = TODO("Not yet implemented") override fun shutdown() = TODO("Not yet implemented") }, object : NetworkStateObserver { override fun observeNetworkState(): StateFlow<NetworkState> = MutableStateFlow(NetworkState.ConnectedWithInternet) } ) + ArgumentListWrapping:MyAccountScreen.kt$( text = stringResource(R.string.settings_myaccount_reset_password).toTitleCase(), onClick = { CustomTabsHelper.launchUrl(context, forgotPasswordUrl) }) + ArgumentListWrapping:NavigationUtilsTest.kt$NavigationUtilsTest$( mockk(), QualifiedID( value = mockQualifiedIdValue, domain = mockQualifiedIdDomain ), mockMessageId, true, true ) + ArgumentListWrapping:NetworkSettingsScreen.kt$( {}, true, {}, "" ) + ArgumentListWrapping:OAuthUseCase.kt$OAuthUseCase$( OAUTH_ACTIVITY_RESULT_KEY, ActivityResultContracts.StartActivityForResult() ) + ArgumentListWrapping:OAuthUseCase.kt$OAuthUseCase$( authServiceConfig, clientId, ResponseTypeValues.CODE, URL_AUTH_REDIRECT ) + ArgumentListWrapping:OAuthUseCase.kt$OAuthUseCase$( codeVerifier, getCodeChallenge(codeVerifier), CODE_VERIFIER_CHALLENGE_METHOD ) + ArgumentListWrapping:OAuthUseCase.kt$OAuthUseCase$( idToken.toString(), authState.jsonSerializeString() ) + ArgumentListWrapping:OAuthUseCase.kt$OAuthUseCase$( message = "OAuthTokenRefreshManager: Error refreshing tokens, continue with login!", throwable = exception ) + ArgumentListWrapping:ObserveImageAssetMessagesFromConversationUseCaseTest.kt$ObserveImageAssetMessagesFromConversationUseCaseTest$( "asset2", Instant.parse("2023-11-12T10:00:00.671Z") ) + ArgumentListWrapping:ObserveImageAssetMessagesFromConversationUseCaseTest.kt$ObserveImageAssetMessagesFromConversationUseCaseTest.Arrangement$( getAssetMessages, UIAssetMapper(), TestDispatcherProvider(), timeZoneProvider, ) + ArgumentListWrapping:OngoingCallService.kt$OngoingCallService$( { reason -> appLogger.i("$TAG: stopSelf. Reason: $reason") stopSelf() }, { generateForegroundNotification(it.notificationTitle, it.conversationId.toString(), it.userId) } ) + ArgumentListWrapping:OtherUserProfileState.kt$OtherUserProfileState.Companion$( "group name", Member.Role.Member, true, ConversationId("some_user", "domain.com") ) + ArgumentListWrapping:ParticipantTile.kt$( modifier = Modifier .onSizeChanged { size = it } .pointerInput(Unit) { // enable zooming on full screen and when video is on if (isZoomingEnabled) { detectTransformGestures { _, gesturePan, gestureZoom, _ -> zoom = (zoom * gestureZoom).coerceIn(1f, 3f) val maxX = (size.width * (zoom - 1)) / 2 val minX = -maxX offsetX = maxOf(minX, minOf(maxX, offsetX + gesturePan.x)) val maxY = (size.height * (zoom - 1)) / 2 val minY = -maxY offsetY = maxOf(minY, minOf(maxY, offsetY + gesturePan.y)) } } } .graphicsLayer( scaleX = zoom, scaleY = zoom, translationX = offsetX, translationY = offsetY ), factory = { val frameLayout = FrameLayout(it) frameLayout.addView(videoRenderer) frameLayout }) + ArgumentListWrapping:PersistentWebsocketCheckWorker.kt$( NAME, ExistingPeriodicWorkPolicy.CANCEL_AND_REENQUEUE, PeriodicWorkRequestBuilder<PersistentWebsocketCheckWorker>(WORK_INTERVAL) .addTag(TAG) // adds the tag so we can cancel later all related work. .build() ) + ArgumentListWrapping:QuotedMessage.kt$( senderName = senderName.asString(), style = style, modifier = modifier, centerContent = { MainContentText(locationName) }, startContent = { startContent() }, endContent = { Icon( painter = painterResource(R.drawable.ic_location), contentDescription = null, modifier = modifier .size(dimensions().spacing24x), tint = colorsScheme().secondaryText ) }, footerContent = { QuotedMessageOriginalDate(originalDateTimeText) }, clickable = clickable ) + ArgumentListWrapping:QuotedMessage.kt$( senderName = senderName.asString(), style = style, modifier = modifier, centerContent = { assetName?.let { MainContentText(it) } }, startContent = { startContent() }, endContent = { Icon( painter = painterResource(R.drawable.ic_file), contentDescription = null, modifier = modifier .size(dimensions().spacing24x), tint = colorsScheme().secondaryText ) }, footerContent = { QuotedMessageOriginalDate(originalDateTimeText) }, clickable = clickable ) + ArgumentListWrapping:QuotedMessage.kt$( senderName.asString(), style = style, modifier = modifier, startContent = { startContent() }, centerContent = { StatusBox(stringResource(R.string.deleted_message_text)) }, footerContent = { QuotedMessageOriginalDate(originalDateDescription) }, clickable = clickable ) + ArgumentListWrapping:QuotedMessage.kt$( senderName.asString(), style = style, modifier = modifier, startContent = { startContent() }, centerContent = { editedTimeDescription?.let { if (style == COMPLETE) { StatusBox(it.asString()) } } MainContentText(text) }, footerContent = { QuotedMessageOriginalDate(originalDateTimeDescription) }, clickable = clickable ) + ArgumentListWrapping:RegularMessageContentMapper.kt$RegularMessageMapper$( if (message.isSelfMessage) { UIText.StringResource(messageResourceProvider.memberNameYouTitlecase) } else { sender?.name.orUnknownName() }, message.isSelfMessage ) + ArgumentListWrapping:RemoveDeviceViewModel.kt$RemoveDeviceViewModel$( password, null, modelPostfix = if (BuildConfig.PRIVATE_BUILD) " [${BuildConfig.FLAVOR}_${BuildConfig.BUILD_TYPE}]" else null ) + ArgumentListWrapping:RichMenuBottomSheetItem.kt$( title = title, color = titleColor, titleStyleUnselected = titleStyleUnselected, titleStyleSelected = titleStyleSelected, state = state ) + ArgumentListWrapping:ScalaMessageDAO.kt$ScalaMessageDAO$( "SELECT *" + // Assets are required, otherwise we get exception "requesting column name with table name". "FROM $MESSAGES_TABLE_NAME AS m " + "LEFT JOIN $ASSETS_TABLE_NAME ON m.$COLUMN_ASSET_ID = $ASSETS_TABLE_NAME.$COLUMN_ID " + "WHERE m.$COLUMN_CONVERSATION_ID = ?" + "ORDER BY m.$COLUMN_TIME ASC ", arrayOf(scalaConversation.id) ) + ArgumentListWrapping:SearchAllPeopleScreen.kt$(header = searchTitle, items = (if (showAllItems) searchResult else searchResult.take( DEFAULT_SEARCH_RESULT_ITEM_SIZE )) .associateBy { it.id }) + ArgumentListWrapping:SearchBar.kt$( modifier = Modifier.padding(start = dimensions().spacing12x), onClick = { onTextTyped(TextFieldValue("")) }) + ArgumentListWrapping:SearchConversationScreen.kt$( horizontalAlignment = Alignment.CenterHorizontally, modifier = Modifier .fillMaxWidth() .wrapContentHeight() ) + ArgumentListWrapping:SearchConversationScreen.kt$( horizontalAlignment = Alignment.CenterHorizontally, modifier = Modifier .padding(horizontal = dimensions().spacing48x) .wrapContentHeight() ) + ArgumentListWrapping:SearchPeopleRouter.kt$( initialPage = initialPageIndex, pageCount = { if (searchState.isServicesAllowed) SearchPeopleTabItem.entries.size else 1 }) + ArgumentListWrapping:SearchPeopleRouter.kt$( targetState = searchBarState.isSearchActive, label = "" ) + ArgumentListWrapping:SelfUserProfileScreen.kt$( account, clickable = remember { Clickable(enabled = true, onClick = { if (isUserInCall()) { Toast.makeText( context, context.getString(R.string.cant_switch_account_in_call), Toast.LENGTH_SHORT ).show() } else { onOtherAccountClick(account.id) } }) }) + ArgumentListWrapping:SendMessageViewModelTest.kt$SendMessageViewModelTest$( "key", "audio/mp4", assetPath, assetSize, assetName, AttachmentType.AUDIO ) + ArgumentListWrapping:SendMessageViewModelTest.kt$SendMessageViewModelTest$( "key", "image/jpeg", assetPath, assetSize, assetName, AttachmentType.IMAGE ) + ArgumentListWrapping:ServerTitle.kt$(painter = painterResource(id = R.drawable.ic_info), contentDescription = null, modifier = Modifier .constrainAs(infoIcon) { start.linkTo(serverTitle.end) centerVerticallyTo(serverTitle) } .padding(start = dimensions().spacing8x) .size(MaterialTheme.wireDimensions.wireIconButtonSize) .clickable(Clickable(true, onClick = { serverFullDetailsDialogState = true })), tint = MaterialTheme.wireColorScheme.secondaryText ) + ArgumentListWrapping:SetLockCodeScreen.kt$( snackbarHost = {}, topBar = { WireCenterAlignedTopAppBar( onNavigationPressed = onBackPress, navigationIconType = if (state.isEditable) NavigationIconType.Back else null, elevation = dimensions().spacing0x, title = stringResource(id = R.string.settings_set_lock_screen_title) ) }) + ArgumentListWrapping:SettingsScreen.kt$("AppLockConfig " + "isAppLockEditable: ${settingsState.isAppLockEditable} isAppLockEnabled: ${settingsState.isAppLockEnabled}") + ArgumentListWrapping:SystemMessageContentMapperTest.kt$SystemMessageContentMapperTest$( listOf(userId2, userId3), MessageContent.MemberChange.FailedToAdd.Type.Unknown ) + ArgumentListWrapping:SystemMessageItem.kt$( res, normalStyle, boldStyle, normalColor, boldColor, errorColor, isErrorString, if (usersCount > SINGLE_EXPANDABLE_THRESHOLD) expanded else true ) + ArgumentListWrapping:Theme.kt$( LocalSnackbarHostState provides remember { SnackbarHostState() }, LocalNavigator provides rememberNavigator {}) + ArgumentListWrapping:UsersTypingIndicator.kt$( initialValue = -10f, targetValue = -2f, animationSpec = infiniteRepeatable( animation = tween(ANIMATION_SPEED_MILLIS, easing = FastOutSlowInEasing), repeatMode = RepeatMode.Reverse ), label = infiniteTransition.label ) + ArgumentListWrapping:WelcomeScreen.kt$( isThereActiveSession = false, maxAccountsReached = false, state = ServerConfig.DEFAULT, navigateBack = {}, navigate = {}) + ArgumentListWrapping:WireActivity.kt$WireActivity$( userId = it, actions = NavigationSwitchAccountActions(navigate), onComplete = { navigate(NavigationCommand(SelfDevicesScreenDestination)) }) + ArgumentListWrapping:WireActivityDialogs.kt$( GlobalAppState( customBackendDialog = CustomServerDialogState( ServerConfig.STAGING ) ), {}, {}) + ArgumentListWrapping:WireActivityDialogs.kt$( JoinConversationViaCodeState.Error(CheckConversationInviteCodeUseCase.Result.Failure.InvalidCodeOrKey), {}) + ArgumentListWrapping:WireActivityDialogs.kt$( JoinConversationViaCodeState.Show("convName", "code", "key", "domain", false), {}) + ArgumentListWrapping:WireActivityDialogs.kt$( JoinConversationViaCodeState.Show("convName", "code", "key", "domain", true), {}) + ArgumentListWrapping:WireActivityDialogs.kt$( NewClientsData.CurrentUser(listOf(NewClientInfo("date", UIText.DynamicString("name"))), UserId("id", "domain")), {}, {}, {}) + ArgumentListWrapping:WireActivityDialogs.kt$(id = if (isTeamAppLockEnabled) R.string.team_app_lock_enabled else R.string.team_app_lock_disabled) + ArgumentListWrapping:WireButton.kt$(modifier = Modifier .align(Alignment.CenterEnd) .onGloballyPositioned { endItemWidth = it.size.width } ) + ArgumentListWrapping:WireNotificationManagerTest.kt$WireNotificationManagerTest$( any(), any(), TestUser.SELF_USER.handle!! ) + ArgumentListWrapping:WireNotificationManagerTest.kt$WireNotificationManagerTest$( listOf(), TestUser.SELF_USER.id, TestUser.SELF_USER.handle!! ) + ArgumentListWrapping:WireNotificationManagerTest.kt$WireNotificationManagerTest$( messageNotifications, TestUser.SELF_USER.id, TestUser.SELF_USER.handle!! ) + ArgumentListWrapping:WireNotificationManagerTest.kt$WireNotificationManagerTest$( newNotifications = any(), userId = any(), userName = TestUser.SELF_USER.handle!! ) + ArgumentListWrapping:WireNotificationManagerTest.kt$WireNotificationManagerTest.Companion$( "message_id", LocalNotificationMessageAuthor("author", null), Instant.DISTANT_FUTURE, "testing text" ) + ArgumentListWrapping:WireNotificationManagerTest.kt$WireNotificationManagerTest.Companion$( id, "name_${id.value}", messages, true ) + ArgumentListWrapping:WireTextField.kt$( start = if (leadingIcon == null) 16.dp else 0.dp, end = if (trailingOrStateIcon == null) 16.dp else 0.dp, top = 2.dp, bottom = 2.dp ) + ArgumentListWrapping:WireTextFieldDefaults.kt$<no name provided>$( when (state) { WireTextFieldState.Disabled -> disabledTextColor is WireTextFieldState.Error -> errorColor WireTextFieldState.Success -> successColor else -> textColor }) + ArgumentListWrapping:WireTextFieldDefaults.kt$<no name provided>$( when (state) { is WireTextFieldState.Error -> errorColor else -> descriptionColor }) + ArgumentListWrapping:WireTextFieldDefaults.kt$<no name provided>$( when { state is WireTextFieldState.Error -> errorColor state is WireTextFieldState.Success -> successColor focused -> focusColor else -> borderColor }) + ArgumentListWrapping:WireTextFieldDefaults.kt$<no name provided>$( when { state is WireTextFieldState.Error -> errorColor state is WireTextFieldState.Success -> successColor focused -> focusColor else -> labelColor }) + BlockCommentInitialStarAlignment:ConversationInfoViewModel.kt$ConversationInfoViewModel$/* If this would be collected in the scope of this ViewModel (in `init` for instance) then there would be a race condition. [MessageComposerViewModel] handles the navigating back after removing a group and here it would navigate to home if the group is removed without back params indicating that the user actually have just done that. The info about the group being removed could appear before the back navigation params. That's why it's being observed in the `LaunchedEffect` in the Composable. */ + BlockCommentInitialStarAlignment:ConversationList.kt$/* * When the list is scrolled to top and new items (e.g. new activity section) should appear on top of the list, it appears above * all current items, scroll is preserved so the list still shows the same item as the first one on list so it scrolls * automatically to that item and the newly added section on top is hidden above this previously top item, so for such situation * when the list is scrolled to the top and we want the new section to appear at the top we need a dummy top item which will make * it so it wants to keep this dummy top item as the first one on list and show all other items below it. */ + CommentSpacing:FeatureVisibilityFlags.kt$//ACCEPTANCE CRITERIA + CommentSpacing:FeatureVisibilityFlags.kt$//As a Beta user I don’t want to press on buttons that don’t have functions yet, + CommentSpacing:FeatureVisibilityFlags.kt$//Buttons to remove from the UI: + CommentSpacing:FeatureVisibilityFlags.kt$//Conversation View → + icon → share location + CommentSpacing:FeatureVisibilityFlags.kt$//Conversation View → :smile: icon + CommentSpacing:FeatureVisibilityFlags.kt$//Conversation View → @ icon + CommentSpacing:FeatureVisibilityFlags.kt$//Conversation View → Aa icon + CommentSpacing:FeatureVisibilityFlags.kt$//Conversation View → GIF icon + CommentSpacing:FeatureVisibilityFlags.kt$//Conversation View → ping icon + CommentSpacing:FeatureVisibilityFlags.kt$//Conversation View → search icon + CommentSpacing:FeatureVisibilityFlags.kt$//Conversation view → + icon → Audio messages + CommentSpacing:FeatureVisibilityFlags.kt$//Settings → App settings entry + CommentSpacing:FeatureVisibilityFlags.kt$//Settings → Backup and restore information entry + CommentSpacing:FeatureVisibilityFlags.kt$//User Profile → Edit icon + CommentSpacing:FeatureVisibilityFlags.kt$//long press on images → copy + CommentSpacing:FeatureVisibilityFlags.kt$//long press on images → edit + CommentSpacing:FeatureVisibilityFlags.kt$//long press on text → edit entry + CommentSpacing:LastConversationEvent.kt$CallTime$//TODO: This could be a Long timestamp, + CommentSpacing:ThemeUtils.kt$ScreenSizeDependent$//sw320dp + CommentSpacing:ThemeUtils.kt$ScreenSizeDependent$//sw480dp + CommentSpacing:ThemeUtils.kt$ScreenSizeDependent$//sw600dp + CommentSpacing:ThemeUtils.kt$ScreenSizeDependent$//sw840dp + CommentWrapping:ConversationScreen.kt$/* do nothing */ + CommentWrapping:FileUtil.kt$/* description = */ + CommentWrapping:FileUtil.kt$/* isMediaScannerScannable = */ + CommentWrapping:FileUtil.kt$/* length = */ + CommentWrapping:FileUtil.kt$/* mimeType = */ + CommentWrapping:FileUtil.kt$/* path = */ + CommentWrapping:FileUtil.kt$/* showNotification = */ + CommentWrapping:FileUtil.kt$/* title = */ + CommentWrapping:IncomingCallScreen.kt$/* do nothing */ + CommentWrapping:InitiatingCallScreen.kt$/* do nothing */ + CommentWrapping:MigrationManager.kt$MigrationManager$/* no-op */ + CommentWrapping:OngoingCallScreen.kt$/* do nothing */ + CommentWrapping:RegisterDeviceViewModel.kt$RegisterDeviceViewModel$/* app is already waiting for the user to enter the password */ + CommentWrapping:SendMessageViewModel.kt$SendMessageViewModel$/* do nothing */ + CommentWrapping:VerifyEmailViewModel.kt$VerifyEmailViewModel$/*no-op*/ + DestructuringDeclarationWithTooManyEntries:AssetMessageTypes.kt$val ( name, icon, size, message ) = createRefs() + DestructuringDeclarationWithTooManyEntries:CallOptionsControls.kt$val (microphoneIcon, microphoneText, cameraIcon, cameraText, speakerIcon, speakerText) = createRefs() + DestructuringDeclarationWithTooManyEntries:ImageAsset.kt$val (conversationIdString, messageId, isSelfAsset, isEphemeral) = split(":") + Filename:CallingRecordAudioRequestFlow.kt$com.wire.android.util.permission.CallingRecordAudioRequestFlow.kt + Filename:WireTextFieldDefaults.kt$com.wire.android.ui.common.textfield.WireTextFieldDefaults.kt + KdocWrapping:AttachmentOptions.kt$/** Nothing to do here when permission is denied once */ + KdocWrapping:DownloadedAssetDialog.kt$/** Nothing to do **/ + KdocWrapping:HomeScreen.kt$/** TODO: Show a dialog rationale explaining why the permission is needed **/ + KdocWrapping:MediaGalleryScreen.kt$/** Nothing to do **/ + KdocWrapping:RecordAudioComponent.kt$/** Nothing to do **/ + MultiLineIfElse:AccountSwitchUseCase.kt$AccountSwitchUseCase$appLogger.i("$TAG No next account to switch to") + MultiLineIfElse:AccountSwitchUseCase.kt$AccountSwitchUseCase$appLogger.i("$TAG Switching to next account: ${nextSessionId.toLogString()}") + MultiLineIfElse:AdditionalOptionButton.kt$WireButtonState.Disabled + MultiLineIfElse:AssetMessageTypes.kt$Modifier .align(Alignment.Center) .fillMaxWidth() + MultiLineIfElse:AssetMessageTypes.kt$Modifier .size(dimensions().importedMediaAssetSize) .align(Alignment.Center) .fillMaxSize() + MultiLineIfElse:AssetTooLargeDialog.kt$it + MultiLineIfElse:AssetTooLargeDialog.kt$it + "\n" + stringResource(R.string.label_file_saved_to_device) + MultiLineIfElse:AuthorHeaderHelper.kt$AuthorHeaderHelper$currentMessage is UIMessage.Regular + MultiLineIfElse:AuthorHeaderHelper.kt$AuthorHeaderHelper$false + MultiLineIfElse:BackupAndRestoreViewModel.kt$BackupAndRestoreViewModel$kaliumFileSystem.delete(latestImportedBackupTempPath) + MultiLineIfElse:BlockUserDialogs.kt$WireButtonState.Disabled + MultiLineIfElse:BlockUserDialogs.kt$WireButtonState.Error + MultiLineIfElse:BottomNavigation.kt$MaterialTheme.wireDimensions.bottomNavigationBetweenItemsPadding + MultiLineIfElse:BottomNavigation.kt$MaterialTheme.wireDimensions.bottomNavigationHorizontalPadding + MultiLineIfElse:Buttons.kt$WireButtonState.Default + MultiLineIfElse:Buttons.kt$WireButtonState.Disabled + MultiLineIfElse:CameraButton.kt$R.string.content_description_calling_turn_camera_off + MultiLineIfElse:CameraButton.kt$R.string.content_description_calling_turn_camera_on + MultiLineIfElse:CameraFlipButton.kt$R.string.content_description_calling_flip_camera_off + MultiLineIfElse:CameraFlipButton.kt$R.string.content_description_calling_flip_camera_on + MultiLineIfElse:ClearConversationContentDialog.kt$WireButtonState.Disabled + MultiLineIfElse:ClearConversationContentDialog.kt$WireButtonState.Error + MultiLineIfElse:CodeTextField.kt$Spacer(modifier = Modifier .weight(1f, fill = false) .width(maxHorizontalSpacing)) + MultiLineIfElse:CollapsingTopBarScaffold.kt$<no name provided>$Offset.Zero + MultiLineIfElse:CollapsingTopBarScaffold.kt$<no name provided>$Velocity.Zero + MultiLineIfElse:CollapsingTopBarScaffold.kt$<no name provided>$available + MultiLineIfElse:CollapsingTopBarScaffold.kt$<no name provided>$swipeableState.performDrag(available.y).toOffset() + MultiLineIfElse:CollapsingTopBarScaffold.kt$it + MultiLineIfElse:CollapsingTopBarScaffold.kt$it.plus(-collapsingHeight.toFloat() to State.COLLAPSED) + MultiLineIfElse:CommonTopAppBar.kt$R.drawable.ic_microphone_white + MultiLineIfElse:CommonTopAppBar.kt$R.drawable.ic_microphone_white_muted + MultiLineIfElse:CommonTopAppBar.kt$R.string.content_description_calling_call_muted + MultiLineIfElse:CommonTopAppBar.kt$R.string.content_description_calling_call_unmuted + MultiLineIfElse:CommonTopAppBar.kt$this + MultiLineIfElse:ConversationCallViewModel.kt$ConversationCallViewModel$null + MultiLineIfElse:ConversationListViewModel.kt$ConversationListViewModel$put( ConversationFolder.Predefined.Conversations, remainingConversations ) + MultiLineIfElse:ConversationListViewModel.kt$ConversationListViewModel$put( ConversationFolder.Predefined.NewActivities, unreadConversations ) + MultiLineIfElse:ConversationListViewModel.kt$ConversationListViewModel$put( ConversationFolder.WithoutHeader, this@withFolders ) + MultiLineIfElse:ConversationParticipantItem.kt$uiParticipant.readReceiptDate?.let { it.uiReadReceiptDateTime() } ?: uiParticipant.handle + MultiLineIfElse:ConversationScreen.kt$(conversationInfoViewState.conversationDetailsData as? ConversationDetailsData.Group)?.conversationId.let { navigator.navigate(NavigationCommand(OtherUserProfileScreenDestination(mentionUserId, it))) } + MultiLineIfElse:ConversationScreen.kt$MenuModalSheetHeader.Gone + MultiLineIfElse:ConversationScreen.kt$navigator.navigate(NavigationCommand(SelfUserProfileScreenDestination)) + MultiLineIfElse:ConversationSheetContent.kt$closeBottomSheet() + MultiLineIfElse:ConversationSheetContent.kt$conversationSheetState.toHome() + MultiLineIfElse:ConversationSheetState.kt$conversationInfo.name + MultiLineIfElse:CreateAccountDetailsScreen.kt$WireTextFieldState.Default + MultiLineIfElse:CreateAccountDetailsScreen.kt$when (state.error) { CreateAccountDetailsViewState.DetailsError.TextFieldError.PasswordsNotMatchingError -> WireTextFieldState.Error(stringResource(id = R.string.create_account_details_password_not_matching_error)) CreateAccountDetailsViewState.DetailsError.TextFieldError.InvalidPasswordError -> WireTextFieldState.Error(stringResource(id = R.string.create_account_details_password_error)) } + MultiLineIfElse:CreateAccountEmailScreen.kt$"" + MultiLineIfElse:CreateAccountEmailScreen.kt$WireTextFieldState.Default + MultiLineIfElse:CreateAccountEmailScreen.kt$WireTextFieldState.Error() + MultiLineIfElse:CreateAccountEmailScreen.kt$when (error) { CreateAccountEmailViewState.EmailError.TextFieldError.AlreadyInUseError -> stringResource(R.string.create_account_email_already_in_use_error) CreateAccountEmailViewState.EmailError.TextFieldError.BlacklistedEmailError -> stringResource(R.string.create_account_email_blacklisted_error) CreateAccountEmailViewState.EmailError.TextFieldError.DomainBlockedError -> stringResource(R.string.create_account_email_domain_blocked_error) CreateAccountEmailViewState.EmailError.TextFieldError.InvalidEmailError -> stringResource(R.string.create_account_email_invalid_error) } + MultiLineIfElse:CreateAccountEmailViewModel.kt$CreateAccountEmailViewModel$CreateAccountEmailViewState.EmailError.None + MultiLineIfElse:CreateAccountEmailViewModel.kt$CreateAccountEmailViewModel$CreateAccountEmailViewState.EmailError.TextFieldError.InvalidEmailError + MultiLineIfElse:CreatePasswordProtectedGuestLinkScreen.kt$WireButtonState.Default + MultiLineIfElse:CreatePasswordProtectedGuestLinkScreen.kt$WireButtonState.Disabled + MultiLineIfElse:CurrentScreenManager.kt$CurrentScreenManager$currentScreenState + MultiLineIfElse:CurrentScreenManager.kt$CurrentScreenManager$flowOf(CurrentScreen.InBackground) + MultiLineIfElse:DeepLinkProcessor.kt$DeepLinkProcessor$DeepLinkResult.MigrationLogin(String.EMPTY) + MultiLineIfElse:DeepLinkProcessor.kt$DeepLinkProcessor$DeepLinkResult.MigrationLogin(it) + MultiLineIfElse:DeleteConversationGroupDialog.kt$WireButtonState.Disabled + MultiLineIfElse:DeleteConversationGroupDialog.kt$WireButtonState.Error + MultiLineIfElse:DeviceDetailsScreen.kt$MaterialTheme.wireColorScheme.onBackground + MultiLineIfElse:DeviceDetailsScreen.kt$MaterialTheme.wireColorScheme.secondaryText + MultiLineIfElse:DeviceDetailsScreen.kt$navigator.navigateBack() + MultiLineIfElse:DeviceItem.kt$ProteusVerifiedIcon( Modifier .wrapContentWidth() .align(Alignment.CenterVertically)) + MultiLineIfElse:ElevationScrollExt.kt$maxElevation + MultiLineIfElse:ElevationScrollExt.kt$minOf((it.offset + it.size - layoutInfo.viewportEndOffset).dp, maxElevation) + MultiLineIfElse:ElevationScrollExt.kt$minOf(firstVisibleItemScrollOffset.toFloat().dp, maxElevation) + MultiLineIfElse:FileManager.kt$FileManager$AUDIO_MIME_TYPE + MultiLineIfElse:FileManager.kt$FileManager$attachmentUri .getMimeType(context) .orDefault(DEFAULT_FILE_MIME_TYPE) + MultiLineIfElse:ForgotLockCodeScreen.kt$ForgotLockCodeResetDeviceDialog( username = dialogState.username, isPasswordRequired = dialogState.passwordRequired, isPasswordValid = dialogState.passwordValid, isResetDeviceEnabled = dialogState.resetDeviceEnabled, onPasswordChanged = viewModel::onPasswordChanged, onResetDeviceClicked = viewModel::onResetDeviceConfirmed, onDialogDismissed = viewModel::onDialogDismissed, ) + MultiLineIfElse:ForgotLockCodeScreen.kt$ForgotLockCodeResettingDeviceDialog() + MultiLineIfElse:GetE2eiCertificateButton.kt$WireButtonState.Default + MultiLineIfElse:GetE2eiCertificateButton.kt$WireButtonState.Disabled + MultiLineIfElse:GroupConversationDetailsTopBarCollapsing.kt$"" + MultiLineIfElse:GroupConversationDetailsTopBarCollapsing.kt$UIText.StringResource(R.string.group_unavailable_label).asString() + MultiLineIfElse:GroupConversationDetailsViewModel.kt$GroupConversationDetailsViewModel$throw IllegalStateException( "Unsupported conversation type to clear content, something went wrong?" ) + MultiLineIfElse:GroupConversationNameComponent.kt$when (error) { GroupMetadataState.NewGroupError.TextFieldError.GroupNameEmptyError -> WireTextFieldState.Error(stringResource(id = R.string.empty_group_name_error)) GroupMetadataState.NewGroupError.TextFieldError.GroupNameExceedLimitError -> WireTextFieldState.Error(stringResource(id = R.string.group_name_exceeded_limit_error)) } + MultiLineIfElse:HighLightName.kt$MaterialTheme.wireColorScheme.secondaryText + MultiLineIfElse:HighLightName.kt$MaterialTheme.wireTypography.title02.color + MultiLineIfElse:HomeScreen.kt$R.string.conversation_content_delete_failure + MultiLineIfElse:HomeScreen.kt$R.string.error_archiving_conversation + MultiLineIfElse:HomeScreen.kt$R.string.group_content_delete_failure + MultiLineIfElse:HomeScreen.kt$R.string.success_archiving_conversation + MultiLineIfElse:HomeScreen.kt$R.string.success_unarchiving_conversation + MultiLineIfElse:HomeSheetContent.kt$R.string.content_description_move_to_archive + MultiLineIfElse:HomeSheetContent.kt$R.string.content_description_unarchive + MultiLineIfElse:HomeSheetContent.kt$R.string.label_move_to_archive + MultiLineIfElse:HomeSheetContent.kt$R.string.label_unarchive + MultiLineIfElse:ImageMessageTypes.kt$R.string.asset_message_download_in_progress_text + MultiLineIfElse:ImageMessageTypes.kt$R.string.asset_message_upload_in_progress_text + MultiLineIfElse:ImageMessageTypes.kt$R.string.error_downloading_image_message + MultiLineIfElse:ImageMessageTypes.kt$R.string.error_uploading_image_message + MultiLineIfElse:ImageMessageTypes.kt$modifier .fillMaxWidth() .height(dimensions().importedMediaAssetSize) + MultiLineIfElse:ImageMessageTypes.kt$modifier .width(dimensions().importedMediaAssetSize) .height(dimensions().importedMediaAssetSize) + MultiLineIfElse:ImportMediaAuthenticatedViewModel.kt$ImportMediaAuthenticatedViewModel$conversations + MultiLineIfElse:ImportMediaAuthenticatedViewModel.kt$ImportMediaAuthenticatedViewModel$searchShareableConversation( conversations, searchQuery ) + MultiLineIfElse:ImportMediaScreen.kt$dimensions().importedMediaAssetSize + horizontalPadding.times(2) + MultiLineIfElse:ImportMediaScreen.kt$screenWidth - (horizontalPadding * 2) + MultiLineIfElse:IncomingCallScreen.kt$stringResource(R.string.calling_label_incoming_call) + MultiLineIfElse:IncomingCallViewModel.kt$IncomingCallViewModel$null + MultiLineIfElse:InternalContactSearchResultItem.kt$Clickable { onCheckChange(!isAddedToGroup) } + MultiLineIfElse:InternalContactSearchResultItem.kt$clickable + MultiLineIfElse:LaunchedEffects.kt$prevPair + MultiLineIfElse:LaunchedEffects.kt$prevPair.second to newScrollIndex + MultiLineIfElse:LeaveConversationGroupDialog.kt$WireButtonState.Disabled + MultiLineIfElse:LeaveConversationGroupDialog.kt$WireButtonState.Error + MultiLineIfElse:LoginScreen.kt$E2EIEnrollmentScreenDestination + MultiLineIfElse:LoginScreen.kt$HomeScreenDestination + MultiLineIfElse:LoginScreen.kt$InitialSyncScreenDestination + MultiLineIfElse:LoginScreen.kt$LoginEmailVerificationCodeScreen(onSuccess, loginEmailViewModel) + MultiLineIfElse:LoginScreen.kt$MainLoginContent(onBackPressed, onSuccess, onRemoveDeviceNeeded, viewModel, loginEmailViewModel, ssoLoginResult) + MultiLineIfElse:LoginViewModel.kt$LoginViewModel$false + MultiLineIfElse:LoginViewModel.kt$LoginViewModel$preFilledUserIdentifier.userIdentifier + MultiLineIfElse:LoginViewModel.kt$LoginViewModel$savedStateHandle[USER_IDENTIFIER_SAVED_STATE_KEY] ?: String.EMPTY + MultiLineIfElse:LoginViewModel.kt$LoginViewModel$serverConfig.apiProxy?.needsAuthentication!! + MultiLineIfElse:MarkdownHelper.kt$null + MultiLineIfElse:MarkdownHelper.kt$this + MultiLineIfElse:MediaGalleryScreenState.kt$MediaGalleryScreenState$modalBottomSheetState.hide() + MultiLineIfElse:MediaGalleryScreenState.kt$MediaGalleryScreenState$modalBottomSheetState.show() + MultiLineIfElse:MessageComposeActions.kt$SelfDeletingMessageAction( isSelected = isSelfDeletingActive, onButtonClicked = onSelfDeletionOptionButtonClicked ) + MultiLineIfElse:MessageCompositionHolder.kt$MessageCompositionHolder$Pair(rangeEnd, rangeEnd) + MultiLineIfElse:MessageExpiration.kt$SelfDeletionTimerHelper$selfDeletionStatus.selfDeletionStartDate + expireAfter + MultiLineIfElse:MessageExpiration.kt$SelfDeletionTimerHelper.SelfDeletionTimerState.Expirable$1.toDuration(durationUnit) + MultiLineIfElse:MessageExpiration.kt$SelfDeletionTimerHelper.SelfDeletionTimerState.Expirable$timeLeftForDurationUnit + MultiLineIfElse:MessageItem.kt$null + MultiLineIfElse:MessageItem.kt$remember(message) { if (isAvailable) { { onLongClicked(message) } } else { null } } + MultiLineIfElse:MessagePreviewContentMapper.kt$R.string.last_message_other_changed_conversation_name + MultiLineIfElse:MessagePreviewContentMapper.kt$R.string.last_message_other_user_joined_conversation + MultiLineIfElse:MessagePreviewContentMapper.kt$R.string.last_message_other_user_knock + MultiLineIfElse:MessagePreviewContentMapper.kt$R.string.last_message_other_user_left_conversation + MultiLineIfElse:MessagePreviewContentMapper.kt$R.string.last_message_other_user_shared_asset + MultiLineIfElse:MessagePreviewContentMapper.kt$R.string.last_message_other_user_shared_image + MultiLineIfElse:MessagePreviewContentMapper.kt$R.string.last_message_other_user_shared_location + MultiLineIfElse:MessagePreviewContentMapper.kt$R.string.last_message_other_user_shared_video + MultiLineIfElse:MessagePreviewContentMapper.kt$R.string.last_message_self_changed_conversation_name + MultiLineIfElse:MessagePreviewContentMapper.kt$R.string.last_message_self_user_joined_conversation + MultiLineIfElse:MessagePreviewContentMapper.kt$R.string.last_message_self_user_knock + MultiLineIfElse:MessagePreviewContentMapper.kt$R.string.last_message_self_user_left_conversation + MultiLineIfElse:MessagePreviewContentMapper.kt$R.string.last_message_self_user_shared_asset + MultiLineIfElse:MessagePreviewContentMapper.kt$R.string.last_message_self_user_shared_image + MultiLineIfElse:MessagePreviewContentMapper.kt$R.string.last_message_self_user_shared_location + MultiLineIfElse:MessagePreviewContentMapper.kt$R.string.last_message_self_user_shared_video + MultiLineIfElse:MessageTypes.kt$DisplayableImageMessage(asset, imgParams.normalizedWidth, imgParams.normalizedHeight) + MultiLineIfElse:MessageTypes.kt$ImportedImageMessage(asset, shouldFillMaxWidth) + MultiLineIfElse:MessageTypes.kt$WireButtonState.Default + MultiLineIfElse:MessageTypes.kt$WireButtonState.Disabled + MultiLineIfElse:MessageTypes.kt$WireButtonState.Selected + MultiLineIfElse:MicrophoneButton.kt$R.string.content_description_calling_mute_call + MultiLineIfElse:MicrophoneButton.kt$R.string.content_description_calling_unmute_call + MultiLineIfElse:MigrateClientsDataUseCase.kt$MigrateClientsDataUseCase$listOf() + MultiLineIfElse:MigrateClientsDataUseCase.kt$MigrateClientsDataUseCase$sessionFileName + MultiLineIfElse:MigrationManagerTest.kt$MigrationManagerTest.Arrangement$coEvery { markUsersAsNeedToBeMigrated() } returns Unit + MultiLineIfElse:MigrationManagerTest.kt$MigrationManagerTest.Arrangement$coEvery { markUsersAsNeedToBeMigrated() } throws throwable + MultiLineIfElse:MigrationMapper.kt$MigrationMapper$BotService(scalaUserData.serviceIntegrationId, scalaUserData.serviceProviderId) + MultiLineIfElse:MigrationMapper.kt$MigrationMapper$null + MultiLineIfElse:MigrationScreen.kt$null + MultiLineIfElse:MigrationScreen.kt$stringResource(R.string.migration_title_step, stepNumber + 1, MigrationData.Progress.steps.size) + MultiLineIfElse:MutingOptionsSheetContent.kt$RichMenuItemState.DEFAULT + MultiLineIfElse:MutingOptionsSheetContent.kt$RichMenuItemState.SELECTED + MultiLineIfElse:MyAccountScreen.kt$Email( email, clickableActionIfPossible(!state.isEditEmailAllowed, navigateToChangeEmail) ) + MultiLineIfElse:MyAccountScreen.kt$null + MultiLineIfElse:NavigationUtils.kt$this + MultiLineIfElse:NavigationUtils.kt$this.substring(0, it) + MultiLineIfElse:OtherUserProfileInfoMessageType.kt$OtherUserProfileInfoMessageType.ArchiveConversationError$R.string.error_archiving_conversation + MultiLineIfElse:OtherUserProfileInfoMessageType.kt$OtherUserProfileInfoMessageType.ArchiveConversationError$R.string.error_unarchiving_conversation + MultiLineIfElse:OtherUserProfileInfoMessageType.kt$OtherUserProfileInfoMessageType.ArchiveConversationSuccess$R.string.success_archiving_conversation + MultiLineIfElse:OtherUserProfileInfoMessageType.kt$OtherUserProfileInfoMessageType.ArchiveConversationSuccess$R.string.success_unarchiving_conversation + MultiLineIfElse:ParticipantsTiles.kt$pages + MultiLineIfElse:RegisterDeviceScreen.kt$E2EIEnrollmentScreenDestination + MultiLineIfElse:RegisterDeviceScreen.kt$HomeScreenDestination + MultiLineIfElse:RegisterDeviceScreen.kt$InitialSyncScreenDestination + MultiLineIfElse:RemoveConversationMemberDialog.kt$WireButtonState.Disabled + MultiLineIfElse:RemoveConversationMemberDialog.kt$WireButtonState.Error + MultiLineIfElse:RemoveDeviceScreen.kt$E2EIEnrollmentScreenDestination + MultiLineIfElse:RemoveDeviceScreen.kt$HomeScreenDestination + MultiLineIfElse:RemoveDeviceScreen.kt$InitialSyncScreenDestination + MultiLineIfElse:RemoveDeviceViewModel.kt$RemoveDeviceViewModel$state + MultiLineIfElse:RemoveDeviceViewModel.kt$RemoveDeviceViewModel$state.copy( removeDeviceDialogState = it.copy(password = newText, removeEnabled = newText.text.isNotEmpty()), error = RemoveDeviceError.None ) + MultiLineIfElse:ScalaServerConfigDAO.kt$ScalaServerConfigDAO$ServerConfig.Links(apiBaseUrl, accountsBaseUrl, webSocketBaseUrl, blackListUrl, teamsUrl, websiteUrl, title, false, null) + MultiLineIfElse:ScalaServerConfigDAO.kt$ScalaServerConfigDAO$null + MultiLineIfElse:SearchAllPeopleScreen.kt$searchResult + MultiLineIfElse:SearchAllPeopleScreen.kt$searchResult.take( DEFAULT_SEARCH_RESULT_ITEM_SIZE ) + MultiLineIfElse:SelfDeletionMenuItems.kt$RichMenuItemState.DEFAULT + MultiLineIfElse:SelfDeletionMenuItems.kt$RichMenuItemState.SELECTED + MultiLineIfElse:ServiceDetailsViewModel.kt$ServiceDetailsViewModel$serviceNotFound() + MultiLineIfElse:SettingsScreen.kt$homeStateHolder.navigator.navigate(NavigationCommand(SetLockCodeScreenDestination, BackStackMode.NONE)) + MultiLineIfElse:SettingsScreen.kt$turnAppLockOffDialogState.show(Unit) + MultiLineIfElse:ShouldStartPersistentWebSocketServiceUseCase.kt$ShouldStartPersistentWebSocketServiceUseCase$Result.Success(false) + MultiLineIfElse:ShouldStartPersistentWebSocketServiceUseCase.kt$ShouldStartPersistentWebSocketServiceUseCase$Result.Success(true) + MultiLineIfElse:SpeakerButton.kt$R.drawable.ic_speaker_off + MultiLineIfElse:SpeakerButton.kt$R.drawable.ic_speaker_on + MultiLineIfElse:SpeakerButton.kt$R.string.content_description_calling_turn_speaker_off + MultiLineIfElse:SpeakerButton.kt$R.string.content_description_calling_turn_speaker_on + MultiLineIfElse:StyledStringUtil.kt$append(text) + MultiLineIfElse:StyledStringUtil.kt$bold { append(text) } + MultiLineIfElse:SystemMessageContentMapper.kt$SystemMessageContentMapper$others(members.map { mapMemberName(user = userList.findUser(userId = it), type = SelfNameType.ResourceLowercase) }) + MultiLineIfElse:SystemMessageContentMapper.kt$SystemMessageContentMapper$self() + MultiLineIfElse:SystemMessageItem.kt$dimensions().systemMessageIconLargeSize + MultiLineIfElse:SystemMessageItem.kt$dimensions().systemMessageIconSize + MultiLineIfElse:Theme.kt$arrayOf( LocalSnackbarHostState provides remember { SnackbarHostState() }, LocalNavigator provides rememberNavigator {}) + MultiLineIfElse:Theme.kt$emptyArray() + MultiLineIfElse:UIMessage.kt$UIMessageContent.SystemMessage.ConversationDegraded$R.drawable.ic_conversation_degraded_mls + MultiLineIfElse:UIMessage.kt$UIMessageContent.SystemMessage.ConversationDegraded$R.drawable.ic_shield_holo + MultiLineIfElse:UIMessage.kt$UIMessageContent.SystemMessage.ConversationDegraded$R.string.label_system_message_conversation_degraded_mls + MultiLineIfElse:UIMessage.kt$UIMessageContent.SystemMessage.ConversationDegraded$R.string.label_system_message_conversation_degraded_proteus + MultiLineIfElse:UIMessage.kt$UIMessageContent.SystemMessage.ConversationVerified$R.drawable.ic_certificate_valid_mls + MultiLineIfElse:UIMessage.kt$UIMessageContent.SystemMessage.ConversationVerified$R.drawable.ic_certificate_valid_proteus + MultiLineIfElse:UIMessage.kt$UIMessageContent.SystemMessage.ConversationVerified$R.string.label_system_message_conversation_verified_mls + MultiLineIfElse:UIMessage.kt$UIMessageContent.SystemMessage.ConversationVerified$R.string.label_system_message_conversation_verified_proteus + MultiLineIfElse:UnblockUserDialogs.kt$WireButtonState.Default + MultiLineIfElse:UnblockUserDialogs.kt$WireButtonState.Disabled + MultiLineIfElse:UpdateE2eiCertificateButton.kt$WireButtonState.Default + MultiLineIfElse:UpdateE2eiCertificateButton.kt$WireButtonState.Disabled + MultiLineIfElse:UserProfileAvatar.kt$ColorPainter(Color.Transparent) + MultiLineIfElse:UserProfileAvatar.kt$getDefaultAvatar(membership = data.membership) + MultiLineIfElse:UserProfileAvatar.kt$it + MultiLineIfElse:UserProfileAvatar.kt$it .clip(CircleShape) .clickable(clickable) + MultiLineIfElse:UserProfileInfo.kt$"" + MultiLineIfElse:UserProfileInfo.kt$MaterialTheme.colorScheme.onBackground + MultiLineIfElse:UserProfileInfo.kt$MaterialTheme.wireColorScheme.labelText + MultiLineIfElse:UserProfileInfo.kt$UIText.StringResource(R.string.username_unavailable_label).asString() + MultiLineIfElse:UsernameTextField.kt$WireTextFieldState.Default + MultiLineIfElse:UsernameTextField.kt$when (errorState) { HandleUpdateErrorState.TextFieldError.UsernameTakenError -> WireTextFieldState.Error(stringResource(id = R.string.create_account_username_taken_error)) HandleUpdateErrorState.TextFieldError.UsernameInvalidError -> WireTextFieldState.Error(stringResource(id = R.string.create_account_username_description)) } + MultiLineIfElse:VerificationCode.kt$WireTextFieldState.Default + MultiLineIfElse:VerificationCode.kt$WireTextFieldState.Error( stringResource(id = R.string.second_factor_code_error) ) + MultiLineIfElse:WelcomeScreen.kt$pageState.animateScrollToPage(scrollToPage) + MultiLineIfElse:WelcomeScreen.kt$pageState.scrollToPage(scrollToPage) + MultiLineIfElse:WireActivityDialogs.kt$R.string.team_app_lock_disabled + MultiLineIfElse:WireActivityDialogs.kt$R.string.team_app_lock_enabled + MultiLineIfElse:WireActivityViewModel.kt$WireActivityViewModel$flowOf(NewClientResult.Empty) + MultiLineIfElse:WireActivityViewModel.kt$WireActivityViewModel$observeNewClients() + MultiLineIfElse:WireButton.kt$BorderStroke( width = borderWidth, color = colors.outlineColor(state, interactionSource).value ) + MultiLineIfElse:WireButton.kt$it.fillMaxWidth() + MultiLineIfElse:WireButton.kt$it.wrapContentWidth() + MultiLineIfElse:WireButton.kt$null + MultiLineIfElse:WireDropDown.kt$MaterialTheme.wireColorScheme.onSecondaryButtonEnabled + MultiLineIfElse:WireDropDown.kt$MaterialTheme.wireColorScheme.onSecondaryButtonSelected + MultiLineIfElse:WireDropDown.kt$MaterialTheme.wireColorScheme.secondaryButtonSelected + MultiLineIfElse:WireDropDown.kt$MaterialTheme.wireColorScheme.secondaryText + MultiLineIfElse:WireDropDown.kt$MaterialTheme.wireColorScheme.tertiaryButtonEnabled + MultiLineIfElse:WireDropDown.kt$stringResource(R.string.wire_dropdown_placeholder) + MultiLineIfElse:WireNotificationManager.kt$WireNotificationManager$servicesManager.startOngoingCallService() + MultiLineIfElse:WireNotificationManager.kt$WireNotificationManager$servicesManager.stopOngoingCallService() + MultiLineIfElse:WirePasswordTextField.kt$R.string.content_description_hide_password + MultiLineIfElse:WirePasswordTextField.kt$R.string.content_description_reveal_password + MultiLineIfElse:WireTextField.kt$it + MultiLineIfElse:WriteStorageRequestFlow.kt$onGranted() + NoBlankLineBeforeRbrace:CreateAccountEmailViewState.kt$CreateAccountEmailViewState$ + NoBlankLineBeforeRbrace:EmailComposer.kt$EmailComposer$ + NoBlankLineBeforeRbrace:FakeKaliumFileSystem.kt$FakeKaliumFileSystem$ + NoBlankLineBeforeRbrace:ISOFormatter.kt$ISOFormatter$ + NoBlankLineBeforeRbrace:LastConversationEvent.kt$ConversationLastEvent$ + NoBlankLineBeforeRbrace:ObserveConversationMembersByTypesUseCase.kt$ObserveConversationMembersByTypesUseCase$ + NoBlankLineBeforeRbrace:ObserveConversationMembersByTypesUseCaseTest.kt$ObserveConversationMembersByTypesUseCaseTest$ + NoBlankLineBeforeRbrace:OtherUserBottomSheetState.kt$OtherUserBottomSheetState$ + NoBlankLineBeforeRbrace:RemoveConversationMemberDialog.kt$ + NoBlankLineBeforeRbrace:ScreenStateObserverTest.kt$ScreenStateObserverTest$ + NoBlankLineBeforeRbrace:ScreenStateObserverTest.kt$ScreenStateObserverTest.Arrangement$ + NoBlankLineBeforeRbrace:SearchPeopleScreenState.kt$SearchPeopleScreenState$ + NoBlankLineBeforeRbrace:UserDataStore.kt$UserDataStore$ + NoBlankLineBeforeRbrace:UserTypeMapper.kt$UserTypeMapper$ + NoBlankLineBeforeRbrace:UserTypeMapperTest.kt$UserTypeMapperTest$ + NoBlankLineBeforeRbrace:VerticalSpace.kt$VerticalSpace$ + NoConsecutiveBlankLines:CallRinger.kt$CallRinger$ + NoConsecutiveBlankLines:ConversationsNavigationItem.kt$ + NoConsecutiveBlankLines:CoroutineScope.kt$ + NoConsecutiveBlankLines:LastConversationEvent.kt$ + NoConsecutiveBlankLines:LaunchedEffects.kt$ + NoConsecutiveBlankLines:OtherAccount.kt$ + NoConsecutiveBlankLines:ScalaServerConfigDAOTest.kt$ + NoConsecutiveBlankLines:ScalaServerConfigDAOTest.kt$ScalaServerConfigDAOTest.Arrangement$ + NoConsecutiveBlankLines:ScreenStateObserver.kt$ + NoConsecutiveBlankLines:SearchPeopleScreenState.kt$ + NoConsecutiveBlankLines:SearchTopBar.kt$ + NoConsecutiveBlankLines:SurfaceBackgroundWrapper.kt$ + NoConsecutiveBlankLines:WireTextFieldDefaults.kt$ + NoMultipleSpaces:ApiVersioningDialogs.kt$ + NoMultipleSpaces:ShakeAnimation.kt$ + NoMultipleSpaces:ThemeUtils.kt$ScreenSizeDependent$ + NoSemicolons:AdditionalOptionMenuState.kt$AdditionalOptionSubMenuState.Gif$; + NoSemicolons:CallRinger.kt$CallRinger$; + NoSemicolons:CollapsingTopBarScaffold.kt$State.COLLAPSED$; + NoSemicolons:ConversationMediaScreen.kt$ConversationMediaScreenTabItem.FILES$; + NoSemicolons:ConversationRouter.kt$ConversationItemType.SEARCH$; + NoSemicolons:GroupConversationDetailsScreen.kt$GroupConversationDetailsTabItem.PARTICIPANTS$; + NoSemicolons:LastConversationEvent.kt$CallEvent.NoAnswerCall$; + NoSemicolons:LoginScreen.kt$LoginTabItem.SSO$; + NoSemicolons:NavigationCommand.kt$BackStackMode.NONE$; + NoSemicolons:OtherUserProfileScreen.kt$OtherUserProfileTabItem.DEVICES$; + NoSemicolons:SearchPeopleRouter.kt$SearchPeopleTabItem.SERVICES$; + NoSemicolons:WireDestinationStyleAnimated.kt$TransitionAnimationType.POP_UP$; + NoTrailingSpaces:AvatarPicker.kt$// TODO: Mateusz: I think we should refactor this, it takes some values from the ViewModel, part of the logic is executed inside + NoTrailingSpaces:ScalaServerConfigDAOTest.kt$ScalaServerConfigDAOTest$ + NoTrailingSpaces:ScalaServerConfigDAOTest.kt$ScalaServerConfigDAOTest.Arrangement$ + NoUnusedImports:ApiVersioningDialogs.kt$com.wire.android.ui.server.ApiVersioningDialogs.kt + NoUnusedImports:CreateAccountDetailsScreen.kt$import com.wire.android.ui.common.scaffold.WireScaffold + NoUnusedImports:SearchPeopleScreenState.kt$com.wire.android.ui.home.conversations.search.SearchPeopleScreenState.kt + NoUnusedImports:SpeakerButton.kt$com.wire.android.ui.calling.controlbuttons.SpeakerButton.kt + NoUnusedImports:WireTypography.kt$com.wire.android.ui.theme.WireTypography.kt + NoUnusedImports:ZoomableImage.kt$com.wire.android.ui.home.gallery.ZoomableImage.kt + ParameterListWrapping:WireButtonDefaults.kt$( enabled: Color, onEnabled: Color, enabledOutline: Color, disabled: Color, onDisabled: Color, disabledOutline: Color, selected: Color, onSelected: Color, selectedOutline: Color, error: Color, onError: Color, errorOutline: Color, positive: Color, onPositive: Color, positiveOutline: Color, ripple: Color ) + ParameterListWrapping:WireTypography.kt$WireTypography$( val title01: TextStyle, val title02: TextStyle, val title03: TextStyle, val title04: TextStyle, val body01: TextStyle, val body02: TextStyle, val body03: TextStyle, val body04: TextStyle, val body05: TextStyle, val button01: TextStyle, val button02: TextStyle, val button03: TextStyle, val button04: TextStyle, val button05: TextStyle, val label01: TextStyle, val label02: TextStyle, val label03: TextStyle, val label04: TextStyle, val label05: TextStyle, val badge01: TextStyle, val subline01: TextStyle, val code01: TextStyle ) + ParameterWrapping:ConversationScreen.kt$groupDetailsScreenResultRecipient: ResultRecipient<GroupConversationDetailsScreenDestination, GroupConversationDetailsNavBackArgs> + ParameterWrapping:CurrentLocationRequestFlow.kt$CurrentLocationRequestFlow$private val locationPermissionLauncher: ManagedActivityResultLauncher<Array<String>, Map<String, @JvmSuppressWildcards Boolean>> + ParameterWrapping:GroupConversationOptionsItem.kt$clickable: Clickable = Clickable(enabled = false, onClick = { /* not handled */ }, onLongClick = { /* not handled */ }) + ParameterWrapping:HomeScreen.kt$groupDetailsScreenResultRecipient: ResultRecipient<ConversationScreenDestination, GroupConversationDetailsNavBackArgs> + ParameterWrapping:HomeStateHolder.kt$navController: NavHostController = rememberTrackingAnimatedNavController() { HomeDestination.fromRoute(it)?.itemName } + ParameterWrapping:RecordAudioRequestFlow.kt$RecordAudioRequestFlow$private val audioRecordPermissionLauncher: ManagedActivityResultLauncher<Array<String>, Map<String, @JvmSuppressWildcards Boolean>> + ParameterWrapping:UseCameraAndWriteStorageRequestFlow.kt$UseCameraAndWriteStorageRequestFlow$private val cameraPermissionLauncher: ManagedActivityResultLauncher<Array<String>, Map<String, @JvmSuppressWildcards Boolean>> + ParameterWrapping:UsersTypingIndicator.kt$viewModel: TypingIndicatorViewModel = hiltViewModelScoped<TypingIndicatorViewModelImpl, TypingIndicatorViewModel, TypingIndicatorArgs>( TypingIndicatorArgs(conversationId) ) + ParameterWrapping:WireActivityViewModel.kt$WireActivityViewModel$private val observeIfE2EIRequiredDuringLoginUseCaseProviderFactory: ObserveIfE2EIRequiredDuringLoginUseCaseProvider.Factory + ParameterWrapping:WireActivityViewModel.kt$WireActivityViewModel$private val observeScreenshotCensoringConfigUseCaseProviderFactory: ObserveScreenshotCensoringConfigUseCaseProvider.Factory + ParameterWrapping:WireItemLabel.kt$contentPadding: PaddingValues = PaddingValues(horizontal = dimensions().spacing6x, vertical = dimensions().spacing2x) + ParameterWrapping:WireTextField.kt$keyboardOptions: KeyboardOptions = KeyboardOptions(capitalization = KeyboardCapitalization.Sentences, autoCorrect = true) + PropertyWrapping:CaptureVideoRequestFlow.kt$val requestVideoPermissionLauncher: ManagedActivityResultLauncher<Array<String>, Map<String, @JvmSuppressWildcards Boolean>> = rememberLauncherForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { areGranted -> if (areGranted.all { it.value }) { captureVideoLauncher.launch(targetVideoFileUri) } else { context.getActivity()?.let { it.checkCameraWithStoragePermission(onPermissionDenied) { onPermissionPermanentlyDenied( PermissionDenialType.CaptureVideo ) } } } } + PropertyWrapping:ConversationMediaScreen.kt$val pagerState = rememberPagerState(initialPage = initialPageIndex, pageCount = { ConversationMediaScreenTabItem.entries.size }) + PropertyWrapping:CurrentLocationRequestFlow.kt$val requestPermissionLauncher: ManagedActivityResultLauncher<Array<String>, Map<String, @JvmSuppressWildcards Boolean>> = rememberLauncherForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions -> val allPermissionGranted = permissions.all { it.value } if (allPermissionGranted) { onPermissionAllowed() } else { context.getActivity()?.let { if (it.shouldShowRequestPermissionRationale(android.Manifest.permission.ACCESS_FINE_LOCATION) || it.shouldShowRequestPermissionRationale(android.Manifest.permission.ACCESS_COARSE_LOCATION) ) { onPermissionDenied() } else { onPermissionPermanentlyDenied() } } } } + PropertyWrapping:EditSelfDeletingMessagesViewModelTest.kt$EditSelfDeletingMessagesViewModelTest.Arrangement$@MockK private lateinit var observeSelfDeletionTimerSettingsForConversation: ObserveSelfDeletionTimerSettingsForConversationUseCase + PropertyWrapping:EnterLockScreenViewModel.kt$EnterLockScreenViewModel$val storedPasscode = withContext(dispatchers.io()) { globalDataStore.getAppLockPasscodeFlow().firstOrNull() } + PropertyWrapping:GroupConversationDetailsScreen.kt$val pagerState = rememberPagerState(initialPage = initialPageIndex, pageCount = { GroupConversationDetailsTabItem.entries.size }) + PropertyWrapping:GroupConversationDetailsScreen.kt$val showSnackbarMessage: (UIText) -> Unit = remember { { scope.launch { snackbarHostState.showSnackbar(it.asString(resources)) } } } + PropertyWrapping:GroupConversationDetailsViewModelTest.kt$GroupConversationDetailsViewModelArrangement$private val observeParticipantsForConversationChannel = Channel<ConversationParticipantsData>(capacity = Channel.UNLIMITED) + PropertyWrapping:HomeScreen.kt$val maxWidth = min(this.maxWidth - dimensions().homeDrawerSheetEndPadding, DrawerDefaults.MaximumDrawerWidth) + PropertyWrapping:MessageComposerViewModelArrangement.kt$MessageComposerViewModelArrangement$@MockK private lateinit var observeConversationInteractionAvailabilityUseCase: ObserveConversationInteractionAvailabilityUseCase + PropertyWrapping:MessagePreviewContentMapperTest.kt$MessagePreviewContentMapperTest$val unreadEventCount = mapOf(UnreadEventType.MENTION to mentionCount, UnreadEventType.MISSED_CALL to missedCallCount) + PropertyWrapping:NavigationGraph.kt$val parentEntry = remember(navBackStackEntry) { navController.getBackStackEntry(NavGraphs.newConversation.route) } + PropertyWrapping:ObserveParticipantsForConversationUseCaseTest.kt$ObserveParticipantsForConversationUseCaseTest$val memberNotUnderLegalHold = MemberDetails(testOtherUser(1).copy(userType = UserType.INTERNAL), Member.Role.Member) + PropertyWrapping:ObserveParticipantsForConversationUseCaseTest.kt$ObserveParticipantsForConversationUseCaseTest$val memberUnderLegalHold = MemberDetails(testOtherUser(0).copy(userType = UserType.INTERNAL), Member.Role.Member) + PropertyWrapping:RecordAudioRequestFlow.kt$val requestPermissionLauncher: ManagedActivityResultLauncher<Array<String>, Map<String, @JvmSuppressWildcards Boolean>> = rememberLauncherForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions -> val allPermissionGranted = permissions.all { it.value } if (allPermissionGranted) { onPermissionAllowed() } else { context.getActivity()?.let { if (it.shouldShowRequestPermissionRationale(android.Manifest.permission.RECORD_AUDIO) || (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU && it.shouldShowRequestPermissionRationale( android.Manifest.permission.READ_EXTERNAL_STORAGE )) ) { onPermissionDenied() } else { onAudioPermissionPermanentlyDenied() } } } } + PropertyWrapping:WelcomeScreen.kt$val createPersonalAccountDisabledWithProxyDialogState = rememberVisibilityState<FeatureDisabledWithProxyDialogState>() + PropertyWrapping:WireActivityViewModelTest.kt$WireActivityViewModelTest.Arrangement$@MockK private lateinit var observeIfE2EIRequiredDuringLoginUseCaseProviderFactory: ObserveIfE2EIRequiredDuringLoginUseCaseProvider.Factory + PropertyWrapping:WireActivityViewModelTest.kt$WireActivityViewModelTest.Arrangement$@MockK private lateinit var observeScreenshotCensoringConfigUseCaseProviderFactory: ObserveScreenshotCensoringConfigUseCaseProvider.Factory + SpacingAroundColon:CreateAccountCodeViewState.kt$CreateAccountCodeViewState.CodeError.DialogError.UserAlreadyExists$: + SpacingAroundColon:LastConversationEvent.kt$ConversationLastEvent.Mention$: + SpacingAroundColon:LoginError.kt$LoginError.DialogError.ClientUpdateRequired$: + SpacingAroundColon:LoginError.kt$LoginError.DialogError.ServerVersionNotSupported$: + SpacingAroundColon:SyncStateObserver.kt$SyncStateObserver$: + SpacingAroundColon:VisibilityState.kt$: + SpacingAroundColon:VisibilityState.kt$VisibilityState$: + SpacingAroundColon:VisibilityState.kt$VisibilityState.Companion$: + SpacingAroundColon:WireForegroundNotificationDetailsProvider.kt$WireForegroundNotificationDetailsProvider$: + SpacingAroundCurly:ObserveConversationMembersByTypesUseCase.kt$ObserveConversationMembersByTypesUseCase${ + SpacingAroundCurly:ObserveConversationMembersByTypesUseCase.kt$ObserveConversationMembersByTypesUseCase$} + SpacingAroundKeyword:CodeTextField.kt$<no name provided>$if + SpacingAroundKeyword:MigrateServerConfigUseCase.kt$MigrateServerConfigUseCase$when + SpacingAroundOperators:VisibilityState.kt$VisibilityState.Companion$= + SpacingAroundParens:SelfDevicesState.kt$SelfDevicesState$( + SpacingBetweenDeclarationsWithAnnotations:CallNotificationManager.kt$CallNotificationManager.Companion$@VisibleForTesting internal const val DEBOUNCE_TIME = 200L + SpacingBetweenDeclarationsWithAnnotations:CreateGroupErrorDialog.kt$@PreviewMultipleThemes @Composable private fun PreviewCreateGroupErrorDialogConflictedBackends() + SpacingBetweenDeclarationsWithAnnotations:CreateGroupErrorDialog.kt$@PreviewMultipleThemes @Composable private fun PreviewCreateGroupErrorDialogUnknown() + SpacingBetweenDeclarationsWithAnnotations:CustomTabsHelper.kt$CustomTabsHelper$@JvmStatic fun launchUri(context: Context, uri: Uri) + SpacingBetweenDeclarationsWithAnnotations:Dialogs.kt$@Composable fun DisableGuestConfirmationDialog(onConfirm: () -> Unit, onDialogDismiss: () -> Unit) + SpacingBetweenDeclarationsWithAnnotations:ForgotLockScreenViewModelTest.kt$ForgotLockScreenViewModelTest$@Test fun `given deleting client returns failure, when deleting current client, then return failure`() + SpacingBetweenDeclarationsWithAnnotations:ForgotLockScreenViewModelTest.kt$ForgotLockScreenViewModelTest$@Test fun `given deleting client returns invalid credentials, when deleting current client, then return InvalidPassword`() + SpacingBetweenDeclarationsWithAnnotations:ForgotLockScreenViewModelTest.kt$ForgotLockScreenViewModelTest$@Test fun `given deleting client returns success, when deleting current client, then return Success`() + SpacingBetweenDeclarationsWithAnnotations:ForgotLockScreenViewModelTest.kt$ForgotLockScreenViewModelTest$@Test fun `given no sessions, when logging out, then make all required actions other than logout and return success`() + SpacingBetweenDeclarationsWithAnnotations:ForgotLockScreenViewModelTest.kt$ForgotLockScreenViewModelTest$@Test fun `given no valid sessions, when logging out, then make all required actions other than logout and return success`() + SpacingBetweenDeclarationsWithAnnotations:ForgotLockScreenViewModelTest.kt$ForgotLockScreenViewModelTest$@Test fun `given password required and valid, when validating password, then return Success with given password`() + SpacingBetweenDeclarationsWithAnnotations:ForgotLockScreenViewModelTest.kt$ForgotLockScreenViewModelTest$@Test fun `given password required but invalid, when validating password, then return InvalidPassword`() + SpacingBetweenDeclarationsWithAnnotations:ForgotLockScreenViewModelTest.kt$ForgotLockScreenViewModelTest$@Test fun `given password required but not provided, when validating password, then return PasswordRequired`() + SpacingBetweenDeclarationsWithAnnotations:ForgotLockScreenViewModelTest.kt$ForgotLockScreenViewModelTest$@Test fun `given password required returns failure, when validating password, then return failure`() + SpacingBetweenDeclarationsWithAnnotations:ForgotLockScreenViewModelTest.kt$ForgotLockScreenViewModelTest$@Test fun `given sessions return failure, when hard-logging out sessions, then return failure`() + SpacingBetweenDeclarationsWithAnnotations:ForgotLockScreenViewModelTest.kt$ForgotLockScreenViewModelTest$@Test fun `given valid sessions, when logging out, then make all required actions with logout and return success`() + SpacingBetweenDeclarationsWithAnnotations:ForgotLockScreenViewModelTest.kt$ForgotLockScreenViewModelTest.Arrangement$@MockK lateinit var accountSwitchUseCase: AccountSwitchUseCase + SpacingBetweenDeclarationsWithAnnotations:ForgotLockScreenViewModelTest.kt$ForgotLockScreenViewModelTest.Arrangement$@MockK lateinit var deleteClientUseCase: DeleteClientUseCase + SpacingBetweenDeclarationsWithAnnotations:ForgotLockScreenViewModelTest.kt$ForgotLockScreenViewModelTest.Arrangement$@MockK lateinit var endCallUseCase: EndCallUseCase + SpacingBetweenDeclarationsWithAnnotations:ForgotLockScreenViewModelTest.kt$ForgotLockScreenViewModelTest.Arrangement$@MockK lateinit var getSelfUserUseCase: GetSelfUserUseCase + SpacingBetweenDeclarationsWithAnnotations:ForgotLockScreenViewModelTest.kt$ForgotLockScreenViewModelTest.Arrangement$@MockK lateinit var getSessionsUseCase: GetSessionsUseCase + SpacingBetweenDeclarationsWithAnnotations:ForgotLockScreenViewModelTest.kt$ForgotLockScreenViewModelTest.Arrangement$@MockK lateinit var globalDataStore: GlobalDataStore + SpacingBetweenDeclarationsWithAnnotations:ForgotLockScreenViewModelTest.kt$ForgotLockScreenViewModelTest.Arrangement$@MockK lateinit var isPasswordRequiredUseCase: IsPasswordRequiredUseCase + SpacingBetweenDeclarationsWithAnnotations:ForgotLockScreenViewModelTest.kt$ForgotLockScreenViewModelTest.Arrangement$@MockK lateinit var logoutUseCase: LogoutUseCase + SpacingBetweenDeclarationsWithAnnotations:ForgotLockScreenViewModelTest.kt$ForgotLockScreenViewModelTest.Arrangement$@MockK lateinit var notificationChannelsManager: NotificationChannelsManager + SpacingBetweenDeclarationsWithAnnotations:ForgotLockScreenViewModelTest.kt$ForgotLockScreenViewModelTest.Arrangement$@MockK lateinit var notificationManager: WireNotificationManager + SpacingBetweenDeclarationsWithAnnotations:ForgotLockScreenViewModelTest.kt$ForgotLockScreenViewModelTest.Arrangement$@MockK lateinit var observeCurrentClientIdUseCase: ObserveCurrentClientIdUseCase + SpacingBetweenDeclarationsWithAnnotations:ForgotLockScreenViewModelTest.kt$ForgotLockScreenViewModelTest.Arrangement$@MockK lateinit var observeEstablishedCallsUseCase: ObserveEstablishedCallsUseCase + SpacingBetweenDeclarationsWithAnnotations:ForgotLockScreenViewModelTest.kt$ForgotLockScreenViewModelTest.Arrangement$@MockK lateinit var userDataStore: UserDataStore + SpacingBetweenDeclarationsWithAnnotations:ForgotLockScreenViewModelTest.kt$ForgotLockScreenViewModelTest.Arrangement$@MockK lateinit var userDataStoreProvider: UserDataStoreProvider + SpacingBetweenDeclarationsWithAnnotations:ForgotLockScreenViewModelTest.kt$ForgotLockScreenViewModelTest.Arrangement$@MockK lateinit var userSessionScope: UserSessionScope + SpacingBetweenDeclarationsWithAnnotations:ForgotLockScreenViewModelTest.kt$ForgotLockScreenViewModelTest.Arrangement$@MockK lateinit var validatePasswordUseCase: ValidatePasswordUseCase + SpacingBetweenDeclarationsWithAnnotations:GroupConversationDetailsViewModelTest.kt$GroupConversationDetailsViewModelTest$@Test fun `given user is admin and internal team member, when init group options, then group name update is allowed`() + SpacingBetweenDeclarationsWithAnnotations:GroupConversationDetailsViewModelTest.kt$GroupConversationDetailsViewModelTest$@Test fun `given user is admin and member of group owner team, when init group options, then guests update is allowed`() + SpacingBetweenDeclarationsWithAnnotations:GroupConversationDetailsViewModelTest.kt$GroupConversationDetailsViewModelTest$@Test fun `given user is admin and not member of group owner team, when init group options, then guests update is not allowed`() + SpacingBetweenDeclarationsWithAnnotations:GroupConversationDetailsViewModelTest.kt$GroupConversationDetailsViewModelTest$@Test fun `given user is admin and not team group, when init group options, then read receipts update is not allowed`() + SpacingBetweenDeclarationsWithAnnotations:GroupConversationDetailsViewModelTest.kt$GroupConversationDetailsViewModelTest$@Test fun `given user is admin and team group, when init group options, then read receipts update is allowed`() + SpacingBetweenDeclarationsWithAnnotations:GroupConversationDetailsViewModelTest.kt$GroupConversationDetailsViewModelTest$@Test fun `given user is admin, when init group options, then self deleting update is allowed`() + SpacingBetweenDeclarationsWithAnnotations:GroupConversationDetailsViewModelTest.kt$GroupConversationDetailsViewModelTest$@Test fun `given user is admin, when init group options, then services update is allowed`() + SpacingBetweenDeclarationsWithAnnotations:GroupConversationDetailsViewModelTest.kt$GroupConversationDetailsViewModelTest$@Test fun `given user is not admin and external team member, when init group options, then group name update is not allowed`() + SpacingBetweenDeclarationsWithAnnotations:GroupConversationDetailsViewModelTest.kt$GroupConversationDetailsViewModelTest$@Test fun `given user is not admin and internal team member, when init group options, then group name update is not allowed`() + SpacingBetweenDeclarationsWithAnnotations:GroupConversationDetailsViewModelTest.kt$GroupConversationDetailsViewModelTest$@Test fun `given user is not admin and member of group owner team, when init group options, then guests update is not allowed`() + SpacingBetweenDeclarationsWithAnnotations:GroupConversationDetailsViewModelTest.kt$GroupConversationDetailsViewModelTest$@Test fun `given user is not admin and not member of group owner team, when init group options, then guests update is not allowed`() + SpacingBetweenDeclarationsWithAnnotations:GroupConversationDetailsViewModelTest.kt$GroupConversationDetailsViewModelTest$@Test fun `given user is not admin and not team group, when init group options, then read receipts update is not allowed`() + SpacingBetweenDeclarationsWithAnnotations:GroupConversationDetailsViewModelTest.kt$GroupConversationDetailsViewModelTest$@Test fun `given user is not admin and team group, when init group options, then read receipts update is not allowed`() + SpacingBetweenDeclarationsWithAnnotations:GroupConversationDetailsViewModelTest.kt$GroupConversationDetailsViewModelTest$@Test fun `given user is not admin, when init group options, then self deleting update is not allowed`() + SpacingBetweenDeclarationsWithAnnotations:GroupConversationDetailsViewModelTest.kt$GroupConversationDetailsViewModelTest$@Test fun `given user is not admin, when init group options, then services update is not allowed`() + SpacingBetweenDeclarationsWithAnnotations:HomeViewModelTest.kt$HomeViewModelTest$@Test fun `given legal hold disabled and no request available, then shouldDisplayLegalHoldIndicator is false`() + SpacingBetweenDeclarationsWithAnnotations:HomeViewModelTest.kt$HomeViewModelTest$@Test fun `given legal hold enabled, then shouldDisplayLegalHoldIndicator is true`() + SpacingBetweenDeclarationsWithAnnotations:HomeViewModelTest.kt$HomeViewModelTest$@Test fun `given legal hold enabled, when user status changes, then shouldDisplayLegalHoldIndicator should keep the same`() + SpacingBetweenDeclarationsWithAnnotations:HomeViewModelTest.kt$HomeViewModelTest.Arrangement$@MockK lateinit var getSelf: GetSelfUserUseCase + SpacingBetweenDeclarationsWithAnnotations:HomeViewModelTest.kt$HomeViewModelTest.Arrangement$@MockK lateinit var globalDataStore: GlobalDataStore + SpacingBetweenDeclarationsWithAnnotations:HomeViewModelTest.kt$HomeViewModelTest.Arrangement$@MockK lateinit var needsToRegisterClient: NeedsToRegisterClientUseCase + SpacingBetweenDeclarationsWithAnnotations:HomeViewModelTest.kt$HomeViewModelTest.Arrangement$@MockK lateinit var observeLegalHoldStatusForSelfUser: ObserveLegalHoldStateForSelfUserUseCase + SpacingBetweenDeclarationsWithAnnotations:HomeViewModelTest.kt$HomeViewModelTest.Arrangement$@MockK lateinit var shouldTriggerMigrationForUser: ShouldTriggerMigrationForUserUserCase + SpacingBetweenDeclarationsWithAnnotations:HomeViewModelTest.kt$HomeViewModelTest.Arrangement$@MockK lateinit var wireSessionImageLoader: WireSessionImageLoader + SpacingBetweenDeclarationsWithAnnotations:InitialSyncViewModelTest.kt$InitialSyncViewModelTest.Arrangement$@MockK lateinit var observeSyncState: ObserveSyncStateUseCase + SpacingBetweenDeclarationsWithAnnotations:InitialSyncViewModelTest.kt$InitialSyncViewModelTest.Arrangement$@MockK lateinit var userDataStore: UserDataStore + SpacingBetweenDeclarationsWithAnnotations:InitialSyncViewModelTest.kt$InitialSyncViewModelTest.Arrangement$@MockK lateinit var userDataStoreProvider: UserDataStoreProvider + SpacingBetweenDeclarationsWithAnnotations:InternalContactSearchResultItem.kt$@PreviewMultipleThemes @Composable fun PreviewInternalContactSearchResultItemClickable() + SpacingBetweenDeclarationsWithAnnotations:LegalHoldDeactivatedViewModelTest.kt$LegalHoldDeactivatedViewModelTest$@Test fun givenAlreadyNotified_whenGettingState_thenStateShouldBeHidden() + SpacingBetweenDeclarationsWithAnnotations:LegalHoldDeactivatedViewModelTest.kt$LegalHoldDeactivatedViewModelTest$@Test fun givenLegalHoldRequestReturnsFailure_whenGettingState_thenStateShouldBeHidden() + SpacingBetweenDeclarationsWithAnnotations:LegalHoldDeactivatedViewModelTest.kt$LegalHoldDeactivatedViewModelTest$@Test fun givenSessionReturnsFailure_whenGettingState_thenStateShouldBeHidden() + SpacingBetweenDeclarationsWithAnnotations:LegalHoldDeactivatedViewModelTest.kt$LegalHoldDeactivatedViewModelTest$@Test fun givenShouldNotify_whenDismissing_thenStateShouldBeChangedToHidden() + SpacingBetweenDeclarationsWithAnnotations:LegalHoldDeactivatedViewModelTest.kt$LegalHoldDeactivatedViewModelTest$@Test fun givenShouldNotify_whenGettingState_thenStateShouldBeVisible() + SpacingBetweenDeclarationsWithAnnotations:LegalHoldSubjectProfileDialog.kt$@Composable @PreviewMultipleThemes fun PreviewLegalHoldSubjectProfileSelfDialog() + SpacingBetweenDeclarationsWithAnnotations:LegalHoldSubjectProfileDialog.kt$@Composable fun LegalHoldSubjectProfileSelfDialog(dialogDismissed: () -> Unit) + SpacingBetweenDeclarationsWithAnnotations:MigrateClientsDataUseCaseTest.kt$MigrateClientsDataUseCaseTest.Arrangement$@MockK lateinit var scalaCryptoBoxDirectoryProvider: ScalaCryptoBoxDirectoryProvider + SpacingBetweenDeclarationsWithAnnotations:MigrateClientsDataUseCaseTest.kt$MigrateClientsDataUseCaseTest.Arrangement$@MockK lateinit var scalaUserDAO: ScalaUserDAO + SpacingBetweenDeclarationsWithAnnotations:MigrateClientsDataUseCaseTest.kt$MigrateClientsDataUseCaseTest.Arrangement$@MockK lateinit var scalaUserDBProvider: ScalaUserDatabaseProvider + SpacingBetweenDeclarationsWithAnnotations:MigrateClientsDataUseCaseTest.kt$MigrateClientsDataUseCaseTest.Arrangement$@MockK lateinit var userDataStoreProvider: UserDataStoreProvider + SpacingBetweenDeclarationsWithAnnotations:NewConversationViewModelTest.kt$NewConversationViewModelTest$@Test fun `given self is internal team member, when creating group, then creating group should be allowed`() + SpacingBetweenDeclarationsWithAnnotations:ScalaBackendPreferences.kt$ScalaBackendPreferences.Companion$@VisibleForTesting const val ACCOUNTS_URL_PREF = "CUSTOM_BACKEND_ACCOUNTS_URL" + SpacingBetweenDeclarationsWithAnnotations:ScalaBackendPreferences.kt$ScalaBackendPreferences.Companion$@VisibleForTesting const val API_VERSION_INFORMATION = "API_VERSION_INFORMATION" + SpacingBetweenDeclarationsWithAnnotations:ScalaBackendPreferences.kt$ScalaBackendPreferences.Companion$@VisibleForTesting const val BASE_URL_PREF = "CUSTOM_BACKEND_BASE_URL" + SpacingBetweenDeclarationsWithAnnotations:ScalaBackendPreferences.kt$ScalaBackendPreferences.Companion$@VisibleForTesting const val BLACKLIST_HOST_PREF = "CUSTOM_BACKEND_BLACKLIST_HOST" + SpacingBetweenDeclarationsWithAnnotations:ScalaBackendPreferences.kt$ScalaBackendPreferences.Companion$@VisibleForTesting const val CONFIG_URL_PREF = "CUSTOM_BACKEND_CONFIG_URL" + SpacingBetweenDeclarationsWithAnnotations:ScalaBackendPreferences.kt$ScalaBackendPreferences.Companion$@VisibleForTesting const val TEAMS_URL_PREF = "CUSTOM_BACKEND_TEAMS_URL" + SpacingBetweenDeclarationsWithAnnotations:ScalaBackendPreferences.kt$ScalaBackendPreferences.Companion$@VisibleForTesting const val WEBSITE_URL_PREF = "CUSTOM_BACKEND_WEBSITE_URL" + SpacingBetweenDeclarationsWithAnnotations:ScalaBackendPreferences.kt$ScalaBackendPreferences.Companion$@VisibleForTesting const val WEBSOCKET_URL_PREF = "CUSTOM_BACKEND_WEBSOCKET_URL" + SpacingBetweenDeclarationsWithAnnotations:ScalaBackendPreferencesTest.kt$ScalaBackendPreferencesTest.Arrangement$@MockK lateinit var context: Context + SpacingBetweenDeclarationsWithAnnotations:SelfDevicesScreen.kt$@Suppress("LongParameterList") private fun LazyListScope.folderDeviceItems( header: String, items: List<Device>, shouldShowVerifyLabel: Boolean, isCurrentClient: Boolean, isE2EIEnabled: Boolean, onDeviceClick: (Device) -> Unit = {} ) + SpacingBetweenDeclarationsWithAnnotations:SelfUserProfileViewModelArrangement.kt$SelfUserProfileViewModelArrangement$@MockK lateinit var accountSwitch: AccountSwitchUseCase + SpacingBetweenDeclarationsWithAnnotations:SelfUserProfileViewModelArrangement.kt$SelfUserProfileViewModelArrangement$@MockK lateinit var authServerConfigProvider: AuthServerConfigProvider + SpacingBetweenDeclarationsWithAnnotations:SelfUserProfileViewModelArrangement.kt$SelfUserProfileViewModelArrangement$@MockK lateinit var dispatchers: DispatcherProvider + SpacingBetweenDeclarationsWithAnnotations:SelfUserProfileViewModelArrangement.kt$SelfUserProfileViewModelArrangement$@MockK lateinit var endCall: EndCallUseCase + SpacingBetweenDeclarationsWithAnnotations:SelfUserProfileViewModelArrangement.kt$SelfUserProfileViewModelArrangement$@MockK lateinit var getSelf: GetSelfUserUseCase + SpacingBetweenDeclarationsWithAnnotations:SelfUserProfileViewModelArrangement.kt$SelfUserProfileViewModelArrangement$@MockK lateinit var getSelfTeam: GetUpdatedSelfTeamUseCase + SpacingBetweenDeclarationsWithAnnotations:SelfUserProfileViewModelArrangement.kt$SelfUserProfileViewModelArrangement$@MockK lateinit var globalDataStore: GlobalDataStore + SpacingBetweenDeclarationsWithAnnotations:SelfUserProfileViewModelArrangement.kt$SelfUserProfileViewModelArrangement$@MockK lateinit var isReadOnlyAccount: IsReadOnlyAccountUseCase + SpacingBetweenDeclarationsWithAnnotations:SelfUserProfileViewModelArrangement.kt$SelfUserProfileViewModelArrangement$@MockK lateinit var logout: LogoutUseCase + SpacingBetweenDeclarationsWithAnnotations:SelfUserProfileViewModelArrangement.kt$SelfUserProfileViewModelArrangement$@MockK lateinit var notificationChannelsManager: NotificationChannelsManager + SpacingBetweenDeclarationsWithAnnotations:SelfUserProfileViewModelArrangement.kt$SelfUserProfileViewModelArrangement$@MockK lateinit var notificationManager: WireNotificationManager + SpacingBetweenDeclarationsWithAnnotations:SelfUserProfileViewModelArrangement.kt$SelfUserProfileViewModelArrangement$@MockK lateinit var observeEstablishedCalls: ObserveEstablishedCallsUseCase + SpacingBetweenDeclarationsWithAnnotations:SelfUserProfileViewModelArrangement.kt$SelfUserProfileViewModelArrangement$@MockK lateinit var observeLegalHoldStatusForSelfUser: ObserveLegalHoldStateForSelfUserUseCase + SpacingBetweenDeclarationsWithAnnotations:SelfUserProfileViewModelArrangement.kt$SelfUserProfileViewModelArrangement$@MockK lateinit var observeValidAccounts: ObserveValidAccountsUseCase + SpacingBetweenDeclarationsWithAnnotations:SelfUserProfileViewModelArrangement.kt$SelfUserProfileViewModelArrangement$@MockK lateinit var otherAccountMapper: OtherAccountMapper + SpacingBetweenDeclarationsWithAnnotations:SelfUserProfileViewModelArrangement.kt$SelfUserProfileViewModelArrangement$@MockK lateinit var qualifiedIdMapper: QualifiedIdMapper + SpacingBetweenDeclarationsWithAnnotations:SelfUserProfileViewModelArrangement.kt$SelfUserProfileViewModelArrangement$@MockK lateinit var selfServerLinks: SelfServerConfigUseCase + SpacingBetweenDeclarationsWithAnnotations:SelfUserProfileViewModelArrangement.kt$SelfUserProfileViewModelArrangement$@MockK lateinit var updateStatus: UpdateSelfAvailabilityStatusUseCase + SpacingBetweenDeclarationsWithAnnotations:SelfUserProfileViewModelArrangement.kt$SelfUserProfileViewModelArrangement$@MockK lateinit var wireSessionImageLoader: WireSessionImageLoader + SpacingBetweenDeclarationsWithAnnotations:UpdateReceiver.kt$UpdateReceiver$@Inject lateinit var migrationManager: MigrationManager + SpacingBetweenDeclarationsWithAnnotations:UpdateReceiver.kt$UpdateReceiver$@Inject lateinit var workManager: WorkManager + SpacingBetweenDeclarationsWithAnnotations:UriUtilTest.kt$UriUtilTest$@Test fun givenLinkWithoutParams_whenCallingFindParameterValue_thenReturnsParamValue() + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkAmber100 = Color(0xFFFFF6D4) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkAmber200 = Color(0xFFFFEEA8) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkAmber300 = Color(0xFFFFE57D) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkAmber400 = Color(0xFFFFDD51) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkAmber500 = Color(0xFFFFD426) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkAmber600 = Color(0xFFCCAA1E) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkAmber700 = Color(0xFF997F17) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkAmber800 = Color(0xFF66550F) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkAmber900 = Color(0xFF4D400B) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkBlue100 = Color(0xFFDDEDFF) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkBlue200 = Color(0xFFBBDBFF) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkBlue300 = Color(0xFF98CAFF) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkBlue400 = Color(0xFF76B8FF) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkBlue500 = Color(0xFF54A6FF) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkBlue600 = Color(0xFF4385CC) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkBlue700 = Color(0xFF326499) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkBlue800 = Color(0xFF224266) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkBlue900 = Color(0xFF19324D) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkGreen100 = Color(0xFFD6F8DE) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkGreen200 = Color(0xFFACF1BD) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkGreen300 = Color(0xFF83E99D) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkGreen400 = Color(0xFF59E27C) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkGreen500 = Color(0xFF30DB5B) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkGreen600 = Color(0xFF26AF49) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkGreen700 = Color(0xFF1D8337) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkGreen800 = Color(0xFF135824) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkGreen900 = Color(0xFF0E421B) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkPetrol100 = Color(0xFFDFFAFF) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkPetrol200 = Color(0xFFBEF5FF) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkPetrol300 = Color(0xFF9EF0FF) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkPetrol400 = Color(0xFF7DEBFF) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkPetrol500 = Color(0xFF5DE6FF) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkPetrol600 = Color(0xFF4AB8CC) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkPetrol700 = Color(0xFF388A99) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkPetrol800 = Color(0xFF255C66) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkPetrol900 = Color(0xFF1C454D) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkPurple100 = Color(0xFFF8E9FF) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkPurple200 = Color(0xFFF0D2FF) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkPurple300 = Color(0xFFE9BCFF) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkPurple400 = Color(0xFFE1A5FF) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkPurple500 = Color(0xFFDA8FFF) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkPurple600 = Color(0xFFAE72CC) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkPurple700 = Color(0xFF835699) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkPurple800 = Color(0xFF573966) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkPurple900 = Color(0xFF412B4D) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkRed100 = Color(0xFFFFE4E2) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkRed200 = Color(0xFFFFC9C6) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkRed300 = Color(0xFFFFADA9) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkRed400 = Color(0xFFFF928D) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkRed500 = Color(0xFFFF7770) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkRed600 = Color(0xFFCC5F5A) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkRed700 = Color(0xFF994743) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkRed800 = Color(0xFF66302D) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val DarkRed900 = Color(0xFF4D2422) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val Gray100 = Color(0xFF17181A) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val Gray20 = Color(0xFFEDEFF0) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val Gray30 = Color(0xFFE5E8EA) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val Gray40 = Color(0xFFDCE0E3) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val Gray50 = Color(0xFFCBCED1) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val Gray60 = Color(0xFF9FA1A7) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val Gray70 = Color(0xFF676B71) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val Gray80 = Color(0xFF54585F) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val Gray90 = Color(0xFF34373D) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val Gray95 = Color(0xFF26272C) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightAmber100 = Color(0xFFE5E0DA) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightAmber200 = Color(0xFFCCC1B5) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightAmber300 = Color(0xFFB2A38F) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightAmber400 = Color(0xFF99846A) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightAmber500 = Color(0xFF7F6545) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightAmber600 = Color(0xFF665137) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightAmber700 = Color(0xFF4C3D29) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightAmber800 = Color(0xFF4C3D29) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightAmber900 = Color(0xFF261E15) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightBlue100 = Color(0xFFCDE1F4) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightBlue200 = Color(0xFF9BC2E9) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightBlue300 = Color(0xFF6AA4DE) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightBlue400 = Color(0xFF3885D3) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightBlue500 = Color(0xFF0667C8) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightBlue600 = Color(0xFF0552A0) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightBlue700 = Color(0xFF043E78) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightBlue800 = Color(0xFF022950) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightBlue900 = Color(0xFF021F3C) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightGreen100 = Color(0xFFD2E5D7) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightGreen200 = Color(0xFFA6CBAF) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightGreen300 = Color(0xFF79B087) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightGreen400 = Color(0xFF4D965F) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightGreen500 = Color(0xFF207C37) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightGreen550 = Color(0xFF1D7833) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightGreen600 = Color(0xFF1A632C) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightGreen700 = Color(0xFF134A21) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightGreen800 = Color(0xFF0D3216) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightGreen900 = Color(0xFF0A2511) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightPetrol100 = Color(0xFFCCE6EB) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightPetrol200 = Color(0xFF99CDD8) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightPetrol300 = Color(0xFF67B3C4) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightPetrol400 = Color(0xFF349AB1) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightPetrol500 = Color(0xFF01819D) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightPetrol600 = Color(0xFF01677E) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightPetrol700 = Color(0xFF014D5E) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightPetrol800 = Color(0xFF00343F) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightPetrol900 = Color(0xFF00272F) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightPurple100 = Color(0xFFE7DAEE) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightPurple200 = Color(0xFFD0B4DD) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightPurple300 = Color(0xFFB88FCD) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightPurple400 = Color(0xFFA169BC) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightPurple500 = Color(0xFF8944AB) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightPurple600 = Color(0xFF6E3689) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightPurple700 = Color(0xFF522967) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightPurple800 = Color(0xFF371B44) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightPurple900 = Color(0xFF291433) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightRed100 = Color(0xFFF3CCD0) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightRed200 = Color(0xFFE799A1) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightRed300 = Color(0xFFDA6671) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightRed400 = Color(0xFFCE3342) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightRed500 = Color(0xFFC20013) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightRed600 = Color(0xFF9B000F) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightRed700 = Color(0xFF74000B) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightRed800 = Color(0xFF4E0008) + SpacingBetweenDeclarationsWithAnnotations:WireColorPalette.kt$WireColorPalette$@Stable val LightRed900 = Color(0xFF3A0006) + SpacingBetweenDeclarationsWithAnnotations:WirePrimaryIconButton.kt$@Preview @Composable fun PreviewWirePrimaryIconButtonLoading() + SpacingBetweenDeclarationsWithAnnotations:WirePrimaryIconButton.kt$@Preview @Composable fun PreviewWirePrimaryIconButtonRound() + SpacingBetweenDeclarationsWithAnnotations:WireSecondaryIconButton.kt$@Preview @Composable fun PreviewWireSecondaryIconButtonLoading() + SpacingBetweenDeclarationsWithAnnotations:WireSecondaryIconButton.kt$@Preview @Composable fun PreviewWireSecondaryIconButtonRound() + SpacingBetweenDeclarationsWithAnnotations:WireTertiaryIconButton.kt$@Preview @Composable fun PreviewWireTertiaryIconButtonLoading() + SpacingBetweenDeclarationsWithAnnotations:WireTertiaryIconButton.kt$@Preview @Composable fun PreviewWireTertiaryIconButtonRound() + UnnecessaryParenthesesBeforeTrailingLambda:ChangeHandleScreen.kt$() + UnnecessaryParenthesesBeforeTrailingLambda:EndOngoingCallReceiver.kt$EndOngoingCallReceiver$() + UnnecessaryParenthesesBeforeTrailingLambda:GroupOptionsScreen.kt$() + UnnecessaryParenthesesBeforeTrailingLambda:HomeScreen.kt$() + UnnecessaryParenthesesBeforeTrailingLambda:HomeStateHolder.kt$() + UnusedParameter:CallsScreen.kt$openConversationNotificationsSettings: (ConversationItem) -> Unit + UnusedParameter:ConversationListViewModel.kt$ConversationListViewModel$id: String = "" + UnusedParameter:ConversationSheetContent.kt$addConversationToFavourites: () -> Unit + UnusedParameter:ConversationSheetContent.kt$moveConversationToFolder: () -> Unit + UnusedParameter:ExternalLoggerManager.kt$ExternalLoggerManager$context: Context + UnusedParameter:ExternalLoggerManager.kt$ExternalLoggerManager$globalDataStore: GlobalDataStore + UnusedParameter:LoginSSOScreen.kt$serverTitle: String + UnusedParameter:MentionScreen.kt$openConversationNotificationsSettings: (ConversationItem) -> Unit + UnusedParameter:ShouldTriggerMigrationForUserUserCaseTest.kt$ShouldTriggerMigrationForUserUserCaseTest.Arrangement$version: Int? + UnusedParameter:SwipeableSnackbar.kt$onDismiss: () -> Unit = { hostState.currentSnackbarData?.dismiss() } + UnusedParameter:TrackingNavController.kt$nameFromRoute: (String) -> String? + UnusedParameter:WireButtonDefaults.kt$WireButtonColors$interactionSource: InteractionSource + UnusedParameter:WireItemLabel.kt$minHeight: Dp = dimensions().badgeSmallMinSize.height + UnusedParameter:WireItemLabel.kt$minWidth: Dp = dimensions().badgeSmallMinSize.height + UnusedParameter:ZoomableImage.kt$imageScale: Float = 1.0f + UnusedPrivateProperty:ConnectionPolicyManagerTest.kt$ConnectionPolicyManagerTest.Companion$private val USER_ID_2 = UserId("user2", "domain2") + UnusedPrivateProperty:ConversationListViewModelTest.kt$ConversationListViewModelTest.Companion$private val testConversations = TestConversationDetails.CONVERSATION_ONE_ONE + UnusedPrivateProperty:DropDownMentionsSuggestions.kt$i + UnusedPrivateProperty:ForgotLockScreenViewModel.kt$ForgotLockScreenViewModel$private val notificationChannelsManager: NotificationChannelsManager + UnusedPrivateProperty:MigrateClientsDataUseCaseTest.kt$MigrateClientsDataUseCaseTest$val sessionFileWithDomain = File(sessionsDir, "1@domain.com_123").apply { createNewFile() } + UnusedPrivateProperty:PendingIntents.kt$private const val CALL_REQUEST_CODE_PREFIX = "call_" + UnusedPrivateProperty:SearchQueryStateFlow.kt$SearchQueryStateFlow$private val coroutineDispatcher: CoroutineDispatcher + UnusedPrivateProperty:SelfUserProfileViewModel.kt$SelfUserProfileViewModel$private val notificationChannelsManager: NotificationChannelsManager + UnusedPrivateProperty:SendMessageViewModel.kt$SendMessageViewModel.Companion$private const val sizeOf1MB = 1024 * 1024 + UnusedPrivateProperty:SendMessageViewModelArrangement.kt$SendMessageViewModelArrangement$@MockK private lateinit var savedStateHandle: SavedStateHandle + UnusedPrivateProperty:SwipeableSnackbar.kt$val currentScreenWidth = with(density) { configuration.screenWidthDp.dp.toPx() } + UnusedPrivateProperty:SwipeableSnackbar.kt$val positionalThreshold: (Float) -> Float = { distance -> distance * 0.5f } + UnusedPrivateProperty:SwipeableSnackbar.kt$val velocityThreshold: () -> Float = with(density) { { 125.dp.toPx() } } + UnusedPrivateProperty:WireNotificationManagerTest.kt$WireNotificationManagerTest.Companion$private val TEST_SERVER_CONFIG: ServerConfig = newServerConfig(1) + Wrapping:AddMembersToConversationViewModel.kt$AddMembersToConversationViewModel$( + Wrapping:AssetImageFetcherTest.kt$AssetImageFetcherTest.Arrangement$( data = imageData, options ?: Options( context = mockContext, parameters = Parameters.Builder().set(key = OPTION_PARAMETER_RETRY_KEY, value = 0, memoryCacheKey = null).build() ) ) + Wrapping:AutoFillTextField.kt$( + Wrapping:AvatarPickerViewModelTest.kt$AvatarPickerViewModelTest.Arrangement$uploadUserAvatarUseCase(any(), any()) + Wrapping:BackupAndRestoreViewModelTest.kt$BackupAndRestoreViewModelTest.Arrangement$createBackupFile(eq(password)) + Wrapping:Buttons.kt$( modifier = Modifier .fillMaxWidth() .padding( start = MaterialTheme.wireDimensions.spacing16x, end = MaterialTheme.wireDimensions.spacing16x, top = MaterialTheme.wireDimensions.spacing16x, bottom = MaterialTheme.wireDimensions.spacing4x ), text = stringResource(id = R.string.guest_link_button_copy_link), fillMaxWidth = true, onClick = onCopy ) + Wrapping:CaptureVideoRequestFlow.kt$( + Wrapping:ChangeEmailViewModel.kt$ChangeEmailViewModel$-> + Wrapping:ChangeHandleViewModel.kt$ChangeHandleViewModel$-> + Wrapping:CodeTextField.kt$( + Wrapping:ConnectionPolicyManagerTest.kt$ConnectionPolicyManagerTest$arrangement.setConnectionPolicyUseCase.invoke(ConnectionPolicy.DISCONNECT_AFTER_PENDING_EVENTS) + Wrapping:ConversationCallViewModel.kt$ConversationCallViewModel$( + Wrapping:ConversationInfoViewModel.kt$ConversationInfoViewModel$-> + Wrapping:ConversationListViewModel.kt$ConversationListViewModel$( + Wrapping:ConversationMediaScreen.kt$ConversationMediaScreenTabItem.entries.size + Wrapping:ConversationMediaScreen.kt$derivedStateOf { lazyListStates[currentTabState].topBarElevation(maxAppBarElevation) } + Wrapping:ConversationMediaScreen.kt$lazyListStates[currentTabState].topBarElevation(maxAppBarElevation) + Wrapping:ConversationMessagesViewModel.kt$ConversationMessagesViewModel$( + Wrapping:ConversationRouter.kt${ conversationId -> navigator.navigate(NavigationCommand(ConversationScreenDestination(conversationId))) } + Wrapping:ConversationRouter.kt${ conversationId -> navigator.navigate(NavigationCommand(OngoingCallScreenDestination(conversationId))) } + Wrapping:ConversationRouter.kt${ conversationItem -> openConversationBottomSheet( conversationItem = conversationItem ) } + Wrapping:ConversationRouter.kt${ conversationItem -> openConversationBottomSheet( conversationItem = conversationItem, conversationOptionNavigation = ConversationOptionNavigation.MutingNotificationOption ) } + Wrapping:ConversationRouter.kt${ userId -> navigator.navigate(NavigationCommand(OtherUserProfileScreenDestination(userId))) } + Wrapping:ConversationScreen.kt$( + Wrapping:ConversationScreen.kt${ /* do nothing */ } + Wrapping:ConversationSheetContent.kt$ConversationSheetContent$( + Wrapping:ConversationTopAppBar.kt$( title = { Row( verticalAlignment = Alignment.CenterVertically, modifier = Modifier .fillMaxWidth() // TopAppBar adds TopAppBarHorizontalPadding = 4.dp to each element, so we need to offset it to retain the desired // spacing between navigation icon button and avatar according to the designs .offset(x = -dimensions().spacing4x) .clip(RoundedCornerShape(MaterialTheme.wireDimensions.buttonCornerSize)) .clickable(onClick = onDropDownClick, enabled = isDropDownEnabled && isInteractionEnabled) ) { val conversationAvatar: ConversationAvatar = conversationInfoViewState.conversationAvatar Avatar(conversationAvatar, conversationInfoViewState) Text( text = conversationInfoViewState.conversationName.asString(), style = MaterialTheme.wireTypography.title02, maxLines = 1, overflow = TextOverflow.Ellipsis, modifier = Modifier.weight(weight = 1f, fill = false) ) ConversationVerificationIcons( conversationInfoViewState.protocolInfo, conversationInfoViewState.mlsVerificationStatus, conversationInfoViewState.proteusVerificationStatus ) if (conversationInfoViewState.legalHoldStatus == Conversation.LegalHoldStatus.ENABLED) { HorizontalSpace.x4() LegalHoldIndicator() } if (isDropDownEnabled && isInteractionEnabled) { Icon( painter = painterResource(id = R.drawable.ic_dropdown_icon), contentDescription = stringResource(R.string.content_description_drop_down_icon) ) } } }, navigationIcon = { NavigationIconButton(NavigationIconType.Back, onBackButtonClick) }, actions = { Row( horizontalArrangement = Arrangement.spacedBy(dimensions().spacing4x), modifier = Modifier.padding(end = dimensions().spacing4x) ) { if (isSearchEnabled) { WireSecondaryIconButton( onButtonClicked = onSearchButtonClick, iconResource = R.drawable.ic_search, contentDescription = R.string.content_description_conversation_search_icon, minSize = dimensions().buttonSmallMinSize, minClickableSize = DpSize( dimensions().buttonSmallMinSize.width, dimensions().buttonMinClickableSize.height ), ) } CallControlButton( hasOngoingCall = hasOngoingCall, onJoinCallButtonClick = onJoinCallButtonClick, onPhoneButtonClick = onPhoneButtonClick, isCallingEnabled = isInteractionEnabled, onPermissionPermanentlyDenied = onPermissionPermanentlyDenied, ) } }, colors = TopAppBarDefaults.centerAlignedTopAppBarColors( containerColor = MaterialTheme.colorScheme.background, titleContentColor = MaterialTheme.colorScheme.onBackground, actionIconContentColor = MaterialTheme.colorScheme.onBackground, navigationIconContentColor = MaterialTheme.colorScheme.onBackground ) ) + Wrapping:ConversationsNavigationItem.kt$ConversationsNavigationItem.All$( + Wrapping:ConversationsNavigationItem.kt$ConversationsNavigationItem.Calls$( + Wrapping:ConversationsNavigationItem.kt$ConversationsNavigationItem.Mentions$( + Wrapping:CreateAccountCodeScreen.kt$ + Wrapping:CreateAccountDetailsScreen.kt$ + Wrapping:CreateAccountEmailScreen.kt$( + Wrapping:CreateAccountSummaryScreen.kt$navigator.navigate(NavigationCommand(CreateAccountUsernameScreenDestination, BackStackMode.CLEAR_WHOLE)) + Wrapping:CreateAccountUsernameViewModelTest.kt$CreateAccountUsernameViewModelTest$setUserHandleUseCase.invoke(any()) + Wrapping:CreatePasswordProtectedGuestLinkScreen.kt$ + Wrapping:DebugDataOptions.kt$( + Wrapping:DeclineButton.kt$( + Wrapping:DeleteMessageDialog.kt$ + Wrapping:DeviceDetailsViewModel.kt$DeviceDetailsViewModel$-> + Wrapping:DeviceItem.kt$( + Wrapping:DropDownMentionsSuggestions.kt$( + Wrapping:E2EIEnrollmentScreen.kt$viewModel.onCancelEnrollmentClicked(NavigationSwitchAccountActions(navigator::navigate)) + Wrapping:EditGuestAccessScreen.kt${ isPasswordProtected -> coroutineScope.launch { sheetState.hide() } if (isPasswordProtected) { navigator.navigate( NavigationCommand( CreatePasswordProtectedGuestLinkScreenDestination( CreatePasswordGuestLinkNavArgs( conversationId = editGuestAccessViewModel.conversationId ) ) ) ) } else { editGuestAccessViewModel.onRequestGuestRoomLink() } } + Wrapping:EditMessageMenuItems.kt${ emoji: String -> hideEditMessageMenu { onReactionClick(message.header.messageId, emoji) } } + Wrapping:EditSelfDeletingMessagesScreen.kt$( + Wrapping:EditSelfDeletingMessagesViewModel.kt$EditSelfDeletingMessagesViewModel$( + Wrapping:Extensions.kt$( + Wrapping:Extensions.kt$flow.flowWithLifecycle(lifecycleOwner.lifecycle, Lifecycle.State.STARTED) + Wrapping:FeatureFlagNotificationViewModelTest.kt$FeatureFlagNotificationViewModelTest.Arrangement$coreLogic.getSessionScope(any()).markGuestLinkFeatureFlagAsNotChanged + Wrapping:FileManager.kt$FileManager$context.getFileName(it) + Wrapping:GroupConversationDetailsScreen.kt$GroupConversationDetailsTabItem.entries.size + Wrapping:GroupConversationDetailsScreen.kt$derivedStateOf { lazyListStates[currentTabState].topBarElevation(maxAppBarElevation) } + Wrapping:GroupConversationDetailsScreen.kt$lazyListStates[currentTabState].topBarElevation(maxAppBarElevation) + Wrapping:GroupConversationDetailsScreen.kt$scope.launch { snackbarHostState.showSnackbar(it.asString(resources)) } + Wrapping:GroupConversationDetailsScreen.kt$snackbarHostState.showSnackbar(it.asString(resources)) + Wrapping:GroupConversationDetailsScreen.kt${ scope.launch { snackbarHostState.showSnackbar(it.asString(resources)) } } + Wrapping:GroupConversationDetailsViewModel.kt$GroupConversationDetailsViewModel$GroupConversationParticipantsViewModel( savedStateHandle, observeConversationMembers, refreshUsersWithoutMetadata ), GroupConversationDetailsBottomSheetEventsHandler + Wrapping:GroupConversationDetailsViewModelTest.kt$GroupConversationDetailsViewModelArrangement$observeParticipantsForConversationUseCase(any()) + Wrapping:GroupConversationDetailsViewModelTest.kt$GroupConversationDetailsViewModelArrangement$savedStateHandle.navArgs<GroupConversationAllParticipantsNavArgs>() + Wrapping:GroupConversationDetailsViewModelTest.kt$GroupConversationDetailsViewModelTest$remove(Conversation.AccessRole.NON_TEAM_MEMBER) + Wrapping:GroupConversationOptions.kt$( + Wrapping:GroupConversationOptionsItem.kt$ + Wrapping:GroupConversationOptionsItem.kt$WireSecondaryButton(text = "Copy link", onClick = {}, modifier = Modifier.height(32.dp), fillMaxWidth = false) + Wrapping:GroupConversationParticipantsViewModelTest.kt$GroupConversationParticipantsViewModelArrangement$savedStateHandle.navArgs<GroupConversationAllParticipantsNavArgs>() + Wrapping:GroupOptionsScreen.kt$( + Wrapping:GroupOptionsScreen.kt$( title = stringResource(R.string.disable_guests_dialog_title), text = stringResource(R.string.disable_guests_dialog_description), onDismiss = onAllowGuestsDialogDismissed, buttonsHorizontalAlignment = false, optionButton1Properties = WireDialogButtonProperties( onClick = onNotAllowGuestsClicked, text = stringResource(id = R.string.disable_guests_dialog_button), type = WireDialogButtonType.Primary ), optionButton2Properties = WireDialogButtonProperties( text = stringResource(R.string.allow_guests), onClick = onAllowGuestsClicked, type = WireDialogButtonType.Primary ), dismissButtonProperties = WireDialogButtonProperties( text = stringResource(R.string.label_cancel), onClick = onAllowGuestsDialogDismissed ) ) + Wrapping:HangUpButton.kt$( + Wrapping:HangUpButton.kt$(modifier = Modifier .width(MaterialTheme.wireDimensions.initiatingCallHangUpButtonSize) .height(MaterialTheme.wireDimensions.initiatingCallHangUpButtonSize), onHangUpButtonClicked = { }) + Wrapping:HomeScreen.kt$( + Wrapping:HomeSheetContent.kt$( + Wrapping:ImageMessageTypes.kt$( + Wrapping:ImportMediaAuthenticatedViewModel.kt$ImportMediaAuthenticatedViewModel$( + Wrapping:ImportMediaScreen.kt$( + Wrapping:IncomingCallScreen.kt${ /* do nothing */ } + Wrapping:InitiatingCallScreen.kt${ /* do nothing */ } + Wrapping:LegalHoldRequestedDialog.kt$( LegalHoldRequestedState.Visible( legalHoldDeviceFingerprint = "0123456789ABCDEF", requiresPassword = false, userId = UserId("", ""), ), {}, {}, {} ) + Wrapping:LegalHoldRequestedDialog.kt$( LegalHoldRequestedState.Visible( legalHoldDeviceFingerprint = "0123456789ABCDEF", requiresPassword = true, userId = UserId("", ""), ), {}, {}, {} ) + Wrapping:LegalHoldRequestedViewModelTest.kt$LegalHoldRequestedViewModelTest$it.error shouldBeInstanceOf LegalHoldRequestedError.InvalidCredentialsError::class + Wrapping:LegalHoldSubjectProfileDialog.kt$( + Wrapping:LoginEmailVerificationCodeScreen.kt$( + Wrapping:LoginEmailViewModelTest.kt$LoginEmailViewModelTest$addAuthenticatedUserUseCase(any(), any(), any(), any()) + Wrapping:LoginEmailViewModelTest.kt$LoginEmailViewModelTest$loginUseCase(any(), any(), any(), any(), any()) + Wrapping:LoginEmailViewModelTest.kt$LoginEmailViewModelTest$requestSecondFactorCodeUseCase(any(), any()) + Wrapping:LoginScreen.kt$TransitionAnimationType.SLIDE.enterTransition.togetherWith(TransitionAnimationType.SLIDE.exitTransition) + Wrapping:MarkdownBlockQuote.kt$( + Wrapping:MarkdownHelperTest.kt$MarkdownHelperTest$( + Wrapping:MediaGalleryViewModelTest.kt$MediaGalleryViewModelTest.Arrangement$getConversationDetails(any()) + Wrapping:MessageCompositionHolder.kt$MessageCompositionHolder$( + Wrapping:MessageDetailsScreen.kt$derivedStateOf { lazyListStates[currentTabState].topBarElevation(maxAppBarElevation) } + Wrapping:MessageDetailsScreen.kt$lazyListStates[currentTabState].topBarElevation(maxAppBarElevation) + Wrapping:MessageExpiration.kt$<no name provided>$( when (type) { StringResourceType.WEEKS -> R.plurals.weeks_left StringResourceType.DAYS -> R.plurals.days_left StringResourceType.HOURS -> R.plurals.hours_left StringResourceType.MINUTES -> R.plurals.minutes_left StringResourceType.SECONDS -> R.plurals.seconds_left }, quantity, quantity ) + Wrapping:MessageItem.kt$( + Wrapping:MessageMapperTest.kt$MessageMapperTest$( + Wrapping:MessagePreviewContentMapper.kt$( userUIText, UIText.StringResource( if (isSelfMessage) R.string.last_message_self_user_shared_asset else R.string.last_message_other_user_shared_asset ) ) + Wrapping:MigrateActiveAccountsUseCase.kt$MigrateActiveAccountsUseCase$it.users(listOf(activeAccount.id)) + Wrapping:MigrateClientsDataUseCase.kt$MigrateClientsDataUseCase$( + Wrapping:MigrateClientsDataUseCase.kt$MigrateClientsDataUseCase$( clientId, RegisterClientParam( password = null, capabilities = null ) ) + Wrapping:MigrationManager.kt$MigrationManager${ /* no-op */ } + Wrapping:MigrationViewModel.kt$MigrationViewModel$MigrationType.SingleUser(it) + Wrapping:MigrationWorker.kt$it.firstOrNull()?.state == WorkInfo.State.RUNNING + Wrapping:Mock.kt$( + Wrapping:MyAccountScreen.kt$( + Wrapping:NavigationIconButton.kt${ NavigationIconButton(NavigationIconType.Back, onBackButtonClick) } + Wrapping:NavigationUtilsTest.kt$NavigationUtilsTest$( mockk(), QualifiedID( value = mockQualifiedIdValue, domain = mockQualifiedIdDomain ), mockMessageId, true, true ) + Wrapping:NewConversationSearchPeopleScreen.kt$navigator.navigate(NavigationCommand(NewGroupConversationSearchPeopleScreenDestination)) + Wrapping:NewConversationViewModel.kt$NewConversationViewModel$( + Wrapping:NewConversationViewModelArrangement.kt$NewConversationViewModelArrangement$( + Wrapping:NewConversationViewModelArrangement.kt$NewConversationViewModelArrangement$createGroupConversation(any(), any(), any()) + Wrapping:OngoingCallScreen.kt${ /* do nothing */ } + Wrapping:OtherUserProfileScreen.kt$( + Wrapping:OtherUserProfileScreen.kt$navigator.navigate(NavigationCommand(ConversationScreenDestination(it), BackStackMode.UPDATE_EXISTED)) + Wrapping:OtherUserProfileScreen.kt$navigator.navigate(NavigationCommand(DeviceDetailsScreenDestination(navArgs.userId, it.clientId))) + Wrapping:OtherUserProfileScreenViewModel.kt$OtherUserProfileScreenViewModel$( + Wrapping:OtherUserProfileState.kt$OtherUserProfileState$( + Wrapping:OtherUserProfileViewModelArrangement.kt$OtherUserProfileViewModelArrangement$getUserE2eiCertificateStatus.invoke(any()) + Wrapping:ParticipantTile.kt$( + Wrapping:RecordAudioRequestFlow.kt$( + Wrapping:RegisterDeviceScreen.kt$clearSessionViewModel.onCancelLoginClicked(NavigationSwitchAccountActions(navigator::navigate)) + Wrapping:RegisterDeviceViewModel.kt$RegisterDeviceViewModel$( + Wrapping:RegisterDeviceViewModel.kt$RegisterDeviceViewModel${ /* app is already waiting for the user to enter the password */ } + Wrapping:RegularMessageContentMapper.kt$RegularMessageMapper$( if (message.isSelfMessage) { UIText.StringResource(messageResourceProvider.memberNameYouTitlecase) } else { sender?.name.orUnknownName() }, message.isSelfMessage ) + Wrapping:RemoveDeviceScreen.kt$clearSessionViewModel.onCancelLoginClicked(NavigationSwitchAccountActions(navigator::navigate)) + Wrapping:ScalaMessageDAO.kt$ScalaMessageDAO$( "SELECT *" + // Assets are required, otherwise we get exception "requesting column name with table name". "FROM $MESSAGES_TABLE_NAME AS m " + "LEFT JOIN $ASSETS_TABLE_NAME ON m.$COLUMN_ASSET_ID = $ASSETS_TABLE_NAME.$COLUMN_ID " + "WHERE m.$COLUMN_CONVERSATION_ID = ?" + "ORDER BY m.$COLUMN_TIME ASC ", arrayOf(scalaConversation.id) ) + Wrapping:SearchAllPeopleScreen.kt$( + Wrapping:SearchBar.kt$( + Wrapping:SearchBarViewModel.kt$SearchBarViewModel$( + Wrapping:SearchConversationScreen.kt$( horizontalAlignment = Alignment.CenterHorizontally, modifier = Modifier .fillMaxWidth() .wrapContentHeight() ) + Wrapping:SearchConversationScreen.kt$( horizontalAlignment = Alignment.CenterHorizontally, modifier = Modifier .padding(horizontal = dimensions().spacing48x) .wrapContentHeight() ) + Wrapping:SearchPeopleRouter.kt$( + Wrapping:SelectParticipantsButtonsRow.kt$ + Wrapping:SelfDevicesScreen.kt$navigator.navigate(NavigationCommand(DeviceDetailsScreenDestination(viewModel.currentAccountId, it.clientId))) + Wrapping:SelfUserProfileScreen.kt$( + Wrapping:SelfUserProfileScreen.kt${ logoutOptionsDialogState.show(logoutOptionsDialogState.savedState ?: LogoutOptionsDialogState()) } + Wrapping:SendMessageViewModel.kt$SendMessageViewModel$( + Wrapping:SendMessageViewModel.kt$SendMessageViewModel${ /* do nothing */ } + Wrapping:ServerTitle.kt$( + Wrapping:SetLockCodeScreen.kt$( + Wrapping:SettingsScreen.kt$( + Wrapping:SettingsScreen.kt${ isChecked -> if (isChecked) homeStateHolder.navigator.navigate(NavigationCommand(SetLockCodeScreenDestination, BackStackMode.NONE)) else turnAppLockOffDialogState.show(Unit) } + Wrapping:SingleUserMigrationWorker.kt$it.firstOrNull()?.state == WorkInfo.State.RUNNING + Wrapping:SystemMessageContentMapper.kt$SystemMessageContentMapper$UIText.DynamicString(it) + Wrapping:TextWithLearnMore.kt$append("This is text with a learn more link") + Wrapping:Theme.kt$( + Wrapping:TypingIndicatorViewModelTest.kt$TypingIndicatorViewModelTest.Arrangement$savedStateHandle.scopedArgs<TypingIndicatorArgs>() + Wrapping:UIMessage.kt$DeliveryStatusContent.PartialDelivery$failedRecipients.filter { it !in noClients.values.flatten() }.toImmutableList() + Wrapping:UIMessage.kt$DeliveryStatusContent.PartialDelivery$it !in noClients.values.flatten() + Wrapping:UIParticipantMapperTest.kt$UIParticipantMapperTest$( + Wrapping:VerifyEmailViewModel.kt$VerifyEmailViewModel${ /*no-op*/ } + Wrapping:WelcomeScreen.kt$( + Wrapping:WireActivity.kt$WireActivity$( + Wrapping:WireActivityDialogs.kt$( + Wrapping:WireActivityDialogs.kt$( GlobalAppState( customBackendDialog = CustomServerDialogState( ServerConfig.STAGING ) ), {}, {}) + Wrapping:WireActivityViewModel.kt$WireActivityViewModel$-> + Wrapping:WireActivityViewModelTest.kt$WireActivityViewModelTest.Arrangement$observeIfE2EIRequiredDuringLoginUseCaseProviderFactory.create(any()).observeIfE2EIIsRequiredDuringLogin() + Wrapping:WireButton.kt$( + Wrapping:WireNotificationManagerTest.kt$WireNotificationManagerTest$arrangement.connectionPolicyManager.handleConnectionOnPushNotification(TEST_AUTH_TOKEN.userId, any()) + Wrapping:WireNotificationManagerTest.kt$WireNotificationManagerTest.Arrangement$markMessagesAsNotified(any<MarkMessagesAsNotifiedUseCase.UpdateTarget.SingleConversation>()) + Wrapping:WireTextFieldDefaults.kt$<no name provided>$( diff --git a/config/detekt/detekt.yml b/config/detekt/detekt.yml index 7d9834c7597..1dcb1f96372 100644 --- a/config/detekt/detekt.yml +++ b/config/detekt/detekt.yml @@ -65,7 +65,7 @@ complexity: threshold: 10 includeStaticDeclarations: false includePrivateDeclarations: false - ComplexMethod: + CyclomaticComplexMethod: active: true threshold: 15 ignoreSingleWhenExpression: false @@ -223,6 +223,9 @@ formatting: AnnotationOnSeparateLine: active: false autoCorrect: true + ArgumentListWrapping: + active: true + maxLineLength: 140 ChainWrapping: active: false autoCorrect: true @@ -245,7 +248,6 @@ formatting: active: false autoCorrect: true indentSize: 4 - continuationIndentSize: 4 MaximumLineLength: active: true maxLineLength: 140 @@ -297,6 +299,7 @@ formatting: active: true autoCorrect: true indentSize: 4 + maxLineLength: 140 SpacingAroundColon: active: true autoCorrect: true @@ -337,7 +340,6 @@ naming: parameterPattern: '[a-z][A-Za-z0-9]*' privateParameterPattern: '[a-z][A-Za-z0-9]*' excludeClassPattern: '$^' - ignoreOverridden: true EnumNaming: active: true excludes: [ '**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**' ] @@ -360,13 +362,11 @@ naming: functionPattern: '([a-z][a-zA-Z0-9]*)|(`.*`)' excludeClassPattern: '$^' ignoreAnnotated: [ 'Composable' ] - ignoreOverridden: true FunctionParameterNaming: active: true excludes: [ '**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**' ] parameterPattern: '[a-z][A-Za-z0-9]*' excludeClassPattern: '$^' - ignoreOverridden: true InvalidPackageDeclaration: active: false rootPackage: '' @@ -406,7 +406,6 @@ naming: variablePattern: '[a-z][A-Za-z0-9]*' privateVariablePattern: '(_)?[a-z][A-Za-z0-9]*' excludeClassPattern: '$^' - ignoreOverridden: true performance: active: true @@ -425,8 +424,6 @@ potential-bugs: active: true Deprecation: active: false - DuplicateCaseInWhenExpression: - active: true EqualsAlwaysReturnsTrueOrFalse: active: true EqualsWithHashCodeExist: @@ -446,14 +443,10 @@ potential-bugs: LateinitUsage: active: false excludes: [ '**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**' ] - excludeAnnotatedProperties: [ ] + ignoreAnnotated: [ ] ignoreOnClassesPattern: '' MapGetWithNotNullAssertionOperator: active: false - MissingWhenCase: - active: true - RedundantElseInWhen: - active: true UnconditionalJumpStatementInLoop: active: false UnnecessaryNotNullOperator: @@ -473,11 +466,15 @@ potential-bugs: style: active: true + BracesOnWhenStatements: + active: false + BracesOnIfStatements: + active: false CollapsibleIfStatements: active: false DataClassContainsFunctions: active: false - conversionFunctionPrefix: 'to' + conversionFunctionPrefix: ['to'] DataClassShouldBeImmutable: active: false EqualsNullCall: @@ -493,7 +490,7 @@ style: includeLineWrapping: false ForbiddenComment: active: false - values: [ 'TODO:', 'FIXME:', 'STOPSHIP:' ] + comments: [ 'TODO:', 'FIXME:', 'STOPSHIP:' ] allowedPatterns: '' ForbiddenImport: active: false @@ -502,9 +499,6 @@ style: ForbiddenMethodCall: active: false methods: [ ] - ForbiddenPublicDataClass: - active: false - ignorePackages: [ '*.internal', '*.internal.*' ] ForbiddenVoid: active: false ignoreOverridden: false @@ -512,10 +506,8 @@ style: FunctionOnlyReturningConstant: active: true ignoreOverridableFunction: true - excludedFunctions: 'describeContents, empty' - excludeAnnotatedFunction: [ 'dagger.Provides' ] - LibraryCodeMustSpecifyReturnType: - active: true + excludedFunctions: ['describeContents', 'empty'] + ignoreAnnotated: [ 'dagger.Provides' ] LoopWithTooManyJumpStatements: active: true maxJumpCount: 1 @@ -533,8 +525,6 @@ style: ignoreNamedArgument: true ignoreEnums: false ignoreRanges: false - MandatoryBracesIfStatements: - active: false MandatoryBracesLoops: active: false MaxLineLength: @@ -557,8 +547,6 @@ style: active: true OptionalUnit: active: false - OptionalWhenBraces: - active: false PreferToOverPairSyntax: active: false ProtectedMemberInFinalClass: @@ -570,7 +558,7 @@ style: ReturnCount: active: true max: 2 - excludedFunctions: 'equals' + excludedFunctions: ['equals'] excludeLabeled: false excludeReturnFromLambda: true excludeGuardClauses: false @@ -587,10 +575,10 @@ style: active: false UnderscoresInNumericLiterals: active: false - acceptableDecimalLength: 5 + acceptableLength: 5 UnnecessaryAbstractClass: active: true - excludeAnnotatedClasses: [ 'dagger.Module' ] + ignoreAnnotated: [ 'dagger.Module' ] UnnecessaryAnnotationUseSiteTarget: active: false UnnecessaryApply: @@ -616,7 +604,7 @@ style: active: false UseDataClass: active: false - excludeAnnotatedClasses: [ ] + ignoreAnnotated: [ ] allowVars: false UseIfInsteadOfWhen: active: false @@ -633,4 +621,13 @@ style: excludes: [ '**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**' ] excludeImports: [ 'java.util.*', 'kotlinx.android.synthetic.*' ] +libraries: + ForbiddenPublicDataClass: + active: false + ignorePackages: [ '*.internal', '*.internal.*' ] + LibraryCodeMustSpecifyReturnType: + active: true + LibraryEntitiesShouldNotBePublic: + active: false + WireRuleSet: diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 2507c941db0..6e5ba712660 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,47 +1,52 @@ [versions] # Gradle - Remind to change in `gradle-wrapper.properties` file as well! -gradle = "8.1" +androidJunit5 = "1.9.3.0" +gradle = "8.5" # Kotlin -kotlin = "1.9.0" +grgitCore = "5.2.0" +kotlin = "1.9.23" # KotlinX -coroutines = "1.7.3" -ktx-dateTime = "0.4.1" +coroutines = "1.8.0" +ktx-dateTime = "0.5.0" ktx-immutableCollections = "0.3.5" ktx-serialization = "1.5.1" # Android Core / Architecture -google-gms = "4.4.0" -gms-location = "21.0.1" -android-gradlePlugin = "8.1.2" +detekt = "1.23.6" +google-gms = "4.4.1" +gms-location = "21.1.0" +android-gradlePlugin = "8.2.0" desugaring = "2.0.4" -firebaseBOM = "32.5.0" +firebaseBOM = "32.7.3" fragment = "1.5.6" resaca = "2.4.6" bundlizer = "0.7.0" +spotless = "6.1.2" +squareup-javapoet = "1.13.0" visibilityModifiers = "1.1.0" # AndroidX androidx-appcompat = "1.6.1" androidx-core = "1.12.0" androidx-dataStore = "1.0.0" -androidx-exif = "1.3.6" +androidx-exif = "1.3.7" androidx-emoji = "1.4.0" androidx-jetpack = "1.1.0" -androidx-lifecycle = "2.6.2" +androidx-lifecycle = "2.7.0" androidx-paging3 = "3.2.1" -androidx-paging3Compose = "3.3.0-alpha02" +androidx-paging3Compose = "3.3.0-alpha03" androidx-splashscreen = "1.0.1" -androidx-workManager = "2.8.1" -androidx-browser = "1.5.0" +androidx-workManager = "2.9.0" +androidx-browser = "1.7.0" androidx-biometric = "1.1.0" androidx-startup = "1.1.1" # Compose composeBom = "2024.03.00" # TODO check if in new version [anchoredDraggable] is available compose-activity = "1.8.2" -compose-compiler = "1.5.2" +compose-compiler = "1.5.11" compose-constraint = "1.0.1" compose-navigation = "2.7.7" # adjusted to work with compose-destinations "1.9.54" compose-destinations = "1.10.2" @@ -49,7 +54,7 @@ compose-destinations = "1.10.2" # Hilt hilt = "2.48.1" hilt-composeNavigation = "1.1.0" -hilt-work = "1.1.0" +hilt-work = "1.2.0" # Android UI accompanist = "0.32.0" # adjusted to work with compose-destinations "1.9.54" @@ -69,10 +74,10 @@ openIdAppAuth = "0.11.1" # Other Tools aboutLibraries = "10.8.0" leakCanary = "2.7" -ksp = "1.9.0-1.0.12" +ksp = "1.9.23-1.0.19" # Benchmark -benchmark-macro-junit4 = "1.2.0-beta05" +benchmark-macro-junit4 = "1.2.3" profileinstaller = "1.3.1" # Testing @@ -80,14 +85,14 @@ androidx-espresso = "3.5.1" androidx-test-core = "1.5.0" androidx-test-extensions = "1.1.5" androidx-test-orchestrator = "1.4.2" -androidx-test-rules = "1.4.0" +androidx-test-rules = "1.5.0" androidx-test-runner = "1.5.2" -androidx-test-uiAutomator = "2.2.0" -androidx-text-archCore = "2.1.0" +androidx-test-uiAutomator = "2.3.0" +androidx-text-archCore = "2.2.0" junit4 = "4.13.2" junit5 = "5.10.0" kluent = "1.73" -mockk = "1.13.9" +mockk = "1.13.10" okio = "3.6.0" turbine = "1.0.0" robolectric = "4.11.1" @@ -111,12 +116,15 @@ wire-hilt = { id = "com.wire.android.hilt" } [libraries] # Kotlin Gradle Plugin +android-junit5 = { module = "de.mannodermaus.gradle.plugins:android-junit5", version.ref = "androidJunit5" } +grgit-core = { module = "org.ajoberstar.grgit:grgit-core", version.ref = "grgitCore" } kotlin-gradlePlugin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" } android-gradlePlugin = { group = "com.android.tools.build", name = "gradle", version.ref = "android-gradlePlugin" } hilt-gradlePlugin = { module = "com.google.dagger:hilt-android-gradle-plugin", version.ref = "hilt" } googleGms-gradlePlugin = { module = "com.google.gms:google-services", version.ref = "google-gms" } googleGms-location = { module = "com.google.android.gms:play-services-location", version.ref = "gms-location" } aboutLibraries-gradlePlugin = { module = "com.mikepenz.aboutlibraries.plugin:aboutlibraries-plugin", version.ref = "aboutLibraries" } +spotless-gradlePlugin = { module = "com.diffplug.spotless:spotless-plugin-gradle", version.ref = "spotless" } ktx-serialization = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "ktx-serialization" } ktx-dateTime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "ktx-dateTime" } @@ -132,6 +140,7 @@ coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", ve # Android Core / Architecture android-desugarJdkLibs = { module = "com.android.tools:desugar_jdk_libs", version.ref = "desugaring" } +squareup-javapoet = { module = "com.squareup:javapoet", version.ref = "squareup-javapoet" } visibilityModifiers = { module = "io.github.esentsov:kotlin-visibility", version.ref = "visibilityModifiers" } resaca-core = { module = "com.github.sebaslogen.resaca:resaca", version.ref = "resaca" } resaca-hilt = { module = "com.github.sebaslogen.resaca:resacahilt", version.ref = "resaca" } diff --git a/kalium b/kalium index 409e685fdeb..0996f330649 160000 --- a/kalium +++ b/kalium @@ -1 +1 @@ -Subproject commit 409e685fdeb6f3e55c20bc0df1e82522ec53c659 +Subproject commit 0996f330649a84709e044957db1fd36df2544326