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
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 }
|
|
|