mirror of
https://github.com/bitwarden/android.git
synced 2025-03-16 03:08:50 +03:00
BIT-1667: Navigate the user to the tooltip URI (#897)
This commit is contained in:
parent
2c092d9d2c
commit
fc3cdeb798
4 changed files with 39 additions and 16 deletions
|
@ -18,6 +18,7 @@ import androidx.compose.ui.input.nestedscroll.nestedScroll
|
|||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.core.net.toUri
|
||||
import androidx.hilt.navigation.compose.hiltViewModel
|
||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
import com.x8bit.bitwarden.R
|
||||
|
@ -34,7 +35,9 @@ import com.x8bit.bitwarden.ui.platform.components.BitwardenTopAppBar
|
|||
import com.x8bit.bitwarden.ui.platform.components.BitwardenTwoButtonDialog
|
||||
import com.x8bit.bitwarden.ui.platform.components.LoadingDialogState
|
||||
import com.x8bit.bitwarden.ui.platform.components.OverflowMenuItemData
|
||||
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
|
||||
import com.x8bit.bitwarden.ui.platform.manager.permissions.PermissionsManager
|
||||
import com.x8bit.bitwarden.ui.platform.theme.LocalIntentManager
|
||||
import com.x8bit.bitwarden.ui.platform.theme.LocalPermissionsManager
|
||||
import com.x8bit.bitwarden.ui.platform.util.persistentListOfNotNull
|
||||
import com.x8bit.bitwarden.ui.tools.feature.generator.model.GeneratorMode
|
||||
|
@ -54,6 +57,7 @@ fun VaultAddEditScreen(
|
|||
onNavigateToQrCodeScanScreen: () -> Unit,
|
||||
viewModel: VaultAddEditViewModel = hiltViewModel(),
|
||||
permissionsManager: PermissionsManager = LocalPermissionsManager.current,
|
||||
intentManager: IntentManager = LocalIntentManager.current,
|
||||
onNavigateToManualCodeEntryScreen: () -> Unit,
|
||||
onNavigateToGeneratorModal: (GeneratorMode.Modal) -> Unit,
|
||||
onNavigateToAttachments: (cipherId: String) -> Unit,
|
||||
|
@ -91,6 +95,12 @@ fun VaultAddEditScreen(
|
|||
}
|
||||
|
||||
VaultAddEditEvent.NavigateBack -> onNavigateBack.invoke()
|
||||
|
||||
is VaultAddEditEvent.NavigateToTooltipUri -> {
|
||||
intentManager.launchUri(
|
||||
"https://bitwarden.com/help/managing-items/#protect-individual-items".toUri(),
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -502,12 +502,7 @@ class VaultAddEditViewModel @Inject constructor(
|
|||
}
|
||||
|
||||
private fun handleTooltipClick() {
|
||||
// TODO Add the text for the prompt (BIT-1079)
|
||||
sendEvent(
|
||||
event = VaultAddEditEvent.ShowToast(
|
||||
message = "Not yet implemented".asText(),
|
||||
),
|
||||
)
|
||||
sendEvent(VaultAddEditEvent.NavigateToTooltipUri)
|
||||
}
|
||||
|
||||
@Suppress("MaxLineLength")
|
||||
|
@ -1735,6 +1730,12 @@ sealed class VaultAddEditEvent {
|
|||
val cipherId: String,
|
||||
) : VaultAddEditEvent()
|
||||
|
||||
/**
|
||||
* Navigate the user to the tooltip URI.
|
||||
*/
|
||||
data object NavigateToTooltipUri :
|
||||
VaultAddEditEvent()
|
||||
|
||||
/**
|
||||
* Navigate to the QR code scan screen.
|
||||
*/
|
||||
|
|
|
@ -29,11 +29,13 @@ import androidx.compose.ui.test.performScrollTo
|
|||
import androidx.compose.ui.test.performTextClearance
|
||||
import androidx.compose.ui.test.performTextInput
|
||||
import androidx.compose.ui.test.performTouchInput
|
||||
import androidx.core.net.toUri
|
||||
import com.bitwarden.core.UriMatchType
|
||||
import com.x8bit.bitwarden.data.platform.repository.util.bufferedMutableSharedFlow
|
||||
import com.x8bit.bitwarden.data.vault.datasource.sdk.model.createMockCipherView
|
||||
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
|
||||
import com.x8bit.bitwarden.ui.platform.base.util.asText
|
||||
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.assertNoDialogExists
|
||||
|
@ -50,7 +52,9 @@ import com.x8bit.bitwarden.ui.vault.model.VaultCardBrand
|
|||
import com.x8bit.bitwarden.ui.vault.model.VaultCardExpirationMonth
|
||||
import com.x8bit.bitwarden.ui.vault.model.VaultIdentityTitle
|
||||
import io.mockk.every
|
||||
import io.mockk.just
|
||||
import io.mockk.mockk
|
||||
import io.mockk.runs
|
||||
import io.mockk.verify
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.update
|
||||
|
@ -79,6 +83,10 @@ class VaultAddEditScreenTest : BaseComposeTest() {
|
|||
every { stateFlow } returns mutableStateFlow
|
||||
}
|
||||
|
||||
private val intentManager: IntentManager = mockk {
|
||||
every { launchUri(any()) } just runs
|
||||
}
|
||||
|
||||
@Before
|
||||
fun setup() {
|
||||
composeTestRule.setContent {
|
||||
|
@ -93,6 +101,7 @@ class VaultAddEditScreenTest : BaseComposeTest() {
|
|||
onNavigateToMoveToOrganization = { id, _ -> onNavigateToMoveToOrganizationId = id },
|
||||
viewModel = viewModel,
|
||||
permissionsManager = fakePermissionManager,
|
||||
intentManager = intentManager,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -103,6 +112,16 @@ class VaultAddEditScreenTest : BaseComposeTest() {
|
|||
assertTrue(onNavigateBackCalled)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `on NavigateToTooltipUri Event should invoke IntentManager`() {
|
||||
mutableEventFlow.tryEmit(VaultAddEditEvent.NavigateToTooltipUri)
|
||||
verify {
|
||||
intentManager.launchUri(
|
||||
"https://bitwarden.com/help/managing-items/#protect-individual-items".toUri(),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Suppress("MaxLineLength")
|
||||
@Test
|
||||
fun `on NavigateToQrCodeScan event should invoke NavigateToQrCodeScan`() {
|
||||
|
|
|
@ -1170,7 +1170,6 @@ class VaultAddEditViewModelTest : BaseViewModelTest() {
|
|||
assertEquals(
|
||||
expectedState,
|
||||
viewModel.stateFlow.value,
|
||||
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -2025,17 +2024,11 @@ class VaultAddEditViewModelTest : BaseViewModelTest() {
|
|||
}
|
||||
|
||||
@Test
|
||||
fun `TooltipClick should emit ShowToast with 'Tooltip' message`() = runTest {
|
||||
fun `TooltipClick should emit NavigateToToolTipUri`() = runTest {
|
||||
viewModel.eventFlow.test {
|
||||
viewModel
|
||||
.actionChannel
|
||||
.trySend(
|
||||
VaultAddEditAction.Common.TooltipClick,
|
||||
)
|
||||
viewModel.trySendAction(VaultAddEditAction.Common.TooltipClick)
|
||||
assertEquals(
|
||||
VaultAddEditEvent.ShowToast(
|
||||
"Not yet implemented".asText(),
|
||||
),
|
||||
VaultAddEditEvent.NavigateToTooltipUri,
|
||||
awaitItem(),
|
||||
)
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue