add callback to save newly created item in vm

This commit is contained in:
Satindar Dhillon
2023-03-07 20:30:55 -08:00
parent 05a0ff3419
commit fa97d01d0c
2 changed files with 17 additions and 10 deletions

View File

@ -52,9 +52,12 @@ fun LabelsSelectionSheet(viewModel: LibraryViewModel) {
}
viewModel.labelsSelectionCurrentItemLiveData.value = null
viewModel.showLabelsSelectionSheetLiveData.value = false
},
onCreateLabel = { newLabelName, labelHexValue ->
viewModel.createNewSavedItemLabel(newLabelName, labelHexValue)
}
)
} else {
} else { // Is used in library mode
LabelsSelectionSheetContent(
labels = labels,
initialSelectedLabels = viewModel.activeLabelsLiveData.value ?: listOf(),
@ -64,6 +67,9 @@ fun LabelsSelectionSheet(viewModel: LibraryViewModel) {
viewModel.updateAppliedLabels(it)
viewModel.labelsSelectionCurrentItemLiveData.value = null
viewModel.showLabelsSelectionSheetLiveData.value = false
},
onCreateLabel = { newLabelName, labelHexValue ->
viewModel.createNewSavedItemLabel(newLabelName, labelHexValue)
}
)
}
@ -78,7 +84,8 @@ fun LabelsSelectionSheetContent(
labels: List<SavedItemLabel>,
initialSelectedLabels: List<SavedItemLabel>,
onCancel: () -> Unit,
onSave: (List<SavedItemLabel>) -> Unit
onSave: (List<SavedItemLabel>) -> Unit,
onCreateLabel: (String, String) -> Unit
) {
val listState = rememberLazyListState()
val selectedLabels = remember { mutableStateOf(initialSelectedLabels) }
@ -97,7 +104,7 @@ fun LabelsSelectionSheetContent(
LabelCreationDialog(
onDismiss = { showCreateLabelDialog = false },
onSave = { labelName, hexColor ->
Log.d("label", "creating label with name: $labelName and hex: $hexColor")
onCreateLabel(labelName, hexColor)
showCreateLabelDialog = false
}
)
@ -143,10 +150,9 @@ fun LabelsSelectionSheetContent(
.fillMaxWidth()
.clickable {
if (isLabelSelected) {
selectedLabels.value = (selectedLabels.value
?: listOf()).filter { it.savedItemLabelId != label.savedItemLabelId }
selectedLabels.value = selectedLabels.value.filter { it.savedItemLabelId != label.savedItemLabelId }
} else {
selectedLabels.value = (selectedLabels.value ?: listOf()) + listOf(label)
selectedLabels.value = selectedLabels.value + listOf(label)
}
}
.padding(horizontal = 6.dp)
@ -180,10 +186,7 @@ fun LabelsSelectionSheetContent(
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier
.fillMaxWidth()
.clickable {
Log.d("label", "add new label button tapped")
showCreateLabelDialog = true
}
.clickable { showCreateLabelDialog = true }
.padding(horizontal = 6.dp)
.padding(vertical = 12.dp)
)

View File

@ -295,6 +295,10 @@ class LibraryViewModel @Inject constructor(
}
}
fun createNewSavedItemLabel(labelName: String, hexColorValue: String) {
Log.d("labels", "creating label with name: $labelName and hex: $hexColorValue")
}
fun currentSavedItemUnderEdit(): SavedItemCardDataWithLabels? {
labelsSelectionCurrentItemLiveData.value?.let { itemID ->
return itemsLiveData.value?.first { it.cardData.savedItemId == itemID }