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

View File

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