This commit is contained in:
sathwikcs
2024-10-18 12:19:57 +05:30
parent a46ba87d44
commit 498bb1a38e
3 changed files with 40 additions and 16 deletions

View File

@@ -1,20 +1,18 @@
package `in`.sminnovations.attendanceapp.screens.settings.components package `in`.sminnovations.attendanceapp.screens.settings.ui.components
import androidx.compose.foundation.Image import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.Icon import androidx.compose.material3.Button
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
@@ -23,19 +21,28 @@ import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.navigation.NavController
import androidx.navigation.compose.rememberNavController
import `in`.sminnovations.attendanceapp.R import `in`.sminnovations.attendanceapp.R
import `in`.sminnovations.attendanceapp.screens.settings.data.EmployeeDataSettings
import `in`.sminnovations.attendanceapp.screens.settings.viewModel.SettingsViewModel
@Composable @Composable
fun TopComponents( fun TopComponents(
navController: NavController,
settingsViewModel: SettingsViewModel = hiltViewModel()
) { ) {
val employeeDataSettings by settingsViewModel.employeeDataSettings.collectAsState(
initial = EmployeeDataSettings()
)
Column( Column(
modifier = Modifier modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally
.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally
) { ) {
Image( Image(
painter = painterResource(id = R.drawable.smi_logo), // replace with your image resource painter = painterResource(id = R.drawable.smi_logo),
contentDescription = "Profile Photo", contentDescription = "Profile Photo",
contentScale = ContentScale.Crop, contentScale = ContentScale.Crop,
modifier = Modifier modifier = Modifier
@@ -46,7 +53,7 @@ fun TopComponents(
Spacer(modifier = Modifier.height(16.dp)) Spacer(modifier = Modifier.height(16.dp))
Text( Text(
text = "Sathwik C S", text = employeeDataSettings.name,
style = MaterialTheme.typography.titleMedium, style = MaterialTheme.typography.titleMedium,
fontWeight = FontWeight.Bold, fontWeight = FontWeight.Bold,
fontSize = 20.sp, fontSize = 20.sp,
@@ -56,7 +63,7 @@ fun TopComponents(
Spacer(modifier = Modifier.height(8.dp)) Spacer(modifier = Modifier.height(8.dp))
Text( Text(
text = "ID: 69420", text = "ID: ${employeeDataSettings.id}",
style = MaterialTheme.typography.bodyMedium, style = MaterialTheme.typography.bodyMedium,
color = MaterialTheme.colorScheme.onSurfaceVariant, color = MaterialTheme.colorScheme.onSurfaceVariant,
fontSize = 16.sp fontSize = 16.sp
@@ -65,10 +72,17 @@ fun TopComponents(
Spacer(modifier = Modifier.height(4.dp)) Spacer(modifier = Modifier.height(4.dp))
Text( Text(
text = "Android Developer", text = employeeDataSettings.designation,
style = MaterialTheme.typography.bodyMedium, style = MaterialTheme.typography.bodyMedium,
color = MaterialTheme.colorScheme.primary, color = MaterialTheme.colorScheme.primary,
fontSize = 16.sp fontSize = 16.sp
) )
Spacer(modifier = Modifier.height(8.dp))
Button(onClick = {
settingsViewModel.logout()
navController.navigate("login")
}) {
Text(text = "Log out")
}
} }
} }

View File

@@ -1,4 +1,4 @@
package `in`.sminnovations.attendanceapp.screens.settings.components.settingsComponents package `in`.sminnovations.attendanceapp.screens.settings.ui.components.settingsComponents
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column

View File

@@ -2,17 +2,27 @@ package `in`.sminnovations.attendanceapp.screens.settings.viewModel
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import com.google.firebase.firestore.FirebaseFirestore
import dagger.hilt.android.lifecycle.HiltViewModel import dagger.hilt.android.lifecycle.HiltViewModel
import `in`.sminnovations.attendanceapp.data.dataStore.EmployeeRepository
import `in`.sminnovations.attendanceapp.screens.login.data.LoginDataStore import `in`.sminnovations.attendanceapp.screens.login.data.LoginDataStore
import `in`.sminnovations.attendanceapp.screens.settings.data.EmployeeDataSettings
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import javax.inject.Inject import javax.inject.Inject
@HiltViewModel @HiltViewModel
class SettingsViewModel @Inject constructor( class SettingsViewModel @Inject constructor(
private val loginDataStore: LoginDataStore, private val loginDataStore: LoginDataStore,
private val firebaseFirestore: FirebaseFirestore private val employeeRepository: EmployeeRepository
) : ViewModel() { ) : ViewModel() {
val employeeDataSettings : Flow<EmployeeDataSettings> = employeeRepository.getEmployeeDataSettings()
fun logout() {
viewModelScope.launch {
loginDataStore.clearLoginData()
}
}