Skip to content

Commit 94fa030

Browse files
committed
feat: add back navigation support to authentication screens
1 parent fee795e commit 94fa030

6 files changed

Lines changed: 53 additions & 3 deletions

File tree

auth/src/main/java/com/firebase/ui/auth/ui/screens/email/EmailAuthScreen.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -385,7 +385,8 @@ private fun DefaultEmailAuthContent(
385385
onPasswordChange = state.onPasswordChange,
386386
onConfirmPasswordChange = state.onConfirmPasswordChange,
387387
onSignUpClick = state.onSignUpClick,
388-
onGoToSignIn = state.onGoToSignIn
388+
onGoToSignIn = state.onGoToSignIn,
389+
onNavigateBack = onCancel
389390
)
390391
}
391392

@@ -397,7 +398,8 @@ private fun DefaultEmailAuthContent(
397398
resetLinkSent = state.resetLinkSent,
398399
onEmailChange = state.onEmailChange,
399400
onSendResetLink = state.onSendResetLinkClick,
400-
onGoToSignIn = state.onGoToSignIn
401+
onGoToSignIn = state.onGoToSignIn,
402+
onNavigateBack = onCancel
401403
)
402404
}
403405
}

auth/src/main/java/com/firebase/ui/auth/ui/screens/email/ResetPasswordUI.kt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,14 @@ import androidx.compose.foundation.layout.padding
2424
import androidx.compose.foundation.layout.safeDrawingPadding
2525
import androidx.compose.foundation.layout.size
2626
import androidx.compose.foundation.layout.width
27+
import androidx.compose.material.icons.Icons
28+
import androidx.compose.material.icons.automirrored.filled.ArrowBack
2729
import androidx.compose.material3.AlertDialog
2830
import androidx.compose.material3.Button
2931
import androidx.compose.material3.CircularProgressIndicator
3032
import androidx.compose.material3.ExperimentalMaterial3Api
33+
import androidx.compose.material3.Icon
34+
import androidx.compose.material3.IconButton
3135
import androidx.compose.material3.MaterialTheme
3236
import androidx.compose.material3.Scaffold
3337
import androidx.compose.material3.Text
@@ -63,6 +67,7 @@ fun ResetPasswordUI(
6367
onEmailChange: (String) -> Unit,
6468
onSendResetLink: () -> Unit,
6569
onGoToSignIn: () -> Unit,
70+
onNavigateBack: (() -> Unit)? = null,
6671
) {
6772

6873
val context = LocalContext.current
@@ -115,6 +120,16 @@ fun ResetPasswordUI(
115120
title = {
116121
Text(stringProvider.recoverPasswordPageTitle)
117122
},
123+
navigationIcon = {
124+
if (onNavigateBack != null) {
125+
IconButton(onClick = onNavigateBack) {
126+
Icon(
127+
imageVector = Icons.AutoMirrored.Filled.ArrowBack,
128+
contentDescription = stringProvider.backAction
129+
)
130+
}
131+
}
132+
},
118133
colors = AuthUITheme.topAppBarColors
119134
)
120135
},

auth/src/main/java/com/firebase/ui/auth/ui/screens/email/SignUpUI.kt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,13 @@ import androidx.compose.foundation.layout.size
2424
import androidx.compose.foundation.layout.width
2525
import androidx.compose.foundation.rememberScrollState
2626
import androidx.compose.foundation.verticalScroll
27+
import androidx.compose.material.icons.Icons
28+
import androidx.compose.material.icons.automirrored.filled.ArrowBack
2729
import androidx.compose.material3.Button
2830
import androidx.compose.material3.CircularProgressIndicator
2931
import androidx.compose.material3.ExperimentalMaterial3Api
32+
import androidx.compose.material3.Icon
33+
import androidx.compose.material3.IconButton
3034
import androidx.compose.material3.Scaffold
3135
import androidx.compose.material3.Text
3236
import androidx.compose.material3.TopAppBar
@@ -65,6 +69,7 @@ fun SignUpUI(
6569
onConfirmPasswordChange: (String) -> Unit,
6670
onGoToSignIn: () -> Unit,
6771
onSignUpClick: () -> Unit,
72+
onNavigateBack: (() -> Unit)? = null,
6873
) {
6974
val provider = configuration.providers.filterIsInstance<AuthProvider.Email>().first()
7075
val context = LocalContext.current
@@ -105,6 +110,16 @@ fun SignUpUI(
105110
title = {
106111
Text(stringProvider.signupPageTitle)
107112
},
113+
navigationIcon = {
114+
if (onNavigateBack != null) {
115+
IconButton(onClick = onNavigateBack) {
116+
Icon(
117+
imageVector = Icons.AutoMirrored.Filled.ArrowBack,
118+
contentDescription = stringProvider.backAction
119+
)
120+
}
121+
}
122+
},
108123
colors = AuthUITheme.topAppBarColors
109124
)
110125
},

auth/src/main/java/com/firebase/ui/auth/ui/screens/phone/EnterVerificationCodeUI.kt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,13 @@ import androidx.compose.foundation.layout.safeDrawingPadding
2424
import androidx.compose.foundation.layout.size
2525
import androidx.compose.foundation.rememberScrollState
2626
import androidx.compose.foundation.verticalScroll
27+
import androidx.compose.material.icons.Icons
28+
import androidx.compose.material.icons.automirrored.filled.ArrowBack
2729
import androidx.compose.material3.Button
2830
import androidx.compose.material3.CircularProgressIndicator
2931
import androidx.compose.material3.ExperimentalMaterial3Api
32+
import androidx.compose.material3.Icon
33+
import androidx.compose.material3.IconButton
3034
import androidx.compose.material3.MaterialTheme
3135
import androidx.compose.material3.Scaffold
3236
import androidx.compose.material3.Text
@@ -66,6 +70,7 @@ fun EnterVerificationCodeUI(
6670
onResendCodeClick: () -> Unit,
6771
onChangeNumberClick: () -> Unit,
6872
title: String? = null,
73+
onNavigateBack: (() -> Unit)? = null,
6974
) {
7075
val context = LocalContext.current
7176
val stringProvider = LocalAuthUIStringProvider.current
@@ -88,6 +93,16 @@ fun EnterVerificationCodeUI(
8893
title = {
8994
Text(title ?: stringProvider.verifyPhoneNumber)
9095
},
96+
navigationIcon = {
97+
if (onNavigateBack != null) {
98+
IconButton(onClick = onNavigateBack) {
99+
Icon(
100+
imageVector = Icons.AutoMirrored.Filled.ArrowBack,
101+
contentDescription = stringProvider.backAction
102+
)
103+
}
104+
}
105+
},
91106
colors = AuthUITheme.topAppBarColors
92107
)
93108
},

auth/src/main/java/com/firebase/ui/auth/ui/screens/phone/PhoneAuthScreen.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,8 @@ private fun DefaultPhoneAuthContent(
344344
onVerificationCodeChange = state.onVerificationCodeChange,
345345
onVerifyCodeClick = state.onVerifyCodeClick,
346346
onResendCodeClick = state.onResendCodeClick,
347-
onChangeNumberClick = state.onChangeNumberClick
347+
onChangeNumberClick = state.onChangeNumberClick,
348+
onNavigateBack = onCancel
348349
)
349350
}
350351
}

e2eTest/src/test/java/com/firebase/ui/auth/ui/AccessibilityTest.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import androidx.compose.ui.text.input.ImeAction
1919
import androidx.compose.ui.text.input.KeyboardType
2020
import androidx.compose.ui.unit.LayoutDirection
2121
import androidx.test.core.app.ApplicationProvider
22+
import com.firebase.ui.auth.FirebaseAuthUI
2223
import com.firebase.ui.auth.configuration.authUIConfiguration
2324
import com.firebase.ui.auth.configuration.auth_provider.AuthProvider
2425
import com.firebase.ui.auth.configuration.string_provider.DefaultAuthUIStringProvider
@@ -28,6 +29,7 @@ import com.firebase.ui.auth.ui.components.AuthTextField
2829
import com.firebase.ui.auth.ui.components.CountrySelector
2930
import com.firebase.ui.auth.ui.components.QrCodeImage
3031
import com.firebase.ui.auth.ui.components.VerificationCodeInputField
32+
import com.firebase.ui.auth.ui.screens.email.EmailAuthScreen
3133
import com.firebase.ui.auth.ui.screens.email.SignInUI
3234
import com.firebase.ui.auth.ui.screens.phone.EnterPhoneNumberUI
3335
import com.firebase.ui.auth.util.CountryUtils

0 commit comments

Comments
 (0)