refactor: `Messages` navigation to single `contactKey` argument

pull/1443/head
andrekir 2024-11-28 08:42:49 -03:00
rodzic 1c42bd262f
commit 44d195a4a5
5 zmienionych plików z 25 dodań i 34 usunięć

Wyświetl plik

@ -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)
}
}

Wyświetl plik

@ -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)

Wyświetl plik

@ -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)
}
}

Wyświetl plik

@ -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() {

Wyświetl plik

@ -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) {