Skip to content

Commit

Permalink
snackbar implemented
Browse files Browse the repository at this point in the history
  • Loading branch information
mustfaunlu committed Aug 25, 2023
1 parent b8a7b87 commit 475bb74
Show file tree
Hide file tree
Showing 2 changed files with 103 additions and 43 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,16 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
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.setValue
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.input.KeyboardType
Expand All @@ -37,9 +40,9 @@ import com.mustafaunlu.ecommerce_compose.R
import com.mustafaunlu.ecommerce_compose.common.ScreenState
import com.mustafaunlu.ecommerce_compose.domain.entity.user.FirebaseSignInUserEntity
import com.mustafaunlu.ecommerce_compose.ui.Error
import com.mustafaunlu.ecommerce_compose.ui.Loading
import com.mustafaunlu.ecommerce_compose.ui.uiData.UserInformationUiData
import com.mustafaunlu.ecommerce_compose.ui.viewModels.SigInViewModel
import kotlinx.coroutines.delay

@Composable
fun SignInRoute(
Expand Down Expand Up @@ -77,24 +80,38 @@ fun SuccessScreen(
}

is ScreenState.Error -> {
Error(message = R.string.error)
Error(message = loginState.message)
}
}
}
}

@OptIn(ExperimentalComposeUiApi::class)
@Composable
fun SignInScreen(
onSignInButtonClicked: (FirebaseSignInUserEntity) -> Unit,
onGoSignUpButtonClicked: () -> Unit,
) {

var showSnackbar by remember {
mutableStateOf(false)
}

LaunchedEffect(key1 = showSnackbar) {
if (showSnackbar) {
delay(2000)
showSnackbar = false
}
}

Column(
modifier = Modifier
.fillMaxSize()
.padding(16.dp),
) {
Spacer(modifier = Modifier.height(80.dp))

val keyboardController = LocalSoftwareKeyboardController.current
var email by remember { mutableStateOf("") }
var password by remember { mutableStateOf("") }
var showSheet by remember { mutableStateOf(false) }
Expand Down Expand Up @@ -153,12 +170,20 @@ fun SignInScreen(

Button(
onClick = {
onSignInButtonClicked(
FirebaseSignInUserEntity(
email = email,
password = password,
),
)
if (
email.isNotEmpty() &&
password.isNotEmpty()
) {
onSignInButtonClicked(
FirebaseSignInUserEntity(
email = email,
password = password,
),
)
} else {
keyboardController?.hide()
showSnackbar = true
}
},
modifier = Modifier.fillMaxWidth(),
) {
Expand Down Expand Up @@ -189,7 +214,20 @@ fun SignInScreen(
)
}

Spacer(modifier = Modifier.height(16.dp))
Spacer(modifier = Modifier.weight(1f))

if (showSnackbar) {
androidx.compose.material.Snackbar(
modifier = Modifier.padding(16.dp),
backgroundColor = MaterialTheme.colorScheme.primary,
shape = MaterialTheme.shapes.medium
) {
Text(
text = stringResource(id = R.string.please_not_blanks),
color = MaterialTheme.colorScheme.onPrimary
)
}
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,16 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
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.setValue
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.input.KeyboardType
Expand All @@ -34,6 +37,7 @@ import com.mustafaunlu.ecommerce_compose.R
import com.mustafaunlu.ecommerce_compose.common.ScreenState
import com.mustafaunlu.ecommerce_compose.ui.uiData.UserInformationUiData
import com.mustafaunlu.ecommerce_compose.ui.viewModels.SignUpViewModel
import kotlinx.coroutines.delay

@Composable
fun SignUpRoute(
Expand All @@ -51,6 +55,7 @@ fun SignUpRoute(
)
}

@OptIn(ExperimentalComposeUiApi::class)
@Composable
fun SignUpScreen(
onCreateAccountButtonClicked: (UserInformationUiData) -> Unit,
Expand All @@ -64,11 +69,23 @@ fun SignUpScreen(
) {
Spacer(modifier = Modifier.height(16.dp))

var showSnackbar by remember {
mutableStateOf(false)
}

LaunchedEffect(key1 = showSnackbar) {
if (showSnackbar) {
delay(2000)
showSnackbar = false
}
}

var name by remember { mutableStateOf("") }
var surname by remember { mutableStateOf("") }
var email by remember { mutableStateOf("") }
var phone by remember { mutableStateOf("") }
var password by remember { mutableStateOf("") }
val keyboardController = LocalSoftwareKeyboardController.current
OutlinedTextField(
value = name,
onValueChange = { name = it },
Expand Down Expand Up @@ -158,14 +175,29 @@ fun SignUpScreen(

Button(
onClick = {
checkEmptyFields(
email = email,
password = password,
name = name,
surname = surname,
phone = phone,
onSuccess = onCreateAccountButtonClicked,
)
if (
name.isNotEmpty() &&
surname.isNotEmpty() &&
email.isNotEmpty() &&
phone.isNotEmpty() &&
password.isNotEmpty()
) {
onCreateAccountButtonClicked(
UserInformationUiData(
id = "",
name = name,
surname = surname,
email = email,
phone = phone,
password = password,
image = "",
token = "",
),
)
} else {
keyboardController?.hide()
showSnackbar = true
}
},
modifier = Modifier.fillMaxWidth(),
) {
Expand Down Expand Up @@ -195,31 +227,21 @@ fun SignUpScreen(
}),
)
}
}
}

private fun checkEmptyFields(
email: String,
password: String,
name: String,
surname: String,
phone: String,
onSuccess: (UserInformationUiData) -> Unit,
) {
if (email.isNotEmpty() && password.isNotEmpty() && name.isNotEmpty() && surname.isNotEmpty()) {
onSuccess(
UserInformationUiData(
id = "",
name = name,
surname = surname,
email = email,
phone = phone,
image = "",
password = password,
token = "",
),
)
} else {
// Handle empty fields
Spacer(modifier = Modifier.weight(1f))

if (showSnackbar) {
androidx.compose.material.Snackbar(
modifier = Modifier.padding(16.dp),
backgroundColor = MaterialTheme.colorScheme.primary,
shape = MaterialTheme.shapes.medium
) {
Text(
text = stringResource(id = R.string.please_not_blanks),
color = MaterialTheme.colorScheme.onPrimary
)
}

}
}
}
}

0 comments on commit 475bb74

Please sign in to comment.