mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-18 06:47:02 +05:30
Provide UrlLauncher through Ambient
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
This commit is contained in:
parent
44393643c9
commit
0eb4f74e36
1 changed files with 19 additions and 10 deletions
|
@ -14,6 +14,8 @@ import androidx.compose.material.Scaffold
|
||||||
import androidx.compose.material.TopAppBar
|
import androidx.compose.material.TopAppBar
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.MutableState
|
import androidx.compose.runtime.MutableState
|
||||||
|
import androidx.compose.runtime.Providers
|
||||||
|
import androidx.compose.runtime.ambientOf
|
||||||
import androidx.compose.runtime.collectAsState
|
import androidx.compose.runtime.collectAsState
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
|
@ -33,25 +35,31 @@ import dev.msfjarvis.todo.data.model.TodoItem
|
||||||
import dev.msfjarvis.todo.data.source.TodoDatabase
|
import dev.msfjarvis.todo.data.source.TodoDatabase
|
||||||
import dev.msfjarvis.todo.ui.TodoRowItem
|
import dev.msfjarvis.todo.ui.TodoRowItem
|
||||||
import dev.msfjarvis.todo.ui.TodoTheme
|
import dev.msfjarvis.todo.ui.TodoTheme
|
||||||
|
import dev.msfjarvis.todo.urllauncher.UrlLauncher
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
val UrlLauncherAmbient = ambientOf<UrlLauncher> { error("Needs to be provided") }
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class MainActivity : AppCompatActivity() {
|
class MainActivity : AppCompatActivity() {
|
||||||
@Inject lateinit var database: TodoDatabase
|
@Inject lateinit var database: TodoDatabase
|
||||||
|
@Inject lateinit var urlLauncher: UrlLauncher
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setContent {
|
setContent {
|
||||||
TodoTheme {
|
Providers(UrlLauncherAmbient provides urlLauncher) {
|
||||||
val coroutineScope = rememberCoroutineScope()
|
TodoTheme {
|
||||||
val itemsDao = database.todoItemsDao()
|
val coroutineScope = rememberCoroutineScope()
|
||||||
val items by itemsDao.getAllItems().collectAsState(initial = emptyList())
|
val itemsDao = database.todoItemsDao()
|
||||||
TodoApp(
|
val items by itemsDao.getAllItems().collectAsState(initial = emptyList())
|
||||||
items,
|
TodoApp(
|
||||||
{ item -> coroutineScope.launch { itemsDao.insert(item) } },
|
items,
|
||||||
{ item -> coroutineScope.launch { itemsDao.delete(item) } },
|
{ item -> coroutineScope.launch { itemsDao.insert(item) } },
|
||||||
)
|
{ item -> coroutineScope.launch { itemsDao.delete(item) } },
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -64,6 +72,7 @@ fun TodoApp(
|
||||||
onDelete: (item: TodoItem) -> Unit,
|
onDelete: (item: TodoItem) -> Unit,
|
||||||
) {
|
) {
|
||||||
val showingDialog = remember { mutableStateOf(false) }
|
val showingDialog = remember { mutableStateOf(false) }
|
||||||
|
val urlLauncher = UrlLauncherAmbient.current
|
||||||
|
|
||||||
if (showingDialog.value) {
|
if (showingDialog.value) {
|
||||||
ItemAddDialog(
|
ItemAddDialog(
|
||||||
|
@ -94,7 +103,7 @@ fun TodoApp(
|
||||||
) { todoItem ->
|
) { todoItem ->
|
||||||
TodoRowItem(
|
TodoRowItem(
|
||||||
item = todoItem,
|
item = todoItem,
|
||||||
onClick = { },
|
onClick = { urlLauncher.launch(todoItem.title) },
|
||||||
onDelete = { onDelete.invoke(todoItem) },
|
onDelete = { onDelete.invoke(todoItem) },
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue