Fixed clicking on chat message notification while being in conversations list stacked it twice

This commit is contained in:
Sylvain Berfini 2023-12-09 07:38:09 +01:00
parent 7c51cf7588
commit 2ad4e76bc3
3 changed files with 14 additions and 12 deletions

View file

@ -30,7 +30,6 @@ import android.content.Intent
import android.content.pm.PackageManager
import android.graphics.Bitmap
import android.net.Uri
import android.os.Bundle
import android.webkit.MimeTypeMap
import androidx.annotation.AnyThread
import androidx.annotation.MainThread
@ -1147,15 +1146,18 @@ class NotificationsManager @MainThread constructor(private val context: Context)
@WorkerThread
private fun getChatRoomPendingIntent(chatRoom: ChatRoom): PendingIntent {
val args = Bundle()
args.putString("RemoteSipUri", chatRoom.peerAddress.asStringUriOnly())
args.putString("LocalSipUri", chatRoom.localAddress.asStringUriOnly())
return NavDeepLinkBuilder(context)
.setComponentName(MainActivity::class.java)
.setGraph(R.navigation.main_nav_graph)
.setDestination(R.id.conversationsListFragment)
.setArguments(args)
.createPendingIntent()
val mainActivityIntent = Intent(context, MainActivity::class.java)
mainActivityIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
mainActivityIntent.setAction(Intent.ACTION_MAIN)
mainActivityIntent.putExtra("Chat", true)
mainActivityIntent.putExtra("RemoteSipUri", chatRoom.peerAddress.asStringUriOnly())
mainActivityIntent.putExtra("LocalSipUri", chatRoom.localAddress.asStringUriOnly())
return PendingIntent.getActivity(
context,
0,
mainActivityIntent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
}
class Notifiable(val notificationId: Int) {

View file

@ -369,7 +369,6 @@ class MainActivity : GenericActivity() {
@MainThread
private fun handleMainIntent(intent: Intent, defaultDestination: Int, isNewIntent: Boolean) {
val navGraph = findNavController().navInflater.inflate(R.navigation.main_nav_graph)
if (intent.hasExtra("Chat")) {
Log.i("$TAG New intent with [Chat] extra")
if (isNewIntent) {
@ -380,12 +379,14 @@ class MainActivity : GenericActivity() {
)
} else {
Log.i("$TAG Going to Conversations fragment instead of default destination")
val navGraph = findNavController().navInflater.inflate(R.navigation.main_nav_graph)
navGraph.setStartDestination(R.id.conversationsListFragment)
findNavController().setGraph(navGraph, intent.extras)
}
} else {
if (!isNewIntent && defaultDestination > 0) {
Log.i("$TAG Setting nav graph with expected default destination")
val navGraph = findNavController().navInflater.inflate(R.navigation.main_nav_graph)
navGraph.setStartDestination(defaultDestination)
findNavController().setGraph(navGraph, null)
}

View file

@ -205,7 +205,6 @@ class ConversationFragment : SlidingPaneChildFragment() {
override fun goBack(): Boolean {
sharedViewModel.closeSlidingPaneEvent.value = Event(true)
coreContext.notificationsManager.resetCurrentlyDisplayedChatRoomId()
// If not done this fragment won't be paused, which will cause us issues
val action = ConversationFragmentDirections.actionConversationFragmentToEmptyFragment()