Pablo
06/05/2024, 3:42 PMPablo
06/05/2024, 3:43 PMPablo
06/05/2024, 3:47 PMfun ItemDetails.toItem(): Item = Item(
id = id,
name = name,
price = price.toDoubleOrNull() ?: 0.0,
quantity = quantity.toIntOrNull() ?: 0
)
fun Item.toItemUiState(isEntryValid: Boolean = false): ItemUiState = ItemUiState(
itemDetails = this.toItemDetails(),
isEntryValid = isEntryValid
)
fun Item.toItemDetails(): ItemDetails = ItemDetails(
id = id,
name = name,
price = price.toString(),
quantity = quantity.toString()
)
Pablo
06/05/2024, 3:48 PMval uiState: StateFlow<ItemDetailsUiState> =
itemsRepository.getItemStream(itemId)
.filterNotNull()
.map {
ItemDetailsUiState(
outOfStock = it.quantity <= 0,
itemDetails = it.toItemDetails()
)
}.stateIn(
scope = viewModelScope,
started = SharingStarted.WhileSubscribed(TIMEOUT_MILLIS),
initialValue = ItemDetailsUiState()
)
Pablo
06/05/2024, 3:48 PMPablo
06/05/2024, 3:49 PMval currentItem = uiState.value.itemDetails.toItem()
even to get data from the database seems to be complex and confussing:
itemUiState = itemsRepository.getItemStream(itemId)
.filterNotNull()
.first()
.toItemUiState(true)
Pablo
06/05/2024, 3:51 PMPablo
06/05/2024, 3:52 PMJavier
06/05/2024, 4:32 PMJavier
06/05/2024, 4:32 PMPablo
06/05/2024, 6:08 PMPablo
06/05/2024, 6:10 PMJavier
06/05/2024, 6:26 PM