Kaynağa Gözat

Worked on Forgot Password and forgot password verify screen, navigation and structure

Khubaib 1 ay önce
ebeveyn
işleme
4cbbd23ba9

+ 8 - 0
.idea/deploymentTargetSelector.xml

@@ -4,6 +4,14 @@
     <selectionStates>
       <SelectionState runConfigName="app">
         <option name="selectionMode" value="DROPDOWN" />
+        <DropdownSelection timestamp="2024-12-04T09:59:02.271526672Z">
+          <Target type="DEFAULT_BOOT">
+            <handle>
+              <DeviceId pluginId="PhysicalDevice" identifier="serial=1C051FDF60048Z" />
+            </handle>
+          </Target>
+        </DropdownSelection>
+        <DialogSelection />
       </SelectionState>
     </selectionStates>
   </component>

+ 5 - 1
app/src/main/AndroidManifest.xml

@@ -17,7 +17,11 @@
             android:name=".MainActivity"
             android:exported="true"
             android:label="@string/app_name"
-            android:theme="@style/Theme.FastestPass">
+            android:theme="@style/Theme.MyApp.Splash"
+            >
+<!--            <meta-data-->
+<!--                android:name="android.support.splashscreen.SPLASH_SCREEN_THEME"-->
+<!--                android:resource="@style/Theme.MyApp.Splash.Fallback" />-->
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
 

+ 19 - 0
app/src/main/java/com/fastest/pass/forgotpassword/di/ForgotPasswordVerifyModule.kt

@@ -0,0 +1,19 @@
+package com.fastest.pass.forgotpassword.di
+
+import com.fastest.pass.forgotpassword.utils.ForgotPasswordVerifyNavigation
+import dagger.Module
+import dagger.Provides
+import dagger.hilt.InstallIn
+import dagger.hilt.components.SingletonComponent
+import javax.inject.Singleton
+
+@Module
+@InstallIn(SingletonComponent::class)
+object ForgotPasswordVerifyModule {
+
+    @Provides
+    @Singleton
+    fun provideNavigation(): ForgotPasswordVerifyNavigation {
+        return ForgotPasswordVerifyNavigation()
+    }
+}

+ 10 - 5
app/src/main/java/com/fastest/pass/forgotpassword/presentation/components/ForgotPasswordScreen.kt

@@ -49,7 +49,8 @@ import androidx.compose.ui.unit.sp
 import com.fastest.pass.R
 
 enum class ClickType {
-    GO_BACK
+    GO_BACK,
+    OPEN_FORGOT_VERIFY
 }
 
 @Composable
@@ -84,7 +85,9 @@ fun ForgotPasswordScreen(clickType: (ClickType) -> Unit) {
                 ForgotText()
                 LoginTextFieldFP(keyboardController = keyboardController, focusManager = focusManager)
                 Spacer(modifier = Modifier.height(25.dp))
-                SendCodeButton(buttonText = R.string.send_code)
+                SendCodeButton(buttonText = R.string.send_code) { clickType ->
+                    clickType(clickType)
+                }
             }
 
         }
@@ -213,15 +216,17 @@ fun ColumnScope.LoginTextFieldFP(
 }
 
 @Composable
-fun ColumnScope.SendCodeButton(buttonText: Int) {
+fun ColumnScope.SendCodeButton(buttonText: Int, clickType: (ClickType) -> Unit) {
     Button(
         modifier = Modifier
             .padding(start = 30.dp, end = 30.dp,)
             .background(colorResource(id = R.color.transparent))
             .fillMaxWidth()
             .height(60.dp)
-            .clickable() { },
-        onClick = {},
+            .clickable() {},
+        onClick = {
+            clickType.invoke(ClickType.OPEN_FORGOT_VERIFY)
+        },
         shape = RoundedCornerShape(15.dp),
 //            border = BorderStroke(25.dp, colorResource(id = R.color.black)),
         colors = ButtonDefaults.buttonColors(

+ 319 - 0
app/src/main/java/com/fastest/pass/forgotpassword/presentation/components/ForgotPasswordVerifyScreen.kt

@@ -0,0 +1,319 @@
+package com.fastest.pass.forgotpassword.presentation.components
+
+import androidx.compose.foundation.Image
+import androidx.compose.foundation.background
+import androidx.compose.foundation.border
+import androidx.compose.foundation.clickable
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.ColumnScope
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.statusBarsPadding
+import androidx.compose.foundation.layout.width
+import androidx.compose.foundation.layout.wrapContentHeight
+import androidx.compose.foundation.shape.RoundedCornerShape
+import androidx.compose.foundation.text.ClickableText
+import androidx.compose.foundation.text.KeyboardOptions
+import androidx.compose.material3.Button
+import androidx.compose.material3.ButtonDefaults
+import androidx.compose.material3.IconButton
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Surface
+import androidx.compose.material3.Text
+import androidx.compose.material3.TextField
+import androidx.compose.material3.TextFieldDefaults
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.mutableStateListOf
+import androidx.compose.runtime.remember
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.draw.clip
+import androidx.compose.ui.focus.FocusDirection
+import androidx.compose.ui.focus.FocusManager
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.input.key.Key
+import androidx.compose.ui.input.key.KeyEventType
+import androidx.compose.ui.input.key.key
+import androidx.compose.ui.input.key.onKeyEvent
+import androidx.compose.ui.input.key.type
+import androidx.compose.ui.platform.LocalFocusManager
+import androidx.compose.ui.platform.LocalSoftwareKeyboardController
+import androidx.compose.ui.res.colorResource
+import androidx.compose.ui.res.painterResource
+import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.text.AnnotatedString
+import androidx.compose.ui.text.input.KeyboardType
+import androidx.compose.ui.text.style.TextAlign
+import androidx.compose.ui.unit.dp
+import androidx.compose.ui.unit.sp
+import com.fastest.pass.R
+import com.fastest.pass.login.presentation.components.ClickType
+
+enum class ClickTypeForgotVerify {
+    GO_BACK,
+    GO_TO_CONFIRM_PASSWORD
+}
+
+@Composable
+fun ForgotPasswordVerifyScreen(clickType: (ClickTypeForgotVerify) -> Unit) {
+    Box(
+        modifier = Modifier
+            .background(colorResource(id = R.color.blue_login))
+            .fillMaxSize()
+            .statusBarsPadding()
+    ) {
+        Column(
+            modifier = Modifier
+                .fillMaxSize()
+                .padding(top = 0.dp)
+                .statusBarsPadding()
+        ) {
+            ShowHeaderFPV(text = stringResource(id = R.string.forgot_password)) { clickTypeForgotVerify ->
+                clickType(clickTypeForgotVerify)
+            }
+
+            Column(
+                modifier = Modifier
+                    .fillMaxSize()
+                    .padding(top = 25.dp)
+                    .clip(RoundedCornerShape(topStart = 35.dp, topEnd = 35.dp))
+                    .background(
+                        colorResource(id = R.color.light_gray_login),
+                    )
+            ) {
+                ForgotVerifyText(R.string.enter_verification_code)
+                OTPFields()
+                Spacer(modifier = Modifier.height(25.dp))
+                VerifyButton(buttonText = R.string.verify) { clickTypeForgotVerify ->
+                    clickType(clickTypeForgotVerify)
+                }
+                Spacer(modifier = Modifier.height(15.dp))
+                OTPText(stringResource(id = R.string.enter_otp))
+                OTPText("fastestpass@gmail.com")
+                Spacer(modifier = Modifier.height(20.dp))
+                ResendOTPCode()
+            }
+
+        }
+    }
+}
+
+@Composable
+fun ColumnScope.ShowHeaderFPV(text: String, clickType: (ClickTypeForgotVerify) -> Unit) {
+    Row(
+        modifier = Modifier
+            .align(Alignment.Start)
+            .padding(top = 30.dp)
+            .fillMaxWidth(),
+        verticalAlignment = Alignment.CenterVertically
+    ) {
+        IconButton(
+            onClick = {
+                clickType.invoke(ClickTypeForgotVerify.GO_BACK)
+            },
+            modifier = Modifier
+                .padding(start = 30.dp)
+                .size(24.dp, 24.dp)
+        ) {
+            Image(
+                painter = painterResource(id = R.drawable.arrow_left),
+                contentDescription = "Arrow-Back",
+                modifier = Modifier.size(24.dp, 24.dp)
+            )
+        }
+        Surface(
+            modifier = Modifier
+                .padding(start = 15.dp),
+            color = colorResource(id = R.color.transparent)
+        ) {
+            Text(
+                text = text,
+                color = colorResource(id = R.color.white),
+                style = MaterialTheme.typography.displayLarge.copy(
+                    fontSize = 24.sp
+                ),
+            )
+        }
+    }
+}
+
+@Composable
+fun ColumnScope.ForgotVerifyText(
+    forgotText: Int,
+) {
+    Text(
+        text = stringResource(id = R.string.verify_your_email),
+        color = colorResource(id = R.color.gray_splash),
+        style = MaterialTheme.typography.headlineLarge.copy(
+            fontSize = 26.sp
+        ),
+        lineHeight = 20.sp,
+        modifier = Modifier
+            .align(Alignment.Start)
+            .padding(start = 30.dp, top = 35.dp)
+    )
+    Text(
+        text = stringResource(id = forgotText),
+        color = colorResource(id = R.color.gray_splash),
+        style = MaterialTheme.typography.displayLarge.copy(
+            fontSize = 18.sp
+        ),
+        lineHeight = 25.sp,
+        modifier = Modifier
+            .align(Alignment.Start)
+            .padding(start = 30.dp, top = 5.dp, end = 50.dp)
+
+    )
+}
+
+@Composable
+fun ColumnScope.OTPFields() {
+    val otpLength = 4
+    val keyboardController = LocalSoftwareKeyboardController.current
+    val focusManager = LocalFocusManager.current
+    var otpValues = remember { mutableStateListOf(*Array(otpLength) {""}) }
+
+    Row(
+        modifier = Modifier
+            .fillMaxWidth()
+            .padding(top = 50.dp)
+            .align(Alignment.CenterHorizontally),
+        verticalAlignment = Alignment.CenterVertically,
+        horizontalArrangement = Arrangement.Center
+    ) {
+        for (index in 0 until otpLength) {
+            TextField(
+                value = otpValues[index],
+                onValueChange = { newValue ->
+                    if (newValue.length <= 1) {
+                        otpValues[index] = newValue
+
+                        if (newValue.isNotEmpty() && index < otpLength - 1) {
+                            focusManager.moveFocus(FocusDirection.Next)
+                        }
+                    }
+                },
+                keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number),
+                singleLine = true,
+                maxLines = 1,
+                textStyle = MaterialTheme.typography.displaySmall,
+                modifier = Modifier
+                    .padding(horizontal = 6.dp)
+                    .width(50.dp)
+                    .height(60.dp)
+                    .border(
+                        1.dp,
+                        color = colorResource(id = R.color.gray_border_textfield),
+                        shape = RoundedCornerShape(8.dp)
+                    ),
+//                    .onKeyEvent { event ->
+//                        if (event.type == KeyEventType.KeyDown && event.key == Key.Backspace) {
+//                            if (otpValues[index].isEmpty() && index > 0) {
+//                                focusManager.moveFocus(FocusDirection.Previous)
+//                                otpValues[index - 1] = ""
+//                            }
+//                            true
+//                        } else {
+//                            false
+//                        }
+//                    },
+                colors = TextFieldDefaults.colors(
+                    focusedLabelColor = colorResource(id = R.color.gray_splash),
+                    unfocusedContainerColor = colorResource(id = R.color.transparent),
+                    focusedContainerColor = colorResource(id = R.color.transparent),
+                    focusedIndicatorColor = colorResource(id = R.color.transparent),
+                    disabledIndicatorColor = colorResource(id = R.color.transparent),
+                    unfocusedIndicatorColor = colorResource(id = R.color.transparent),
+                    cursorColor = colorResource(id = R.color.gray_splash),
+                ),
+            )
+        }
+    }
+}
+
+@Composable
+fun ColumnScope.VerifyButton(buttonText: Int, clickType: (ClickTypeForgotVerify) -> Unit) {
+    Button(
+        modifier = Modifier
+            .padding(start = 30.dp, end = 30.dp,)
+            .background(colorResource(id = R.color.transparent))
+            .fillMaxWidth()
+            .height(60.dp)
+            .clickable() {},
+        onClick = {
+            clickType.invoke(ClickTypeForgotVerify.GO_TO_CONFIRM_PASSWORD)
+        },
+        shape = RoundedCornerShape(15.dp),
+//            border = BorderStroke(25.dp, colorResource(id = R.color.black)),
+        colors = ButtonDefaults.buttonColors(
+            contentColor = colorResource(id = R.color.white),
+            containerColor = colorResource(id = R.color.red_login_button),
+        ),
+    )
+    {
+        Text(
+            text = stringResource(id = buttonText),
+            style = MaterialTheme.typography.bodyMedium.copy(
+                fontSize = 20.sp,
+                color = colorResource(id = R.color.white)
+            ),
+            textAlign = TextAlign.Center
+        )
+    }
+}
+
+@Composable
+fun ColumnScope.OTPText(text: String) {
+    Text(
+        text = text,
+        color = colorResource(id = R.color.gray_splash),
+        style = MaterialTheme.typography.displayLarge.copy(
+            fontSize = 18.sp
+        ),
+        lineHeight = 25.sp,
+        modifier = Modifier
+            .align(Alignment.CenterHorizontally)
+            .padding(start = 30.dp, top = 0.dp, end = 50.dp)
+
+    )
+}
+
+@Composable
+fun ColumnScope.ResendOTPCode() {
+    Row(
+        modifier = Modifier
+            .fillMaxWidth()
+            .padding(top = 0.dp)
+            .padding(horizontal = 30.dp),
+        verticalAlignment = Alignment.CenterVertically,
+        horizontalArrangement = Arrangement.Center
+    ) {
+        Text(
+            text = stringResource(id = R.string.need_new_code),
+            color = colorResource(id = R.color.gray_splash),
+            style = MaterialTheme.typography.displayLarge.copy(
+                fontSize = 16.sp
+            ),
+            lineHeight = 25.sp,
+            modifier = Modifier
+        )
+        Spacer(modifier = Modifier.width(3.dp))
+        ClickableText(
+            text = AnnotatedString(stringResource(id = R.string.resend)),
+            onClick = {},
+            style = MaterialTheme.typography.displayLarge.copy(
+                fontSize = 16.sp,
+                lineHeight = 25.sp,
+                color = colorResource(id = R.color.sky_green),
+            ),
+            modifier = Modifier,
+        )
+    }
+}

+ 3 - 0
app/src/main/java/com/fastest/pass/forgotpassword/presentation/ui/ForgotPasswordFragment.kt

@@ -42,6 +42,9 @@ class ForgotPasswordFragment : Fragment() {
                             ClickType.GO_BACK -> {
                                 viewmodel.navigateTo(ForgotPasswordRoute.GoBackToLogin)
                             }
+                            ClickType.OPEN_FORGOT_VERIFY -> {
+                                viewmodel.navigateTo(ForgotPasswordRoute.OpenForgotVerifyScreen)
+                            }
                         }
                     }
                 }

+ 56 - 0
app/src/main/java/com/fastest/pass/forgotpassword/presentation/ui/ForgotPasswordVerifyFragment.kt

@@ -0,0 +1,56 @@
+package com.fastest.pass.forgotpassword.presentation.ui
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.compose.ui.platform.ComposeView
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.viewModels
+import com.fastest.pass.forgotpassword.presentation.components.ClickTypeForgotVerify
+import com.fastest.pass.forgotpassword.presentation.components.ForgotPasswordVerifyScreen
+import com.fastest.pass.forgotpassword.presentation.viewmodels.ForgotPasswordVerifyViewModel
+import com.fastest.pass.forgotpassword.utils.ForgotPasswordVerifyNavigation
+import com.fastest.pass.forgotpassword.utils.ForgotPasswordVerifyRoute
+import com.fastest.pass.ui.theme.FastestPassTheme
+import dagger.hilt.android.AndroidEntryPoint
+import javax.inject.Inject
+
+@AndroidEntryPoint
+class ForgotPasswordVerifyFragment : Fragment() {
+
+    val viewmodel: ForgotPasswordVerifyViewModel by viewModels()
+
+    @Inject
+    lateinit var navigation: ForgotPasswordVerifyNavigation
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        navigation.navigate(this)
+    }
+
+    override fun onCreateView(
+        inflater: LayoutInflater,
+        container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+        return ComposeView(requireActivity()).apply {
+            setContent {
+                FastestPassTheme {
+                    ForgotPasswordVerifyScreen { clickTypeForgotVerify ->
+                        when (clickTypeForgotVerify) {
+                            ClickTypeForgotVerify.GO_BACK -> {
+                                viewmodel.navigateTo(ForgotPasswordVerifyRoute.GoBackToForgotPassword)
+                            }
+                            ClickTypeForgotVerify.GO_TO_CONFIRM_PASSWORD -> {
+
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+
+}

+ 15 - 0
app/src/main/java/com/fastest/pass/forgotpassword/presentation/viewmodels/ForgotPasswordVerifyViewModel.kt

@@ -0,0 +1,15 @@
+package com.fastest.pass.forgotpassword.presentation.viewmodels
+
+import androidx.lifecycle.ViewModel
+import com.fastest.pass.forgotpassword.utils.ForgotPasswordVerifyRoute
+import kotlinx.coroutines.flow.MutableStateFlow
+
+class ForgotPasswordVerifyViewModel : ViewModel() {
+
+    private val _router = MutableStateFlow<ForgotPasswordVerifyRoute>(ForgotPasswordVerifyRoute.OpenNoneScreen)
+    val router: MutableStateFlow<ForgotPasswordVerifyRoute> = _router
+
+    fun navigateTo(forgotPasswordVerifyRoute: ForgotPasswordVerifyRoute) {
+        _router.value = forgotPasswordVerifyRoute
+    }
+}

+ 4 - 0
app/src/main/java/com/fastest/pass/forgotpassword/utils/ForgotPasswordNavigation.kt

@@ -2,6 +2,7 @@ package com.fastest.pass.forgotpassword.utils
 
 import androidx.lifecycle.lifecycleScope
 import androidx.navigation.fragment.findNavController
+import com.fastest.pass.R
 import com.fastest.pass.forgotpassword.presentation.ui.ForgotPasswordFragment
 
 class ForgotPasswordNavigation {
@@ -14,6 +15,9 @@ class ForgotPasswordNavigation {
                     ForgotPasswordRoute.GoBackToLogin -> {
                         forgotPasswordFragment.findNavController().popBackStack()
                     }
+                    ForgotPasswordRoute.OpenForgotVerifyScreen -> {
+                        forgotPasswordFragment.findNavController().navigate(R.id.forgotPasswordVerifyFragment)
+                    }
                 }
 
                 forgotPasswordFragment.viewmodel.navigateTo(ForgotPasswordRoute.OpenNoneScreen)

+ 1 - 0
app/src/main/java/com/fastest/pass/forgotpassword/utils/ForgotPasswordRoute.kt

@@ -3,4 +3,5 @@ package com.fastest.pass.forgotpassword.utils
 sealed class ForgotPasswordRoute {
     data object GoBackToLogin : ForgotPasswordRoute()
     data object OpenNoneScreen : ForgotPasswordRoute()
+    data object OpenForgotVerifyScreen : ForgotPasswordRoute()
 }

+ 27 - 0
app/src/main/java/com/fastest/pass/forgotpassword/utils/ForgotPasswordVerifyNavigation.kt

@@ -0,0 +1,27 @@
+package com.fastest.pass.forgotpassword.utils
+
+import androidx.lifecycle.lifecycleScope
+import androidx.navigation.fragment.findNavController
+import com.fastest.pass.forgotpassword.presentation.ui.ForgotPasswordVerifyFragment
+
+class ForgotPasswordVerifyNavigation {
+
+    fun navigate(forgotPasswordVerifyFragment: ForgotPasswordVerifyFragment) {
+        forgotPasswordVerifyFragment.lifecycleScope.launchWhenStarted {
+            forgotPasswordVerifyFragment.viewmodel.router.collect { router ->
+                when (router) {
+                    ForgotPasswordVerifyRoute.OpenNoneScreen -> {}
+                    ForgotPasswordVerifyRoute.GoBackToForgotPassword -> {
+                        forgotPasswordVerifyFragment.findNavController().popBackStack()
+                    }
+                    ForgotPasswordVerifyRoute.OpenForgotConfirmPasswordScreen -> {
+
+                    }
+                }
+
+                forgotPasswordVerifyFragment.viewmodel.navigateTo(ForgotPasswordVerifyRoute.OpenNoneScreen)
+            }
+        }
+    }
+
+}

+ 7 - 0
app/src/main/java/com/fastest/pass/forgotpassword/utils/ForgotPasswordVerifyRoute.kt

@@ -0,0 +1,7 @@
+package com.fastest.pass.forgotpassword.utils
+
+sealed class ForgotPasswordVerifyRoute {
+    data object GoBackToForgotPassword : ForgotPasswordVerifyRoute()
+    data object OpenForgotConfirmPasswordScreen : ForgotPasswordVerifyRoute()
+    data object OpenNoneScreen : ForgotPasswordVerifyRoute()
+}

+ 1 - 1
app/src/main/java/com/fastest/pass/welcome/presentation/ui/component/WelcomeScreen.kt

@@ -65,7 +65,7 @@ fun WelcomeTutorial(onClick: (ClickType) -> Unit) {
     Column(
         modifier = Modifier
             .fillMaxWidth()
-            .windowInsetsPadding(WindowInsets.navigationBars) // Adds space for system navigation
+//            .windowInsetsPadding(WindowInsets.navigationBars) // Adds space for system navigation
     ) {
         Row(
             modifier = Modifier

+ 5 - 0
app/src/main/res/navigation/nav_graph.xml

@@ -37,4 +37,9 @@
         android:name="com.fastest.pass.mastersignup.presentation.ui.MasterSignUpFragment"
         android:label="MasterSignupFragment" />
 
+    <fragment
+        android:id="@+id/forgotPasswordVerifyFragment"
+        android:name="com.fastest.pass.forgotpassword.presentation.ui.ForgotPasswordVerifyFragment"
+        android:label="ForgotPasswordVerifyFragment" />
+
 </navigation>

+ 17 - 0
app/src/main/res/values-v31/themes.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <style name="Theme.MyApp.Splash" parent="android:Theme.Material.Light.NoActionBar">
+        <item name="android:windowDisablePreview">true</item>
+        <!-- Background color for the splash screen -->
+        <item name="android:windowSplashScreenBackground">@color/gray_splash</item>
+        <!-- Animated icon (app logo) -->
+        <item name="android:windowSplashScreenAnimatedIcon">@color/gray_splash</item>
+        <!-- Duration of the splash animation -->
+        <item name="android:windowSplashScreenAnimationDuration">100</item>
+        <!-- Theme applied after the splash screen -->
+        <item name="android:splashScreenTheme">@style/Theme.MyApp.Splash</item>
+    </style>
+
+
+</resources>

+ 6 - 0
app/src/main/res/values/strings.xml

@@ -22,5 +22,11 @@
     <string name="create_new_account">Hello, please create a new account.</string>
     <string name="create_master_password">Create master password</string>
     <string name="create_master_password_continue">Hello! Please create your master password to continue.</string>
+    <string name="verify_your_email">Verify your email</string>
+    <string name="enter_verification_code">Please enter the verification code from the email you received in your inbox or spam folder.</string>
+    <string name="verify">Verify</string>
+    <string name="enter_otp">Please enter the OTP sent to</string>
+    <string name="need_new_code">Need a new Code?</string>
+    <string name="resend">Resend</string>
 
 </resources>

+ 5 - 0
app/src/main/res/values/themes.xml

@@ -4,6 +4,11 @@
     <style name="Theme.FastestPass" parent="android:Theme.Material.Light.NoActionBar" >
         <item name="android:windowDisablePreview">true</item>
         <item name="android:windowBackground">@color/gray_splash</item>
+        <item name="android:logo">@color/gray_splash</item>
+    </style>
+
+    <style name="Theme.MyApp.Splash.Fallback" parent="android:Theme.Material.Light.NoActionBar">
+        <item name="android:windowBackground">@color/gray_splash</item>
     </style>
 
 </resources>