You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

38 lines
1.2 KiB

package example.todoapp.lite.common
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import example.todoapp.lite.common.RootStore.RootState
@Composable
fun RootContent(modifier: Modifier = Modifier) {
val model = remember { RootStore() }
val state = model.state
MainContent(
modifier = modifier,
items = state.items,
inputText = state.inputText,
onItemClicked = model::onItemClicked,
onItemDoneChanged = model::onItemDoneChanged,
onItemDeleteClicked = model::onItemDeleteClicked,
onAddItemClicked = model::onAddItemClicked,
onInputTextChanged = model::onInputTextChanged,
)
state.editingItem?.also { item ->
EditDialog(
item = item,
onCloseClicked = model::onEditorCloseClicked,
onTextChanged = model::onEditorTextChanged,
onDoneChanged = model::onEditorDoneChanged,
)
}
}
private val RootState.editingItem: TodoItem?
get() = editingItemId?.let(items::firstById)
private fun List<TodoItem>.firstById(id: Long): TodoItem =
first { it.id == id }