diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/auth/AuthNavigation.kt b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/auth/AuthNavigation.kt
index 7df1ecfa3e..54c91e01cd 100644
--- a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/auth/AuthNavigation.kt
+++ b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/auth/AuthNavigation.kt
@@ -83,9 +83,6 @@ fun NavGraphBuilder.authGraph(
)
checkEmailDestination(
onNavigateBack = { navController.popBackStack() },
- onNavigateBackToLanding = {
- navController.popBackStack(route = LANDING_ROUTE, inclusive = false)
- },
)
completeRegistrationDestination(
onNavigateBack = { navController.popBackStack() },
diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/checkemail/CheckEmailNavigation.kt b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/checkemail/CheckEmailNavigation.kt
index ee8a47ec30..c9c2b72ec1 100644
--- a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/checkemail/CheckEmailNavigation.kt
+++ b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/checkemail/CheckEmailNavigation.kt
@@ -36,7 +36,6 @@ data class CheckEmailArgs(
*/
fun NavGraphBuilder.checkEmailDestination(
onNavigateBack: () -> Unit,
- onNavigateBackToLanding: () -> Unit,
) {
composableWithSlideTransitions(
route = CHECK_EMAIL_ROUTE,
@@ -46,7 +45,6 @@ fun NavGraphBuilder.checkEmailDestination(
) {
CheckEmailScreen(
onNavigateBack = onNavigateBack,
- onNavigateBackToLanding = onNavigateBackToLanding,
)
}
}
diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/checkemail/CheckEmailScreen.kt b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/checkemail/CheckEmailScreen.kt
index 2addc964bf..3bc9efb1df 100644
--- a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/checkemail/CheckEmailScreen.kt
+++ b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/checkemail/CheckEmailScreen.kt
@@ -8,7 +8,6 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.navigationBarsPadding
-import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.wrapContentHeight
import androidx.compose.foundation.rememberScrollState
@@ -40,7 +39,7 @@ import com.x8bit.bitwarden.ui.platform.base.util.standardHorizontalMargin
import com.x8bit.bitwarden.ui.platform.base.util.toAnnotatedString
import com.x8bit.bitwarden.ui.platform.components.appbar.BitwardenTopAppBar
import com.x8bit.bitwarden.ui.platform.components.button.BitwardenFilledButton
-import com.x8bit.bitwarden.ui.platform.components.button.BitwardenTextButton
+import com.x8bit.bitwarden.ui.platform.components.button.BitwardenOutlinedButton
import com.x8bit.bitwarden.ui.platform.components.scaffold.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.util.rememberVectorPainter
import com.x8bit.bitwarden.ui.platform.composition.LocalIntentManager
@@ -55,7 +54,6 @@ import com.x8bit.bitwarden.ui.platform.theme.BitwardenTheme
@Composable
fun CheckEmailScreen(
onNavigateBack: () -> Unit,
- onNavigateBackToLanding: () -> Unit,
intentManager: IntentManager = LocalIntentManager.current,
viewModel: CheckEmailViewModel = hiltViewModel(),
) {
@@ -70,8 +68,6 @@ fun CheckEmailScreen(
is CheckEmailEvent.NavigateToEmailApp -> {
intentManager.startDefaultEmailApplication()
}
-
- CheckEmailEvent.NavigateBackToLanding -> onNavigateBackToLanding()
}
}
@@ -101,16 +97,15 @@ fun CheckEmailScreen(
email = state.email,
onOpenEmailAppClick = handler.onOpenEmailAppClick,
onChangeEmailClick = handler.onChangeEmailClick,
- modifier = Modifier.standardHorizontalMargin(),
)
} else {
CheckEmailLegacyContent(
email = state.email,
onOpenEmailAppClick = handler.onOpenEmailAppClick,
onChangeEmailClick = handler.onChangeEmailClick,
- onLoginClick = handler.onLoginClick,
)
}
+ Spacer(modifier = Modifier.height(12.dp))
Spacer(modifier = Modifier.navigationBarsPadding())
}
}
@@ -133,9 +128,11 @@ private fun CheckEmailContent(
Image(
painter = rememberVectorPainter(id = R.drawable.open_email),
contentDescription = null,
- contentScale = ContentScale.Fit,
+ contentScale = ContentScale.FillHeight,
modifier = Modifier
- .size(100.dp),
+ .standardHorizontalMargin()
+ .size(100.dp)
+ .fillMaxWidth(),
)
Spacer(modifier = Modifier.height(32.dp))
Text(
@@ -144,9 +141,9 @@ private fun CheckEmailContent(
style = BitwardenTheme.typography.titleMedium,
color = BitwardenTheme.colorScheme.text.primary,
modifier = Modifier
- .padding(horizontal = 8.dp)
.wrapContentHeight()
- .fillMaxWidth(),
+ .fillMaxWidth()
+ .standardHorizontalMargin(),
)
Spacer(modifier = Modifier.height(8.dp))
@@ -163,9 +160,9 @@ private fun CheckEmailContent(
textAlign = TextAlign.Center,
style = BitwardenTheme.typography.bodyMedium,
modifier = Modifier
- .padding(horizontal = 8.dp)
.fillMaxWidth()
- .wrapContentHeight(),
+ .wrapContentHeight()
+ .standardHorizontalMargin(),
)
Spacer(modifier = Modifier.height(16.dp))
@Suppress("MaxLineLength")
@@ -175,9 +172,9 @@ private fun CheckEmailContent(
color = BitwardenTheme.colorScheme.text.primary,
textAlign = TextAlign.Center,
modifier = Modifier
- .padding(horizontal = 8.dp)
.fillMaxWidth()
- .wrapContentHeight(),
+ .wrapContentHeight()
+ .standardHorizontalMargin(),
)
Spacer(modifier = Modifier.height(32.dp))
BitwardenFilledButton(
@@ -185,12 +182,16 @@ private fun CheckEmailContent(
onClick = onOpenEmailAppClick,
modifier = Modifier
.testTag("OpenEmailApp")
- .fillMaxWidth(),
+ .fillMaxWidth()
+ .standardHorizontalMargin(),
)
Spacer(modifier = Modifier.height(12.dp))
- BitwardenTextButton(
+ BitwardenOutlinedButton(
label = stringResource(R.string.change_email_address),
onClick = onChangeEmailClick,
+ modifier = Modifier
+ .fillMaxWidth()
+ .standardHorizontalMargin(),
)
}
}
@@ -201,7 +202,6 @@ private fun CheckEmailLegacyContent(
email: String,
onOpenEmailAppClick: () -> Unit,
onChangeEmailClick: () -> Unit,
- onLoginClick: () -> Unit,
modifier: Modifier = Modifier,
) {
Column(
@@ -216,7 +216,7 @@ private fun CheckEmailLegacyContent(
contentDescription = null,
contentScale = ContentScale.FillHeight,
modifier = Modifier
- .padding(horizontal = 16.dp)
+ .standardHorizontalMargin()
.height(112.dp)
.fillMaxWidth(),
)
@@ -227,7 +227,7 @@ private fun CheckEmailLegacyContent(
style = BitwardenTheme.typography.headlineSmall,
color = BitwardenTheme.colorScheme.text.primary,
modifier = Modifier
- .padding(horizontal = 24.dp)
+ .standardHorizontalMargin()
.wrapContentHeight()
.fillMaxWidth(),
)
@@ -236,7 +236,7 @@ private fun CheckEmailLegacyContent(
@Suppress("MaxLineLength")
val descriptionAnnotatedString =
R.string.follow_the_instructions_in_the_email_sent_to_x_to_continue_creating_your_account.toAnnotatedString(
- email,
+ args = arrayOf(email),
emphasisHighlightStyle = SpanStyle(
color = BitwardenTheme.colorScheme.text.primary,
fontSize = BitwardenTheme.typography.bodyMedium.fontSize,
@@ -247,8 +247,8 @@ private fun CheckEmailLegacyContent(
text = descriptionAnnotatedString,
textAlign = TextAlign.Center,
modifier = Modifier
- .padding(horizontal = 24.dp)
.fillMaxWidth()
+ .standardHorizontalMargin()
.wrapContentHeight(),
)
Spacer(modifier = Modifier.height(32.dp))
@@ -257,27 +257,18 @@ private fun CheckEmailLegacyContent(
onClick = onOpenEmailAppClick,
modifier = Modifier
.testTag("OpenEmailApp")
- .padding(horizontal = 16.dp)
+ .standardHorizontalMargin()
.fillMaxWidth(),
)
- Spacer(modifier = Modifier.height(32.dp))
- Column(
- modifier = Modifier.fillMaxSize(),
- horizontalAlignment = Alignment.CenterHorizontally,
- ) {
- Text(
- text = R.string.no_email_go_back_to_edit_your_email_address.toAnnotatedString {
- onChangeEmailClick()
- },
- )
- Spacer(modifier = Modifier.height(32.dp))
- Text(
- text = R.string.or_log_in_you_may_already_have_an_account
- .toAnnotatedString {
- onLoginClick()
- },
- )
- }
+ Spacer(modifier = Modifier.height(12.dp))
+
+ BitwardenOutlinedButton(
+ label = stringResource(R.string.change_email_address),
+ onClick = onChangeEmailClick,
+ modifier = Modifier
+ .fillMaxWidth()
+ .standardHorizontalMargin(),
+ )
}
}
@@ -289,7 +280,6 @@ private fun CheckEmailScreenNewUi_preview() {
email = "email@fake.com",
onOpenEmailAppClick = { },
onChangeEmailClick = { },
- modifier = Modifier.standardHorizontalMargin(),
)
}
}
@@ -302,7 +292,6 @@ private fun CheckEmailScreenLegacy_preview() {
email = "email@fake.com",
onOpenEmailAppClick = { },
onChangeEmailClick = { },
- onLoginClick = {},
)
}
}
diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/checkemail/CheckEmailViewModel.kt b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/checkemail/CheckEmailViewModel.kt
index c65b92d84a..85340f73cf 100644
--- a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/checkemail/CheckEmailViewModel.kt
+++ b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/checkemail/CheckEmailViewModel.kt
@@ -53,15 +53,9 @@ class CheckEmailViewModel @Inject constructor(
is CheckEmailAction.Internal.OnboardingFeatureFlagUpdated -> {
handleOnboardingFeatureFlagUpdated(action)
}
-
- CheckEmailAction.LoginClick -> handleLoginClick()
}
}
- private fun handleLoginClick() {
- sendEvent(CheckEmailEvent.NavigateBackToLanding)
- }
-
private fun handleOnboardingFeatureFlagUpdated(
action: CheckEmailAction.Internal.OnboardingFeatureFlagUpdated,
) {
@@ -100,11 +94,6 @@ sealed class CheckEmailEvent {
* Navigate to email app.
*/
data object NavigateToEmailApp : CheckEmailEvent()
-
- /**
- * Navigate back to Landing
- */
- data object NavigateBackToLanding : CheckEmailEvent()
}
/**
@@ -126,11 +115,6 @@ sealed class CheckEmailAction {
*/
data object OpenEmailClick : CheckEmailAction()
- /**
- * User clicked log in.
- */
- data object LoginClick : CheckEmailAction()
-
/**
* Denotes an internal action.
*/
diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/checkemail/handlers/CheckEmailHandler.kt b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/checkemail/handlers/CheckEmailHandler.kt
index 6aef50f02a..1dac216c4a 100644
--- a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/checkemail/handlers/CheckEmailHandler.kt
+++ b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/checkemail/handlers/CheckEmailHandler.kt
@@ -12,7 +12,6 @@ class CheckEmailHandler(
val onOpenEmailAppClick: () -> Unit,
val onChangeEmailClick: () -> Unit,
val onBackClick: () -> Unit,
- val onLoginClick: () -> Unit,
) {
@Suppress("UndocumentedPublicClass")
companion object {
@@ -22,7 +21,6 @@ class CheckEmailHandler(
fun create(viewModel: CheckEmailViewModel) = CheckEmailHandler(
onChangeEmailClick = { viewModel.trySendAction(CheckEmailAction.ChangeEmailClick) },
onOpenEmailAppClick = { viewModel.trySendAction(CheckEmailAction.OpenEmailClick) },
- onLoginClick = { viewModel.trySendAction(CheckEmailAction.LoginClick) },
onBackClick = { viewModel.trySendAction(CheckEmailAction.BackClick) },
)
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 61c41c8734..56f51a39bd 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -940,7 +940,7 @@ Do you want to switch to this account?
User verification
Create account on
Create account on:
- Follow the instructions in the email sent to %1$s to continue creating your account.
+ Follow the instructions in the email sent to %1$s to continue creating your account.
We sent an email to %1$s.
By continuing, you agree to the Terms of Service and Privacy Policy
Set password
diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/checkemail/CheckEmailScreenTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/checkemail/CheckEmailScreenTest.kt
index 878054fc99..34ce7197e1 100644
--- a/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/checkemail/CheckEmailScreenTest.kt
+++ b/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/checkemail/CheckEmailScreenTest.kt
@@ -7,7 +7,6 @@ import androidx.compose.ui.test.performScrollTo
import com.x8bit.bitwarden.data.platform.repository.util.bufferedMutableSharedFlow
import com.x8bit.bitwarden.ui.platform.base.BaseComposeTest
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
-import com.x8bit.bitwarden.ui.util.assertLinkAnnotationIsAppliedAndInvokeClickAction
import io.mockk.every
import io.mockk.just
import io.mockk.mockk
@@ -23,7 +22,6 @@ class CheckEmailScreenTest : BaseComposeTest() {
every { startDefaultEmailApplication() } just runs
}
private var onNavigateBackCalled = false
- private var onNavigateToLandingCalled = false
private val mutableStateFlow = MutableStateFlow(DEFAULT_STATE)
private val mutableEventFlow = bufferedMutableSharedFlow()
@@ -37,7 +35,6 @@ class CheckEmailScreenTest : BaseComposeTest() {
composeTestRule.setContent {
CheckEmailScreen(
onNavigateBack = { onNavigateBackCalled = true },
- onNavigateBackToLanding = { onNavigateToLandingCalled = true },
viewModel = viewModel,
intentManager = intentManager,
)
@@ -66,12 +63,6 @@ class CheckEmailScreenTest : BaseComposeTest() {
}
}
- @Test
- fun `login button click should send LoginTap action`() {
- mutableEventFlow.tryEmit(CheckEmailEvent.NavigateBackToLanding)
- assertTrue(onNavigateToLandingCalled)
- }
-
@Test
fun `NavigateBack should call onNavigateBack`() {
mutableEventFlow.tryEmit(CheckEmailEvent.NavigateBack)
@@ -86,28 +77,6 @@ class CheckEmailScreenTest : BaseComposeTest() {
}
}
- @Test
- fun `go back and update email text click should send ChangeEmailClick action`() {
- mutableStateFlow.value = DEFAULT_STATE.copy(showNewOnboardingUi = false)
- val mainString = "No email? Go back to edit your email address."
- composeTestRule.assertLinkAnnotationIsAppliedAndInvokeClickAction(
- mainString = mainString,
- )
-
- verify { viewModel.trySendAction(CheckEmailAction.ChangeEmailClick) }
- }
-
- @Test
- fun `already have account text click should send ChangeEmailClick action`() {
- mutableStateFlow.value = DEFAULT_STATE.copy(showNewOnboardingUi = false)
- val mainString = "Or log in, you may already have an account."
- composeTestRule.assertLinkAnnotationIsAppliedAndInvokeClickAction(
- mainString = mainString,
- )
-
- verify { viewModel.trySendAction(CheckEmailAction.LoginClick) }
- }
-
@Test
fun `change email button click should send ChangeEmailClick action`() {
mutableStateFlow.value = DEFAULT_STATE.copy(showNewOnboardingUi = true)
diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/checkemail/CheckEmailViewModelTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/checkemail/CheckEmailViewModelTest.kt
index d88bfed08b..e269c6b54c 100644
--- a/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/checkemail/CheckEmailViewModelTest.kt
+++ b/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/checkemail/CheckEmailViewModelTest.kt
@@ -84,18 +84,6 @@ class CheckEmailViewModelTest : BaseViewModelTest() {
assertEquals(expectedState, viewModel.stateFlow.value)
}
- @Test
- fun `OnLoginClick action should send NavigateToLanding event`() = runTest {
- val viewModel = createViewModel()
- viewModel.eventFlow.test {
- viewModel.trySendAction(CheckEmailAction.LoginClick)
- assertEquals(
- CheckEmailEvent.NavigateBackToLanding,
- awaitItem(),
- )
- }
- }
-
private fun createViewModel(state: CheckEmailState? = null): CheckEmailViewModel =
CheckEmailViewModel(
featureFlagManager = featureFlagManager,