mirror of
https://github.com/meshtastic/Meshtastic-Android.git
synced 2026-04-20 22:23:37 +00:00
feat: support add=true in QR codes (#1151)
This commit is contained in:
parent
cc5543f4c9
commit
e4c6000a10
7 changed files with 105 additions and 18 deletions
|
|
@ -78,7 +78,7 @@ fun getInitials(nameIn: String): String {
|
|||
* Only changes are included in the resulting list.
|
||||
*
|
||||
* @param new The updated [ChannelSettings] list.
|
||||
* @param old The current [ChannelSettings] list (required to disable unused channels).
|
||||
* @param old The current [ChannelSettings] list (required when disabling unused channels).
|
||||
* @return A [Channel] list containing only the modified channels.
|
||||
*/
|
||||
internal fun getChannelList(
|
||||
|
|
@ -394,13 +394,25 @@ class UIViewModel @Inject constructor(
|
|||
meshService?.setChannel(channel.toByteArray())
|
||||
}
|
||||
|
||||
// Set the radio config (also updates our saved copy in preferences)
|
||||
fun setChannels(channelSet: AppOnlyProtos.ChannelSet) = viewModelScope.launch {
|
||||
getChannelList(channelSet.settingsList, channels.value.settingsList).forEach(::setChannel)
|
||||
radioConfigRepository.replaceAllSettings(channelSet.settingsList)
|
||||
/**
|
||||
* Set the radio config (also updates our saved copy in preferences). By default, this will replace
|
||||
* all channels in the existing radio config. Otherwise, it will append all [ChannelSettings] that
|
||||
* are unique in [channelSet] to the existing radio config.
|
||||
*/
|
||||
fun setChannels(channelSet: AppOnlyProtos.ChannelSet, overwrite: Boolean = true) = viewModelScope.launch {
|
||||
val newRadioSettings: List<ChannelSettings> = if (overwrite) {
|
||||
channelSet.settingsList
|
||||
} else {
|
||||
// To guarantee consistent ordering, using a LinkedHashSet which iterates through it's
|
||||
// entries according to the order an item was *first* inserted.
|
||||
// https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-linked-hash-set/
|
||||
LinkedHashSet(channels.value.settingsList + channelSet.settingsList).toList()
|
||||
}
|
||||
|
||||
getChannelList(newRadioSettings, channels.value.settingsList).forEach(::setChannel)
|
||||
radioConfigRepository.replaceAllSettings(newRadioSettings)
|
||||
val newConfig = config { lora = channelSet.loraConfig }
|
||||
if (config.lora != newConfig.lora) setConfig(newConfig)
|
||||
if (overwrite && config.lora != newConfig.lora) setConfig(newConfig)
|
||||
}
|
||||
|
||||
val provideLocation = object : MutableLiveData<Boolean>(preferences.getBoolean("provide-location", false)) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue