Update the app dependencies (#5715)

This commit is contained in:
David Perez
2025-08-15 16:04:04 -05:00
committed by GitHub
parent 4fb96cb782
commit c5663431af
7 changed files with 40 additions and 25 deletions

View File

@@ -5,7 +5,6 @@ import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.animation.core.updateTransition
import androidx.compose.animation.slideInVertically
import androidx.compose.animation.slideOutVertically
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.clickable
import androidx.compose.foundation.combinedClickable
import androidx.compose.foundation.interaction.MutableInteractionSource
@@ -275,7 +274,6 @@ private fun AnimatedAccountSwitcher(
}
@Suppress("LongMethod")
@OptIn(ExperimentalFoundationApi::class)
@Composable
private fun AccountSummaryItem(
accountSummary: AccountSummary,
@@ -471,8 +469,7 @@ private fun BitwardenAccountSwitcher_preview() {
onLogoutAccountClick = {},
onAddAccountClick = {},
onDismissRequest = {},
topAppBarScrollBehavior =
TopAppBarDefaults.exitUntilCollapsedScrollBehavior(
topAppBarScrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior(
state = rememberTopAppBarState(),
canScroll = { false },
),

View File

@@ -13,6 +13,9 @@ import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.SemanticsPropertyKey
import androidx.compose.ui.semantics.SemanticsPropertyReceiver
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.unit.dp
import com.bitwarden.ui.platform.components.appbar.BitwardenTopAppBar
import com.bitwarden.ui.platform.components.appbar.NavigationIcon
@@ -22,6 +25,7 @@ import com.bitwarden.ui.platform.resource.BitwardenString
import com.bitwarden.ui.platform.theme.BitwardenTheme
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import kotlinx.coroutines.launch
import org.jetbrains.annotations.VisibleForTesting
/**
* A reusable modal bottom sheet that applies provides a bottom sheet layout with the
@@ -53,7 +57,7 @@ fun BitwardenModalBottomSheet(
if (!showBottomSheet) return
ModalBottomSheet(
onDismissRequest = onDismiss,
modifier = modifier,
modifier = modifier.semantics { this.IsBottomSheet = true },
dragHandle = null,
sheetState = sheetState,
contentWindowInsets = {
@@ -88,6 +92,13 @@ fun BitwardenModalBottomSheet(
}
}
/**
* SemanticPropertyKey used for Unit tests where checking if the content is part of a bottom sheet.
*/
@VisibleForTesting
val IsBottomSheetKey = SemanticsPropertyKey<Boolean>("IsBottomSheet")
private var SemanticsPropertyReceiver.IsBottomSheet by IsBottomSheetKey
@OptIn(ExperimentalMaterial3Api::class)
@Composable
private fun SheetState.createAnimatedDismissAction(onDismiss: () -> Unit): () -> Unit {

View File

@@ -2,8 +2,17 @@ package com.x8bit.bitwarden.ui.util
import androidx.compose.ui.semantics.getOrNull
import androidx.compose.ui.test.SemanticsMatcher
import com.x8bit.bitwarden.ui.platform.components.bottomsheet.IsBottomSheetKey
import com.x8bit.bitwarden.ui.platform.components.coachmark.IsCoachMarkToolTipKey
/**
* A [SemanticsMatcher] user to find nodes used specifically inside a bottom sheet.
*/
val isBottomSheet: SemanticsMatcher
get() = SemanticsMatcher("Node is used to to indicate it is a bottom sheet.") {
it.config.getOrNull(IsBottomSheetKey) == true
}
/**
* A [SemanticsMatcher] user to find Popup nodes used specifically for CoachMarkToolTips
*/

View File

@@ -60,6 +60,7 @@ import com.x8bit.bitwarden.ui.platform.manager.exit.ExitManager
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
import com.x8bit.bitwarden.ui.platform.manager.permissions.FakePermissionManager
import com.x8bit.bitwarden.ui.tools.feature.generator.model.GeneratorMode
import com.x8bit.bitwarden.ui.util.isBottomSheet
import com.x8bit.bitwarden.ui.util.isCoachMarkToolTip
import com.x8bit.bitwarden.ui.vault.feature.addedit.model.CustomFieldAction
import com.x8bit.bitwarden.ui.vault.feature.addedit.model.CustomFieldType
@@ -2608,9 +2609,9 @@ class VaultAddEditScreenTest : BitwardenComposeTest() {
composeTestRule
.onAllNodesWithContentDescription("Close")
.filterToOne(hasAnySibling(hasText("Owner")))
.filterToOne(hasAnyAncestor(isBottomSheet))
.assertIsDisplayed()
.performSemanticsAction(SemanticsActions.OnClick)
.performClick()
dispatcher.advanceTimeByAndRunCurrent(1000L)
@@ -2644,9 +2645,9 @@ class VaultAddEditScreenTest : BitwardenComposeTest() {
composeTestRule
.onAllNodesWithText("Save")
.filterToOne(hasAnySibling(hasText("Owner")))
.filterToOne(hasAnyAncestor(isBottomSheet))
.assertIsDisplayed()
.performSemanticsAction(SemanticsActions.OnClick)
.performClick()
verify {
viewModel.trySendAction(VaultAddEditAction.Common.OwnershipChange(ownerId = ownerId))
@@ -2827,9 +2828,9 @@ class VaultAddEditScreenTest : BitwardenComposeTest() {
composeTestRule
.onAllNodesWithContentDescription("Close")
.filterToOne(hasAnySibling(hasText("Folders")))
.filterToOne(hasAnyAncestor(isBottomSheet))
.assertIsDisplayed()
.performSemanticsAction(SemanticsActions.OnClick)
.performClick()
dispatcher.advanceTimeByAndRunCurrent(1000L)
@@ -2886,9 +2887,9 @@ class VaultAddEditScreenTest : BitwardenComposeTest() {
composeTestRule
.onAllNodesWithText("Save")
.filterToOne(hasAnySibling(hasText("Folders")))
.filterToOne(hasAnyAncestor(isBottomSheet))
.assertIsDisplayed()
.performSemanticsAction(SemanticsActions.OnClick)
.performClick()
verify {
viewModel.trySendAction(VaultAddEditAction.Common.AddNewFolder(newFolderName))
@@ -2919,9 +2920,9 @@ class VaultAddEditScreenTest : BitwardenComposeTest() {
composeTestRule
.onAllNodesWithText("Save")
.filterToOne(hasAnySibling(hasText("Folders")))
.filterToOne(hasAnyAncestor(isBottomSheet))
.assertIsDisplayed()
.performSemanticsAction(SemanticsActions.OnClick)
.performClick()
verify {
viewModel.trySendAction(VaultAddEditAction.Common.FolderChange(folderId = folderId))

View File

@@ -5,8 +5,6 @@ import androidx.compose.ui.test.assert
import androidx.compose.ui.test.assertIsDisplayed
import androidx.compose.ui.test.filterToOne
import androidx.compose.ui.test.hasAnyAncestor
import androidx.compose.ui.test.hasAnySibling
import androidx.compose.ui.test.hasText
import androidx.compose.ui.test.isDialog
import androidx.compose.ui.test.onAllNodesWithContentDescription
import androidx.compose.ui.test.onAllNodesWithText
@@ -23,6 +21,7 @@ import com.bitwarden.ui.util.assertNoDialogExists
import com.x8bit.bitwarden.data.util.advanceTimeByAndRunCurrent
import com.x8bit.bitwarden.ui.platform.base.BitwardenComposeTest
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
import com.x8bit.bitwarden.ui.util.isBottomSheet
import io.mockk.every
import io.mockk.just
import io.mockk.mockk
@@ -468,9 +467,9 @@ class ImportLoginsScreenTest : BitwardenComposeTest() {
composeTestRule
.onAllNodesWithContentDescription("Close")
.filterToOne(hasAnySibling(hasText("Bitwarden Tools")))
.filterToOne(hasAnyAncestor(isBottomSheet))
.assertIsDisplayed()
.performSemanticsAction(SemanticsActions.OnClick)
.performClick()
dispatcher.advanceTimeByAndRunCurrent(1000L)