-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathNetworkScreen.kt
More file actions
49 lines (42 loc) · 1.65 KB
/
NetworkScreen.kt
File metadata and controls
49 lines (42 loc) · 1.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package com.greybox.projectmesh.views
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.ui.platform.LocalSavedStateRegistryOwner
import androidx.lifecycle.viewmodel.compose.viewModel
import com.greybox.projectmesh.ViewModelFactory
import com.greybox.projectmesh.viewModel.NetworkScreenModel
import com.greybox.projectmesh.viewModel.NetworkScreenViewModel
import org.kodein.di.compose.localDI
import com.greybox.projectmesh.extension.WifiListItem
@Composable
fun NetworkScreen(
onNodeClick: (String) -> Unit,
viewModel: NetworkScreenViewModel = viewModel(
factory = ViewModelFactory(
di = localDI(),
owner = LocalSavedStateRegistryOwner.current,
vmFactory = { di, savedStateHandle -> NetworkScreenViewModel(di, savedStateHandle)},
defaultArgs = null))
) {
// declare the UI state, we can use the uiState to access the current state of the viewModel
val uiState: NetworkScreenModel by viewModel.uiState.collectAsState(initial = NetworkScreenModel())
// display all the connected station
LazyColumn{
items(
items = uiState.allNodes.entries.toList(),
key = {it.key}
){ eachItem ->
WifiListItem(
wifiAddress = eachItem.key,
wifiEntry = eachItem.value,
onClick = { ipAddress ->
viewModel.onNodeSelected(ipAddress)
onNodeClick(ipAddress)
}
)
}
}
}