feat: refs#6659 WorkerMistakeScreen
This commit is contained in:
parent
4524e3a887
commit
4ceb51b59e
|
@ -0,0 +1,450 @@
|
|||
package es.verdnatura.presentation.view.feature.workermistake.fragment
|
||||
|
||||
import androidx.compose.foundation.clickable
|
||||
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
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.height
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.filled.Close
|
||||
import androidx.compose.material.icons.filled.Search
|
||||
import androidx.compose.material3.Card
|
||||
import androidx.compose.material3.CardDefaults
|
||||
import androidx.compose.material3.HorizontalDivider
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.IconButton
|
||||
import androidx.compose.material3.IconButtonDefaults
|
||||
import androidx.compose.material3.LocalTextStyle
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.OutlinedTextField
|
||||
import androidx.compose.material3.Surface
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TextField
|
||||
import androidx.compose.material3.TextFieldDefaults
|
||||
import androidx.compose.material3.VerticalDivider
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.tooling.preview.PreviewParameter
|
||||
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import androidx.compose.ui.window.Dialog
|
||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
import es.verdnatura.R
|
||||
import es.verdnatura.presentation.composable.CustomToolbar
|
||||
import es.verdnatura.presentation.composable.ui.VerdnaturaColors
|
||||
import es.verdnatura.presentation.view.component.CustomDialogListComposable
|
||||
import es.verdnatura.presentation.view.feature.workermistake.model.DepartmentMistake
|
||||
import es.verdnatura.presentation.view.feature.workermistake.model.WorkerFromMistake
|
||||
|
||||
@Composable
|
||||
fun WorkerMistakeScreen(
|
||||
viewModel: WorkerMistakeViewModel? = null,
|
||||
title: String,
|
||||
onBackClick: () -> Unit = {},
|
||||
|
||||
) {
|
||||
val uiStateWorker by viewModel!!.uiStateWorkerDeparment.collectAsStateWithLifecycle()
|
||||
var filterText by remember { mutableStateOf("") }
|
||||
var showSearchableList by remember { mutableStateOf(false) }
|
||||
|
||||
Box(modifier = Modifier.fillMaxSize()) {
|
||||
|
||||
CustomToolbar(
|
||||
title = title,
|
||||
subtitle = "",
|
||||
showBackButton = true,
|
||||
showSwitch = false,
|
||||
iconList = listOf(),
|
||||
onBackClick = { onBackClick() },
|
||||
onSwitchChange = { },
|
||||
)
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.fillMaxSize()
|
||||
.padding(top = 56.dp)
|
||||
) {
|
||||
Box {
|
||||
HorizontalDivider(
|
||||
color = Color.White, thickness = 1.dp
|
||||
)
|
||||
}
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.height(56.dp),
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
|
||||
TextField(
|
||||
value = filterText,
|
||||
onValueChange = { filterText = it },
|
||||
modifier = Modifier.weight(1f),
|
||||
placeholder = {
|
||||
Text(
|
||||
text = stringResource(R.string.nameSurname),
|
||||
textAlign = TextAlign.Center,
|
||||
color = VerdnaturaColors.BlackTextInput,
|
||||
)
|
||||
},
|
||||
colors = TextFieldDefaults.colors(
|
||||
focusedContainerColor = Color.Transparent,
|
||||
unfocusedContainerColor = Color.Transparent,
|
||||
focusedTextColor = VerdnaturaColors.White,
|
||||
unfocusedTextColor = VerdnaturaColors.BlackTextInput,
|
||||
cursorColor = Color.White,
|
||||
focusedIndicatorColor = Color.DarkGray
|
||||
),
|
||||
singleLine = true,
|
||||
textStyle = LocalTextStyle.current.copy(textAlign = TextAlign.Center)
|
||||
)
|
||||
VerticalDivider(thickness = 4.dp, color = Color.Transparent)
|
||||
Box(modifier = Modifier.weight(1f)) {
|
||||
|
||||
TextField(
|
||||
value = uiStateWorker.departmentSelected.name.ifEmpty {
|
||||
stringResource(R.string.buscarDepartamento)
|
||||
},
|
||||
onValueChange = { },
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.clickable { showSearchableList = true },
|
||||
|
||||
trailingIcon = {
|
||||
Icon(painter = painterResource(id = R.drawable.ic_arrow_drop_down_black_24dp),
|
||||
contentDescription = "Dropdown",
|
||||
modifier = Modifier.clickable {
|
||||
showSearchableList = true
|
||||
viewModel!!.departmentGetHasMistake()
|
||||
})
|
||||
},
|
||||
colors = TextFieldDefaults.colors(
|
||||
focusedContainerColor = Color.Transparent,
|
||||
unfocusedContainerColor = Color.Transparent,
|
||||
focusedTextColor = VerdnaturaColors.OrangeSalix,
|
||||
unfocusedTextColor = VerdnaturaColors.OrangeSalix,
|
||||
focusedIndicatorColor = Color.DarkGray
|
||||
),
|
||||
readOnly = true,
|
||||
singleLine = true,
|
||||
textStyle = LocalTextStyle.current.copy(textAlign = TextAlign.Center)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(
|
||||
start = 8.dp, end = 8.dp, top = 8.dp, bottom = 16.dp
|
||||
), horizontalArrangement = Arrangement.SpaceEvenly
|
||||
) {
|
||||
Text(
|
||||
text = stringResource(id = R.string.name),
|
||||
modifier = Modifier.weight(1.25f),
|
||||
textAlign = TextAlign.Start,
|
||||
color = Color.White,
|
||||
fontSize = 14.sp
|
||||
)
|
||||
|
||||
Text(
|
||||
text = stringResource(id = R.string.surname),
|
||||
modifier = Modifier.weight(1f),
|
||||
textAlign = TextAlign.Center,
|
||||
color = Color.White,
|
||||
fontSize = 14.sp
|
||||
)
|
||||
|
||||
Text(
|
||||
text = "",
|
||||
modifier = Modifier.weight(0.5f),
|
||||
textAlign = TextAlign.Center,
|
||||
color = Color.White,
|
||||
fontSize = 14.sp
|
||||
)
|
||||
}
|
||||
HorizontalDivider(thickness = 1.dp, color = Color.LightGray)
|
||||
|
||||
LazyColumn {
|
||||
items(uiStateWorker.workers.filter {
|
||||
it.firstName.contains(
|
||||
filterText,
|
||||
ignoreCase = true
|
||||
) || it.lastName.contains(filterText, ignoreCase = true)
|
||||
}) { workerItem ->
|
||||
WorkerMistakeItem(workerItem) { viewModel!!.setWorkerSelected(workerItem) }
|
||||
HorizontalDivider(thickness = 1.dp, color = Color.DarkGray)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (uiStateWorker.workerSelected.id != null) {
|
||||
CustomDialogListComposable(
|
||||
title = uiStateWorker.workerSelected.firstName,
|
||||
buttonOkText = "Cancelar",
|
||||
description = "Causa del error:",
|
||||
showRecyclerView = true,
|
||||
recyclerViewItems = uiStateWorker.mistakeTypes.map { it.description },
|
||||
onItemSelected = { item ->
|
||||
println("Item selected: $item")
|
||||
uiStateWorker.mistakeTypes.find { it.description == item }?.let {
|
||||
viewModel!!.workerMistakeAdd(uiStateWorker.workerSelected.id!!, it.code)
|
||||
}
|
||||
},
|
||||
showTextInput = false,
|
||||
onOkClick = { viewModel!!.setWorkerSelected(WorkerFromMistake()) }
|
||||
)
|
||||
}
|
||||
|
||||
if (showSearchableList) {
|
||||
SearchableDepartmentsList(modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.align(Alignment.TopStart),
|
||||
onDepartmentSelected = { department ->
|
||||
viewModel!!.setDepartment(departmentSelected = department)
|
||||
showSearchableList = false
|
||||
},
|
||||
departmentList = uiStateWorker.departments,
|
||||
onDismiss = { showSearchableList = false })
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun WorkerMistakeItem(workerItem: WorkerFromMistake, clickIcon: () -> Unit) {
|
||||
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(4.dp),
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
Text(
|
||||
text = workerItem.firstName,
|
||||
modifier = Modifier.weight(1.25f),
|
||||
textAlign = TextAlign.Start,
|
||||
color = VerdnaturaColors.OrangeSalix
|
||||
)
|
||||
Text(
|
||||
text = workerItem.lastName,
|
||||
modifier = Modifier.weight(1f),
|
||||
textAlign = TextAlign.Start,
|
||||
color = VerdnaturaColors.OrangeSalix
|
||||
)
|
||||
IconButton(
|
||||
onClick = { clickIcon() },
|
||||
modifier = Modifier.weight(0.5f),
|
||||
colors = IconButtonDefaults.iconButtonColors(
|
||||
containerColor = Color.Black, contentColor = VerdnaturaColors.OrangeSalix
|
||||
)
|
||||
) {
|
||||
Icon(
|
||||
painter = painterResource(id = R.drawable.emoticon_error),
|
||||
contentDescription = "Action",
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun SearchableDepartmentsList(
|
||||
modifier: Modifier = Modifier,
|
||||
departmentList: List<DepartmentMistake>,
|
||||
onDepartmentSelected: (DepartmentMistake) -> Unit,
|
||||
onDismiss: () -> Unit
|
||||
) {
|
||||
var searchQuery by remember { mutableStateOf("") }
|
||||
val filteredDepartments = remember(searchQuery, departmentList) {
|
||||
if (searchQuery.isEmpty()) {
|
||||
departmentList
|
||||
} else {
|
||||
departmentList.filter {
|
||||
it.name.contains(searchQuery, ignoreCase = true) || it.name.contains(
|
||||
searchQuery,
|
||||
ignoreCase = true
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Dialog(onDismissRequest = onDismiss) {
|
||||
Surface(
|
||||
modifier = modifier
|
||||
.fillMaxWidth()
|
||||
.fillMaxHeight(),
|
||||
shape = RoundedCornerShape(8.dp),
|
||||
color = MaterialTheme.colorScheme.surface,
|
||||
shadowElevation = 8.dp
|
||||
) {
|
||||
Column(
|
||||
modifier = Modifier.padding(16.dp)
|
||||
) {
|
||||
Row(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
horizontalArrangement = Arrangement.SpaceBetween,
|
||||
verticalAlignment = Alignment.CenterVertically
|
||||
) {
|
||||
|
||||
IconButton(onClick = onDismiss) {
|
||||
Icon(
|
||||
imageVector = Icons.Default.Close, contentDescription = "Cerrar"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Spacer(modifier = Modifier.height(8.dp))
|
||||
|
||||
OutlinedTextField(
|
||||
value = searchQuery,
|
||||
onValueChange = { searchQuery = it },
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
placeholder = { Text("Buscar departamento") },
|
||||
leadingIcon = {
|
||||
Icon(
|
||||
imageVector = Icons.Default.Search, contentDescription = "Buscar"
|
||||
)
|
||||
},
|
||||
singleLine = true
|
||||
)
|
||||
|
||||
Spacer(modifier = Modifier.height(16.dp))
|
||||
|
||||
// Lista de departamentos
|
||||
if (filteredDepartments.isEmpty()) {
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(16.dp),
|
||||
contentAlignment = Alignment.Center
|
||||
) {
|
||||
Text(
|
||||
text = "No se encontraron departamentos",
|
||||
textAlign = TextAlign.Center,
|
||||
color = Color.Gray
|
||||
)
|
||||
}
|
||||
} else {
|
||||
LazyColumn {
|
||||
items(filteredDepartments) { department ->
|
||||
DepartmentItem(department = department, onSelected = {
|
||||
onDepartmentSelected(department)
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun DepartmentItem(
|
||||
department: DepartmentMistake, onSelected: () -> Unit
|
||||
) {
|
||||
Card(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(vertical = 4.dp)
|
||||
.clickable(onClick = onSelected),
|
||||
elevation = CardDefaults.cardElevation(
|
||||
defaultElevation = 2.dp
|
||||
)
|
||||
) {
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(16.dp)
|
||||
) {
|
||||
Text(
|
||||
text = department.name,
|
||||
style = MaterialTheme.typography.bodyLarge,
|
||||
color = VerdnaturaColors.BlackCustomDialog
|
||||
)
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Clase de modelo para los elementos de la lista
|
||||
data class WorkerItem(
|
||||
val name: String, val surname: String
|
||||
// Otros campos necesarios
|
||||
)
|
||||
|
||||
// Añade esta función preview debajo de tu WorkerMistakeScreen
|
||||
@Preview(
|
||||
showBackground = true,
|
||||
backgroundColor = 0xFF2E7D32, // Color de fondo verde oscuro similar a verdnatura
|
||||
widthDp = 360,
|
||||
heightDp = 640
|
||||
)
|
||||
@Composable
|
||||
fun WorkerMistakeScreenPreview() {
|
||||
MaterialTheme {
|
||||
Surface(color = Color(0xFF2E7D32)) { // Fondo verde verdnatura
|
||||
WorkerMistakeScreen(
|
||||
viewModel = null, "Error"
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Preview para el item individual
|
||||
@Preview(showBackground = true)
|
||||
@Composable
|
||||
fun WorkerMistakeItemPreview() {
|
||||
MaterialTheme {
|
||||
Surface(color = Color(0xFF2E7D32)) {
|
||||
WorkerMistakeItem(
|
||||
WorkerFromMistake(
|
||||
firstName = "Juan", lastName = "García"
|
||||
),
|
||||
clickIcon = { },
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Si quieres probar con diferentes datos, puedes usar un PreviewParameterProvider
|
||||
class SampleWorkerItemProvider : PreviewParameterProvider<WorkerItem> {
|
||||
override val values = sequenceOf(
|
||||
WorkerItem("Ana", "Martínez"),
|
||||
WorkerItem("Carlos", "López"),
|
||||
WorkerItem("María", "Rodríguez")
|
||||
)
|
||||
}
|
||||
|
||||
@Preview(showBackground = true)
|
||||
@Composable
|
||||
fun WorkerMistakeItemWithParametersPreview(
|
||||
@PreviewParameter(SampleWorkerItemProvider::class) workerItem: WorkerFromMistake
|
||||
) {
|
||||
MaterialTheme {
|
||||
Surface(color = Color(0xFF2E7D32)) {
|
||||
WorkerMistakeItem(workerItem, clickIcon = { })
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,151 @@
|
|||
package es.verdnatura.presentation.view.feature.workermistake.fragment
|
||||
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import es.verdnatura.MobileApplication
|
||||
import es.verdnatura.domain.SalixCallback
|
||||
import es.verdnatura.presentation.base.BaseViewModelCompose
|
||||
import es.verdnatura.presentation.view.feature.workermistake.model.DepartmentMistake
|
||||
import es.verdnatura.presentation.view.feature.workermistake.model.MistakeType
|
||||
import es.verdnatura.presentation.view.feature.workermistake.model.WorkerFromMistake
|
||||
import es.verdnatura.presentation.view.feature.workermistake.model.WorkerMistakeSalix
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.asStateFlow
|
||||
import kotlinx.coroutines.flow.update
|
||||
import kotlinx.coroutines.launch
|
||||
import retrofit2.Response
|
||||
|
||||
data class UiStateWorkerDeparment(
|
||||
val departments: List<DepartmentMistake> = emptyList(),
|
||||
val workers: List<WorkerFromMistake> = emptyList(),
|
||||
val departmentSelected: DepartmentMistake = DepartmentMistake(-1, ""),
|
||||
val mistakeTypes: List<MistakeType> = emptyList(),
|
||||
val workerSelected: WorkerFromMistake = WorkerFromMistake(),
|
||||
val isLoading: Boolean = false
|
||||
)
|
||||
|
||||
class WorkerMistakeViewModel(var application: android.app.Application) :
|
||||
BaseViewModelCompose(application) {
|
||||
|
||||
private val _uiStateWorkerDeparment = MutableStateFlow(UiStateWorkerDeparment())
|
||||
val uiStateWorkerDeparment = _uiStateWorkerDeparment.asStateFlow()
|
||||
|
||||
init {
|
||||
viewModelScope.launch {
|
||||
val departmendId =
|
||||
(application as MobileApplication).dataStoreApp.readDataStoreKey<Int>("DEPARTMENTMISTAKEID")
|
||||
val departmentName =
|
||||
(application as MobileApplication).dataStoreApp.readDataStoreKey<String>("DEPARTMENTMISTAKE")
|
||||
|
||||
if (departmendId != -1) {
|
||||
_uiStateWorkerDeparment.update {
|
||||
it.copy(
|
||||
departmentSelected = DepartmentMistake(departmendId, departmentName)
|
||||
)
|
||||
}
|
||||
workerGetFromHasMistake(departmendId)
|
||||
} else {
|
||||
viewModelScope.launch { departmentGetHasMistake() }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun setDepartment(departmentSelected: DepartmentMistake) {
|
||||
viewModelScope.launch {
|
||||
(application as MobileApplication).dataStoreApp.editDataStoreKey(
|
||||
"DEPARTMENTMISTAKE",
|
||||
departmentSelected.name
|
||||
)
|
||||
(application as MobileApplication).dataStoreApp.editDataStoreKey(
|
||||
"DEPARTMENTMISTAKEID",
|
||||
departmentSelected.id
|
||||
)
|
||||
_uiStateWorkerDeparment.update {
|
||||
it.copy(
|
||||
departmentSelected = departmentSelected
|
||||
)
|
||||
}
|
||||
workerGetFromHasMistake(departmentSelected.id)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fun setWorkerSelected(woker: WorkerFromMistake) {
|
||||
viewModelScope.launch {
|
||||
_uiStateWorkerDeparment.update {
|
||||
it.copy(
|
||||
workerSelected = woker
|
||||
)
|
||||
}
|
||||
workerMistakeTypeGet()
|
||||
}
|
||||
}
|
||||
|
||||
fun departmentGetHasMistake() {
|
||||
salix.departmentGetHasMistake().enqueue(object :
|
||||
SalixCallback<List<DepartmentMistake>>(application.applicationContext) {
|
||||
override fun onSuccess(response: Response<List<DepartmentMistake>>) {
|
||||
|
||||
response.body()?.let { list ->
|
||||
_uiStateWorkerDeparment.update {
|
||||
it.copy(
|
||||
departments = list, isLoading = false
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
private fun workerGetFromHasMistake(departmentFk: Number) {
|
||||
salix.workerGetFromHasMistake(arrayListOf(departmentFk)).enqueue(object :
|
||||
SalixCallback<List<WorkerFromMistake>>(application.applicationContext) {
|
||||
override fun onSuccess(response: Response<List<WorkerFromMistake>>) {
|
||||
response.body()?.let { list ->
|
||||
_uiStateWorkerDeparment.update {
|
||||
it.copy(
|
||||
workers = list, isLoading = false
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
private fun workerMistakeTypeGet() {
|
||||
salix.workerMistakesTypes()
|
||||
.enqueue(object : SalixCallback<List<MistakeType>>(application.applicationContext) {
|
||||
|
||||
override fun onSuccess(response: Response<List<MistakeType>>) {
|
||||
response.body()?.let { list ->
|
||||
_uiStateWorkerDeparment.update {
|
||||
it.copy(
|
||||
mistakeTypes = list, isLoading = false
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
fun workerMistakeAdd(
|
||||
workerFk: Int, typeFk: String
|
||||
) {
|
||||
salix.workerMistakesAdd(WorkerMistakeSalix(workerFk, typeFk))
|
||||
.enqueue(object : SalixCallback<Any>(application.applicationContext) {
|
||||
override fun onSuccess(response: Response<Any>) {
|
||||
super.onSuccess(response)
|
||||
setWorkerSelected(WorkerFromMistake())
|
||||
}
|
||||
|
||||
override fun onError(t: Throwable) {
|
||||
super.onError(t)
|
||||
setWorkerSelected(WorkerFromMistake())
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
package es.verdnatura.presentation.view.feature.workermistake.fragment
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.compose.ui.platform.ComposeView
|
||||
import androidx.fragment.app.Fragment
|
||||
import es.verdnatura.presentation.view.feature.main.activity.MainActivity
|
||||
import org.koin.androidx.viewmodel.ext.android.viewModel
|
||||
|
||||
class WorkermistakeFragmentCompose(
|
||||
var entryPoint: String = ""
|
||||
|
||||
) : Fragment() {
|
||||
private val viewModel: WorkerMistakeViewModel by viewModel()
|
||||
|
||||
companion object {
|
||||
fun newInstance(entryPoint: String) = WorkermistakeFragmentCompose(entryPoint)
|
||||
}
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
|
||||
): View {
|
||||
return ComposeView(requireContext()).apply {
|
||||
setContent {
|
||||
WorkerMistakeScreen(
|
||||
viewModel = viewModel,
|
||||
title = entryPoint,
|
||||
onBackClick = { (context as MainActivity).onMyBackPressed() }
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
(context as MainActivity).hideBottomNavigation(View.GONE)
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue