updateChannelSet

suspend fun updateChannelSet(settingsList: List<ChannelSettings>?, loraConfig: Config.LoRaConfig?)(source)

Atomically updates supplied ChannelSet fields while preserving fields omitted by the caller.

Conversations are reconciled in the same lock, but only when settingsList is supplied. A caller that passes the whole channel list is stating a complete set — a manual channel edit, a scanned channel URL, a profile install — which is the only safe moment to decide a channel has gone. A LoRa-only write is not: the radio sends its LoRa config during the handshake, before any channel has arrived, so reconciling there would see an empty channel list and archive every conversation on the device on every reconnect. Those changes are picked up by reconcileConversations once the handshake completes, which a preset change always triggers because the radio reboots.