mirror of
https://github.com/meshtastic/Meshtastic-Android.git
synced 2026-04-20 22:23:37 +00:00
refactor: move ignoreIncoming logic to ViewModel
This commit is contained in:
parent
417523967e
commit
a980441fd1
2 changed files with 22 additions and 47 deletions
|
|
@ -505,14 +505,21 @@ class UIViewModel @Inject constructor(
|
|||
updateLoraConfig { it.copy { region = value } }
|
||||
}
|
||||
|
||||
var ignoreIncomingList: MutableList<Int>
|
||||
get() = config.lora.ignoreIncomingList
|
||||
set(value) = updateLoraConfig {
|
||||
it.copy {
|
||||
ignoreIncoming.clear()
|
||||
ignoreIncoming.addAll(value)
|
||||
fun ignoreNode(nodeNum: Int) = updateLoraConfig {
|
||||
it.copy {
|
||||
val list = ignoreIncoming.toMutableList().apply {
|
||||
if (contains(nodeNum)) {
|
||||
debug("removing node $nodeNum from ignore list")
|
||||
remove(nodeNum)
|
||||
} else {
|
||||
debug("adding node $nodeNum to ignore list")
|
||||
add(nodeNum)
|
||||
}
|
||||
}
|
||||
ignoreIncoming.clear()
|
||||
ignoreIncoming.addAll(list)
|
||||
}
|
||||
}
|
||||
|
||||
// managed mode disables all access to configuration
|
||||
val isManaged: Boolean get() = config.device.isManaged || config.security.isManaged
|
||||
|
|
|
|||
|
|
@ -22,7 +22,6 @@ import androidx.compose.ui.unit.dp
|
|||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.hilt.navigation.compose.hiltViewModel
|
||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
import ar.com.hjg.pngj.PngHelperInternal.debug
|
||||
import com.geeksville.mesh.DataPacket
|
||||
import com.geeksville.mesh.android.Logging
|
||||
import com.geeksville.mesh.database.entity.NodeEntity
|
||||
|
|
@ -73,7 +72,7 @@ class UsersFragment : ScreenFragment("Users"), Logging {
|
|||
|
||||
@OptIn(ExperimentalFoundationApi::class)
|
||||
@Composable
|
||||
@Suppress("LongMethod", "CyclomaticComplexMethod")
|
||||
@Suppress("LongMethod")
|
||||
fun NodesScreen(
|
||||
model: UIViewModel = hiltViewModel(),
|
||||
navigateToMessages: (NodeEntity) -> Unit,
|
||||
|
|
@ -97,6 +96,7 @@ fun NodesScreen(
|
|||
}
|
||||
|
||||
val currentTimeMillis = rememberTimeTickWithLifecycle()
|
||||
val connectionState by model.connectionState.observeAsState()
|
||||
|
||||
LazyColumn(
|
||||
state = listState,
|
||||
|
|
@ -119,8 +119,6 @@ fun NodesScreen(
|
|||
}
|
||||
|
||||
items(nodes, key = { it.num }) { node ->
|
||||
val isIgnored = state.ignoreIncomingList.contains(node.num)
|
||||
val connectionState by model.connectionState.observeAsState()
|
||||
NodeItem(
|
||||
thisNode = ourNode,
|
||||
thatNode = node,
|
||||
|
|
@ -130,43 +128,13 @@ fun NodesScreen(
|
|||
ignoreIncomingList = state.ignoreIncomingList,
|
||||
menuItemActionClicked = { menuItem ->
|
||||
when (menuItem) {
|
||||
MenuItemAction.Remove -> {
|
||||
model.removeNode(node.num)
|
||||
debug("removing node ${node.num}")
|
||||
}
|
||||
|
||||
MenuItemAction.Ignore -> {
|
||||
model.ignoreIncomingList =
|
||||
state.ignoreIncomingList.toMutableList().apply {
|
||||
if (isIgnored) {
|
||||
remove(node.num)
|
||||
debug("removing node ${node.num} from ignore list")
|
||||
} else {
|
||||
add(node.num)
|
||||
debug("adding node ${node.num} to ignore list")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
MenuItemAction.DirectMessage -> {
|
||||
navigateToMessages(node)
|
||||
}
|
||||
|
||||
MenuItemAction.RequestUserInfo -> {
|
||||
model.requestUserInfo(node.num)
|
||||
}
|
||||
|
||||
MenuItemAction.RequestPosition -> {
|
||||
model.requestPosition(node.num)
|
||||
}
|
||||
|
||||
MenuItemAction.TraceRoute -> {
|
||||
model.requestTraceroute(node.num)
|
||||
}
|
||||
|
||||
MenuItemAction.MoreDetails -> {
|
||||
navigateToNodeDetails(node.num)
|
||||
}
|
||||
MenuItemAction.Remove -> model.removeNode(node.num)
|
||||
MenuItemAction.Ignore -> model.ignoreNode(node.num)
|
||||
MenuItemAction.DirectMessage -> navigateToMessages(node)
|
||||
MenuItemAction.RequestUserInfo -> model.requestUserInfo(node.num)
|
||||
MenuItemAction.RequestPosition -> model.requestPosition(node.num)
|
||||
MenuItemAction.TraceRoute -> model.requestTraceroute(node.num)
|
||||
MenuItemAction.MoreDetails -> navigateToNodeDetails(node.num)
|
||||
}
|
||||
},
|
||||
blinking = node == focusedNode,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue