kopia lustrzana https://github.com/meshtastic/Meshtastic-Android
refactor: `Messages` navigation to single `contactKey` argument
rodzic
1c42bd262f
commit
44d195a4a5
|
@ -327,9 +327,7 @@ class MainActivity : AppCompatActivity(), Logging {
|
|||
MeshServiceNotifications.OPEN_MESSAGE_ACTION -> {
|
||||
val contactKey =
|
||||
intent.getStringExtra(MeshServiceNotifications.OPEN_MESSAGE_EXTRA_CONTACT_KEY)
|
||||
val contactName =
|
||||
intent.getStringExtra(MeshServiceNotifications.OPEN_MESSAGE_EXTRA_CONTACT_NAME)
|
||||
showMessages(contactKey, contactName)
|
||||
showMessages(contactKey)
|
||||
}
|
||||
|
||||
UsbManager.ACTION_USB_DEVICE_ATTACHED -> {
|
||||
|
@ -602,10 +600,10 @@ class MainActivity : AppCompatActivity(), Logging {
|
|||
binding.pager.currentItem = 5
|
||||
}
|
||||
|
||||
private fun showMessages(contactKey: String?, contactName: String?) {
|
||||
private fun showMessages(contactKey: String?) {
|
||||
model.setCurrentTab(0)
|
||||
if (contactKey != null && contactName != null) {
|
||||
supportFragmentManager.navigateToMessages(contactKey, contactName)
|
||||
if (contactKey != null) {
|
||||
supportFragmentManager.navigateToMessages(contactKey)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -46,8 +46,6 @@ class MeshServiceNotifications(
|
|||
private const val FIFTEEN_MINUTES_IN_MILLIS = 15L * 60 * 1000
|
||||
const val OPEN_MESSAGE_ACTION = "com.geeksville.mesh.OPEN_MESSAGE_ACTION"
|
||||
const val OPEN_MESSAGE_EXTRA_CONTACT_KEY = "com.geeksville.mesh.OPEN_MESSAGE_EXTRA_CONTACT_KEY"
|
||||
const val OPEN_MESSAGE_EXTRA_CONTACT_NAME =
|
||||
"com.geeksville.mesh.OPEN_MESSAGE_EXTRA_CONTACT_NAME"
|
||||
}
|
||||
|
||||
private val notificationManager: NotificationManager get() = context.notificationManager
|
||||
|
@ -197,11 +195,10 @@ class MeshServiceNotifications(
|
|||
)
|
||||
}
|
||||
|
||||
private fun openMessageIntent(contactKey: String, contactName: String): PendingIntent {
|
||||
private fun openMessageIntent(contactKey: String): PendingIntent {
|
||||
val intent = Intent(context, MainActivity::class.java)
|
||||
intent.action = OPEN_MESSAGE_ACTION
|
||||
intent.putExtra(OPEN_MESSAGE_EXTRA_CONTACT_KEY, contactKey)
|
||||
intent.putExtra(OPEN_MESSAGE_EXTRA_CONTACT_NAME, contactName)
|
||||
|
||||
val pendingIntent = PendingIntent.getActivity(
|
||||
context,
|
||||
|
@ -277,7 +274,7 @@ class MeshServiceNotifications(
|
|||
}
|
||||
val person = Person.Builder().setName(name).build()
|
||||
with(messageNotificationBuilder) {
|
||||
setContentIntent(openMessageIntent(contactKey, name))
|
||||
setContentIntent(openMessageIntent(contactKey))
|
||||
priority = NotificationCompat.PRIORITY_DEFAULT
|
||||
setCategory(Notification.CATEGORY_MESSAGE)
|
||||
setAutoCancel(true)
|
||||
|
|
|
@ -70,7 +70,7 @@ class ContactsFragment : ScreenFragment("Messages"), Logging {
|
|||
onLongClick(contact)
|
||||
} else {
|
||||
debug("calling MessagesFragment filter:${contact.contactKey}")
|
||||
parentFragmentManager.navigateToMessages(contact.contactKey, contact.longName)
|
||||
parentFragmentManager.navigateToMessages(contact.contactKey)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -34,14 +34,12 @@ import androidx.core.view.allViews
|
|||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.Lifecycle
|
||||
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.android.Logging
|
||||
import com.geeksville.mesh.database.entity.QuickChatAction
|
||||
import com.geeksville.mesh.databinding.MessagesFragmentBinding
|
||||
import com.geeksville.mesh.model.Message
|
||||
|
@ -54,9 +52,9 @@ import dagger.hilt.android.AndroidEntryPoint
|
|||
import kotlinx.coroutines.flow.firstOrNull
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
internal fun FragmentManager.navigateToMessages(contactKey: String, contactName: String) {
|
||||
internal fun FragmentManager.navigateToMessages(contactKey: String) {
|
||||
val messagesFragment = MessagesFragment().apply {
|
||||
arguments = bundleOf("contactKey" to contactKey, "contactName" to contactName)
|
||||
arguments = bundleOf("contactKey" to contactKey)
|
||||
}
|
||||
beginTransaction()
|
||||
.add(R.id.mainActivityLayout, messagesFragment)
|
||||
|
@ -125,22 +123,20 @@ class MessagesFragment : Fragment(), Logging {
|
|||
}
|
||||
|
||||
contactKey = arguments?.getString("contactKey").toString()
|
||||
val contactName = arguments?.getString("contactName").toString()
|
||||
binding.toolbar.title = contactName
|
||||
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) {
|
||||
model.channels.collect { channels ->
|
||||
val channelName =
|
||||
channels.getChannel(channelNumber)?.name ?: "Unknown Channel"
|
||||
val subtitle = "(ch: $channelNumber - $channelName)"
|
||||
binding.toolbar.subtitle = subtitle
|
||||
}
|
||||
}
|
||||
}
|
||||
val channelIndex = contactKey[0].digitToIntOrNull()
|
||||
val nodeId = contactKey.substring(1)
|
||||
val channelName = channelIndex?.let { model.channels.value.getChannel(it)?.name }
|
||||
?: "Unknown Channel"
|
||||
|
||||
binding.toolbar.title = when (nodeId) {
|
||||
DataPacket.ID_BROADCAST -> channelName
|
||||
else -> model.getUser(nodeId).longName
|
||||
}
|
||||
|
||||
if (channelIndex == DataPacket.PKC_CHANNEL_INDEX) {
|
||||
binding.toolbar.title = "${binding.toolbar.title}🔒"
|
||||
} else if (nodeId != DataPacket.ID_BROADCAST) {
|
||||
binding.toolbar.subtitle = "(ch: $channelIndex - $channelName)"
|
||||
}
|
||||
|
||||
fun sendMessageInputText() {
|
||||
|
|
|
@ -58,7 +58,7 @@ class UsersFragment : ScreenFragment("Users"), Logging {
|
|||
val channel = if (hasPKC) DataPacket.PKC_CHANNEL_INDEX else node.channel
|
||||
val contactKey = "$channel${user.id}"
|
||||
info("calling MessagesFragment filter: $contactKey")
|
||||
parentFragmentManager.navigateToMessages(contactKey, user.longName)
|
||||
parentFragmentManager.navigateToMessages(contactKey)
|
||||
}
|
||||
|
||||
private fun navigateToNodeDetails(nodeNum: Int) {
|
||||
|
|
Ładowanie…
Reference in New Issue