|
@@ -6,11 +6,9 @@ import androidx.compose.foundation.Image
|
|
|
import androidx.compose.foundation.background
|
|
|
import androidx.compose.foundation.border
|
|
|
import androidx.compose.foundation.gestures.detectTapGestures
|
|
|
-import androidx.compose.foundation.isSystemInDarkTheme
|
|
|
import androidx.compose.foundation.layout.Arrangement
|
|
|
import androidx.compose.foundation.layout.Box
|
|
|
import androidx.compose.foundation.layout.Column
|
|
|
-import androidx.compose.foundation.layout.Row
|
|
|
import androidx.compose.foundation.layout.Spacer
|
|
|
import androidx.compose.foundation.layout.fillMaxHeight
|
|
|
import androidx.compose.foundation.layout.fillMaxSize
|
|
@@ -20,27 +18,23 @@ import androidx.compose.foundation.layout.padding
|
|
|
import androidx.compose.foundation.layout.size
|
|
|
import androidx.compose.foundation.layout.width
|
|
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
|
|
-import androidx.compose.foundation.text.ClickableText
|
|
|
import androidx.compose.foundation.text.KeyboardActions
|
|
|
import androidx.compose.foundation.text.KeyboardOptions
|
|
|
-import androidx.compose.material.icons.Icons
|
|
|
-import androidx.compose.material.icons.filled.ArrowBack
|
|
|
-import androidx.compose.material.icons.filled.Email
|
|
|
-import androidx.compose.material.icons.filled.Lock
|
|
|
-import androidx.compose.material.icons.filled.Visibility
|
|
|
-import androidx.compose.material.icons.filled.VisibilityOff
|
|
|
import androidx.compose.material3.Button
|
|
|
import androidx.compose.material3.ButtonDefaults
|
|
|
import androidx.compose.material3.Icon
|
|
|
import androidx.compose.material3.IconButton
|
|
|
import androidx.compose.material3.MaterialTheme
|
|
|
+import androidx.compose.material3.SnackbarHostState
|
|
|
import androidx.compose.material3.Text
|
|
|
import androidx.compose.material3.TextField
|
|
|
import androidx.compose.material3.TextFieldDefaults
|
|
|
import androidx.compose.runtime.Composable
|
|
|
import androidx.compose.runtime.getValue
|
|
|
+import androidx.compose.runtime.livedata.observeAsState
|
|
|
import androidx.compose.runtime.mutableStateOf
|
|
|
import androidx.compose.runtime.remember
|
|
|
+import androidx.compose.runtime.rememberCoroutineScope
|
|
|
import androidx.compose.runtime.setValue
|
|
|
import androidx.compose.ui.Alignment
|
|
|
import androidx.compose.ui.ExperimentalComposeUiApi
|
|
@@ -54,36 +48,35 @@ 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.text.AnnotatedString
|
|
|
-import androidx.compose.ui.text.TextStyle
|
|
|
-import androidx.compose.ui.text.font.FontFamily
|
|
|
-import androidx.compose.ui.text.font.FontStyle
|
|
|
-import androidx.compose.ui.text.font.FontWeight
|
|
|
import androidx.compose.ui.text.input.ImeAction
|
|
|
import androidx.compose.ui.text.input.KeyboardType
|
|
|
-import androidx.compose.ui.text.input.PasswordVisualTransformation
|
|
|
-import androidx.compose.ui.text.input.VisualTransformation
|
|
|
import androidx.compose.ui.tooling.preview.Preview
|
|
|
import androidx.compose.ui.unit.dp
|
|
|
-import androidx.compose.ui.unit.sp
|
|
|
+import androidx.lifecycle.viewmodel.compose.viewModel
|
|
|
import androidx.navigation.NavHostController
|
|
|
import androidx.navigation.compose.rememberNavController
|
|
|
import com.vpn.fastestvpnservice.R
|
|
|
import com.vpn.fastestvpnservice.beans.isDarkTheme
|
|
|
-import com.vpn.fastestvpnservice.sealedClass.Screen
|
|
|
import com.vpn.fastestvpnservice.ui.theme.customTypography
|
|
|
+import com.vpn.fastestvpnservice.viewmodels.LoginViewModel
|
|
|
+import com.vpn.fastestvpnservice.views.ShowCustomSnackBar
|
|
|
+import kotlinx.coroutines.launch
|
|
|
|
|
|
@OptIn(ExperimentalComposeUiApi::class)
|
|
|
@Composable
|
|
|
fun ForgotPassword(navHostController: NavHostController) {
|
|
|
val keyboardController = LocalSoftwareKeyboardController.current
|
|
|
val focusManager = LocalFocusManager.current
|
|
|
+ val loginViewModel: LoginViewModel = viewModel()
|
|
|
+ val snackBarState = remember { SnackbarHostState() }
|
|
|
+ val coroutineScope = rememberCoroutineScope()
|
|
|
|
|
|
Box(
|
|
|
modifier = Modifier
|
|
|
.paint(
|
|
|
painter = painterResource(id = if (isDarkTheme.value) R.drawable.bg_app else R.drawable.bg_img3),
|
|
|
- contentScale = ContentScale.FillBounds)
|
|
|
+ contentScale = ContentScale.FillBounds
|
|
|
+ )
|
|
|
// .background(
|
|
|
// if (isSystemInDarkTheme()) Color.Black
|
|
|
// else Color.Transparent
|
|
@@ -99,6 +92,8 @@ fun ForgotPassword(navHostController: NavHostController) {
|
|
|
// contentAlignment = Alignment.Center
|
|
|
|
|
|
) {
|
|
|
+ ShowCustomSnackBar(snackBarState, R.color.yellow_text, R.color.dark_blue_gray_text)
|
|
|
+
|
|
|
Column (
|
|
|
modifier = Modifier
|
|
|
.fillMaxHeight()
|
|
@@ -226,9 +221,11 @@ fun ForgotPassword(navHostController: NavHostController) {
|
|
|
|
|
|
Spacer(modifier = Modifier.height(30.dp))
|
|
|
|
|
|
+// val email = basePreferenceHelper.getUser()?.userinfo?.email ?: "test_123"
|
|
|
Button(
|
|
|
onClick = {
|
|
|
Log.d("test_button", "onClick Send Code")
|
|
|
+ loginViewModel.forgotPassword(textChanged)
|
|
|
},
|
|
|
modifier = Modifier
|
|
|
.padding(start = 16.dp, end = 16.dp, bottom = 100.dp)
|
|
@@ -247,6 +244,16 @@ fun ForgotPassword(navHostController: NavHostController) {
|
|
|
style = MaterialTheme.typography.titleMedium
|
|
|
)
|
|
|
Log.d("test_button", "RowScope")
|
|
|
+
|
|
|
+ val forgotPasswordResponse = loginViewModel.liveDataForgotPassword.observeAsState()
|
|
|
+ forgotPasswordResponse.value?.let { data ->
|
|
|
+ Log.d("forgotPassword: ","forgotPassword Screen: ${data.status} ${data.message}")
|
|
|
+
|
|
|
+ coroutineScope.launch {
|
|
|
+ data.message?.let { snackBarState.showSnackbar(it) }
|
|
|
+ }
|
|
|
+ loginViewModel.mutableLiveDataForgotPassword.value = null
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|