diff --git a/app/src/main/java/com/geeksville/mesh/model/UIState.kt b/app/src/main/java/com/geeksville/mesh/model/UIState.kt index b6376a9b6..ddb861c4c 100644 --- a/app/src/main/java/com/geeksville/mesh/model/UIState.kt +++ b/app/src/main/java/com/geeksville/mesh/model/UIState.kt @@ -505,14 +505,21 @@ class UIViewModel @Inject constructor( updateLoraConfig { it.copy { region = value } } } - var ignoreIncomingList: MutableList - 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 diff --git a/app/src/main/java/com/geeksville/mesh/ui/UsersFragment.kt b/app/src/main/java/com/geeksville/mesh/ui/UsersFragment.kt index 9bf6403b0..efd1be58c 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/UsersFragment.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/UsersFragment.kt @@ -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,