feat: show names with a lock for DMs using PKC

pull/1219/head
andrekir 2024-09-16 10:28:42 -03:00
rodzic 7e1ab62568
commit 2433cbc00a
3 zmienionych plików z 9 dodań i 3 usunięć

Wyświetl plik

@ -167,6 +167,9 @@ data class DataPacket(
/// special broadcast address /// special broadcast address
const val NODENUM_BROADCAST = (0xffffffff).toInt() const val NODENUM_BROADCAST = (0xffffffff).toInt()
// Public-key cryptography (PKC) channel index
const val PKC_CHANNEL_INDEX = 8
fun nodeNumToDefaultId(n: Int): String = "!%08x".format(n) fun nodeNumToDefaultId(n: Int): String = "!%08x".format(n)
fun idToDefaultNodeNum(id: String?): Int? = id?.toLong(16)?.toInt() fun idToDefaultNodeNum(id: String?): Int? = id?.toLong(16)?.toInt()

Wyświetl plik

@ -533,7 +533,7 @@ class MeshService : Service(), Logging {
dataType = data.portnumValue, dataType = data.portnumValue,
bytes = data.payload.toByteArray(), bytes = data.payload.toByteArray(),
hopLimit = packet.hopLimit, hopLimit = packet.hopLimit,
channel = packet.channel, channel = if (packet.pkiEncrypted) DataPacket.PKC_CHANNEL_INDEX else packet.channel,
) )
} }
} }

Wyświetl plik

@ -22,6 +22,7 @@ import androidx.lifecycle.asLiveData
import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle import androidx.lifecycle.repeatOnLifecycle
import com.geeksville.mesh.DataPacket
import com.geeksville.mesh.android.Logging import com.geeksville.mesh.android.Logging
import com.geeksville.mesh.R import com.geeksville.mesh.R
import com.geeksville.mesh.database.entity.QuickChatAction import com.geeksville.mesh.database.entity.QuickChatAction
@ -121,10 +122,12 @@ class MessagesFragment : Fragment(), Logging {
contactKey = arguments?.getString("contactKey").toString() contactKey = arguments?.getString("contactKey").toString()
val contactName = arguments?.getString("contactName").toString() val contactName = arguments?.getString("contactName").toString()
binding.toolbar.title = contactName binding.toolbar.title = contactName
if (contactKey[1] == '!') { val channelNumber = contactKey[0].digitToIntOrNull()
if (channelNumber == DataPacket.PKC_CHANNEL_INDEX) {
binding.toolbar.title = "$contactName🔒"
} else if (channelNumber != null && contactKey.substring(1) != DataPacket.ID_BROADCAST) {
lifecycleScope.launch { lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.STARTED) { repeatOnLifecycle(Lifecycle.State.STARTED) {
val channelNumber = contactKey[0].digitToInt()
model.channels.collect { channels -> model.channels.collect { channels ->
val channelName = val channelName =
channels.getChannel(channelNumber)?.name ?: "Unknown Channel" channels.getChannel(channelNumber)?.name ?: "Unknown Channel"