package
com.example.firebaseproject
import
android.annotation.SuppressLint
import
android.content.Context
import
android.os.Bundle
import
android.widget.Toast
import
androidx.activity.ComponentActivity
import
androidx.activity.compose.setContent
import
androidx.compose.foundation.background
import
androidx.compose.foundation.layout.*
import
androidx.compose.material.*
import
androidx.compose.runtime.*
import
androidx.compose.ui.Alignment
import
androidx.compose.ui.Modifier
import
androidx.compose.ui.graphics.Color
import
androidx.compose.ui.platform.LocalContext
import
androidx.compose.ui.text.TextStyle
import
androidx.compose.ui.text.font.FontWeight
import
androidx.compose.ui.text.input.TextFieldValue
import
androidx.compose.ui.text.style.TextAlign
import
androidx.compose.ui.unit.dp
import
androidx.compose.ui.unit.sp
import
com.example.firebaseproject.ui.theme.FirebaseProjectTheme
import
com.example.firebaseproject.ui.theme.greenColor
import
com.google.firebase.database.*
class
MainActivity : ComponentActivity() {
@SuppressLint
(
"UnrememberedMutableState"
)
override fun onCreate(savedInstanceState: Bundle?) {
super
.onCreate(savedInstanceState)
setContent {
FirebaseProjectTheme {
Surface(
modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background
) {
Scaffold(
topBar = {
TopAppBar(backgroundColor = greenColor,
title = {
Text(
text =
"GFG"
,
modifier = Modifier.fillMaxWidth(),
textAlign = TextAlign.Center,
color = Color.White
)
})
}) {
val firebaseDatabase = FirebaseDatabase.getInstance();
val databaseReference = firebaseDatabase.getReference(
"EmployeeInfo"
);
firebaseUI(LocalContext.current, databaseReference)
}
}
}
}
}
}
@Composable
fun firebaseUI(context: Context, databaseReference: DatabaseReference) {
val name = remember {
mutableStateOf(TextFieldValue())
}
val address = remember {
mutableStateOf(TextFieldValue())
}
val contactNumber = remember {
mutableStateOf(TextFieldValue())
}
Column(
modifier = Modifier
.fillMaxHeight()
.fillMaxWidth()
.background(Color.White),
verticalArrangement = Arrangement.Top, horizontalAlignment = Alignment.CenterHorizontally
) {
Text(
text =
"Add data to Firebase Realtime Database"
,
modifier = Modifier.padding(
10
.dp),
style = TextStyle(
color = Color.Black, fontSize =
20
.sp
), fontWeight = FontWeight.Bold
)
TextField(
value = name.value,
onValueChange = { name.value = it },
placeholder = { Text(text =
"Enter your Name"
) },
modifier = Modifier
.padding(
16
.dp)
.fillMaxWidth(),
textStyle = TextStyle(color = Color.Black, fontSize =
15
.sp),
singleLine =
true
,
)
Spacer(modifier = Modifier.height(
10
.dp))
TextField(
value = contactNumber.value,
onValueChange = { contactNumber.value = it },
placeholder = { Text(text =
"Enter your contact number"
) },
modifier = Modifier
.padding(
16
.dp)
.fillMaxWidth(),
textStyle = TextStyle(color = Color.Black, fontSize =
15
.sp),
singleLine =
true
,
)
Spacer(modifier = Modifier.height(
10
.dp))
TextField(
value = address.value,
onValueChange = { address.value = it },
placeholder = { Text(text =
"Enter your address"
) },
modifier = Modifier
.padding(
16
.dp)
.fillMaxWidth(),
textStyle = TextStyle(color = Color.Black, fontSize =
15
.sp),
singleLine =
true
,
)
Spacer(modifier = Modifier.height(
10
.dp))
Button(
onClick = {
val empObj =
EmployeeObj(name.value.text, contactNumber.value.text, address.value.text);
databaseReference.addValueEventListener(object : ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
databaseReference.setValue(empObj)
Toast.makeText(
context,
"Data added to Firebase Database"
,
Toast.LENGTH_SHORT
).show()
}
override fun onCancelled(error: DatabaseError) {
Toast.makeText(
context,
"Fail to add data $error"
,
Toast.LENGTH_SHORT
).show()
}
})
},
modifier = Modifier
.fillMaxWidth()
.padding(
16
.dp)
) {
Text(text =
"Add Employee Details"
, modifier = Modifier.padding(
8
.dp))
}
}
}