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
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 idToDefaultNodeNum(id: String?): Int? = id?.toLong(16)?.toInt()

Wyświetl plik

@ -533,7 +533,7 @@ class MeshService : Service(), Logging {
dataType = data.portnumValue,
bytes = data.payload.toByteArray(),
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.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import com.geeksville.mesh.DataPacket
import com.geeksville.mesh.android.Logging
import com.geeksville.mesh.R
import com.geeksville.mesh.database.entity.QuickChatAction
@ -121,10 +122,12 @@ class MessagesFragment : Fragment(), Logging {
contactKey = arguments?.getString("contactKey").toString()
val contactName = arguments?.getString("contactName").toString()
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 {
repeatOnLifecycle(Lifecycle.State.STARTED) {
val channelNumber = contactKey[0].digitToInt()
model.channels.collect { channels ->
val channelName =
channels.getChannel(channelNumber)?.name ?: "Unknown Channel"