Apply country code also to chat peer's URI in order to find proper contact

This commit is contained in:
Juha Heinanen
2023-02-28 09:27:38 +02:00
parent bc025a496e
commit 95ed61a46b
6 changed files with 20 additions and 16 deletions

View File

@ -2,7 +2,6 @@ package com.tutpro.baresip
import android.app.Activity
import android.content.Context
import android.content.DialogInterface
import android.content.Intent
import android.os.Bundle
import android.os.SystemClock
@ -18,7 +17,6 @@ import android.widget.Toast
import androidx.activity.OnBackPressedCallback
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.Observer
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.tutpro.baresip.databinding.ActivityChatBinding
class ChatActivity : AppCompatActivity() {
@ -75,7 +73,7 @@ class ChatActivity : AppCompatActivity() {
imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
this@ChatActivity.window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN)
val chatPeer = Utils.friendlyUri(this, peerUri, userAgent.account)
val chatPeer = Utils.friendlyUri(this, peerUri, userAgent.account, true)
title = String.format(getString(R.string.chat_with), chatPeer)
@ -90,7 +88,7 @@ class ChatActivity : AppCompatActivity() {
listView = binding.messages
chatMessages = uaPeerMessages(aor, peerUri)
mlAdapter = MessageListAdapter(this, peerUri, chatMessages)
mlAdapter = MessageListAdapter(this, peerUri, chatPeer, chatMessages)
val messagesObserver = Observer<Long> {
chatMessages.clear()

View File

@ -44,7 +44,12 @@ class ChatListAdapter(private val ctx: Context, private val account: Account, pr
val message = rows[position]
Utils.setAvatar(ctx, viewHolder.imageAvatarView, viewHolder.textAvatarView, message.peerUri)
viewHolder.peerView.text = Utils.friendlyUri(ctx, message.peerUri, account, true)
Utils.setAvatar(ctx, viewHolder.imageAvatarView, viewHolder.textAvatarView,
if (Contact.contactName(message.peerUri) == message.peerUri)
Utils.e164Uri(message.peerUri, account.countryCode)
else
message.peerUri)
if ((message.direction == R.drawable.arrow_down_green) ||
(message.direction == R.drawable.arrow_down_red))
@ -52,8 +57,6 @@ class ChatListAdapter(private val ctx: Context, private val account: Account, pr
else
viewHolder.layoutView.setBackgroundResource(R.drawable.message_out_bg)
viewHolder.peerView.text = Utils.friendlyUri(ctx, message.peerUri, account)
val cal = GregorianCalendar()
cal.timeInMillis = message.timeStamp
val fmt: DateFormat = if (isToday(message.timeStamp))

View File

@ -17,7 +17,7 @@ class ChatsActivity: AppCompatActivity() {
private lateinit var binding: ActivityChatsBinding
private lateinit var uaMessages: ArrayList<Message>
internal lateinit var listView: ListView
private lateinit var listView: ListView
private lateinit var clAdapter: ChatListAdapter
internal lateinit var peerUri: AutoCompleteTextView
private lateinit var plusButton: ImageButton

View File

@ -91,7 +91,7 @@ sealed class Contact {
}
is AndroidContact -> {
for (u in c.uris)
if (Utils.uriMatch(u, uri))
if (Utils.uriMatch(u.filterNot{setOf('-', ' ', '(', ')').contains(it)}, uri))
return c
}
}

View File

@ -17,7 +17,8 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder
import java.text.DateFormat
import java.util.*
class MessageListAdapter(private val ctx: Context, private val peerUri: String, private val rows: ArrayList<Message>) :
class MessageListAdapter(private val ctx: Context, private val peerUri: String,
private val chatPeer: String, private val rows: ArrayList<Message>) :
ArrayAdapter<Message>(ctx, R.layout.message, rows) {
private val layoutInflater = LayoutInflater.from(context)
@ -67,12 +68,11 @@ class MessageListAdapter(private val ctx: Context, private val peerUri: String,
}
}
val builder = MaterialAlertDialogBuilder(ctx, R.style.AlertDialogTheme)
val chatPeer = Contact.contactName(peerUri)
if (Contact.contactName(peerUri) == peerUri)
if (chatPeer == peerUri)
with (builder) {
setTitle(R.string.confirmation)
setMessage(String.format(ctx.getString(R.string.long_message_question),
chatPeer))
peerUri))
setNeutralButton(ctx.getString(R.string.cancel), dialogClickListener)
setNegativeButton(ctx.getString(R.string.delete), dialogClickListener)
setPositiveButton(ctx.getString(R.string.add_contact), dialogClickListener)
@ -100,12 +100,11 @@ class MessageListAdapter(private val ctx: Context, private val peerUri: String,
val peer: String = if (down) {
lp.setMargins(0, 10, 75, 10)
viewHolder.layoutView.setBackgroundResource(R.drawable.message_in_bg)
val contactName = Contact.contactName(message.peerUri)
if (contactName.startsWith("sip:") &&
if (chatPeer.startsWith("sip:") &&
(Utils.uriHostPart(message.peerUri) == Utils.uriHostPart(message.aor)))
Utils.uriUserPart(message.peerUri)
else
contactName
chatPeer
} else {
lp.setMargins(75, 10, 0, 10)
viewHolder.layoutView.setBackgroundResource(R.drawable.message_out_bg)

View File

@ -130,6 +130,9 @@ object Utils {
u = Contact.contactName(e164Uri(uri, account.countryCode))
if (u != uri)
return u
u = friendlyUri(ctx, uri, account, false)
if (u != uri)
return u
}
val params = uriParams(u)
if (uri.startsWith("<") && (uri.endsWith(">")))
@ -973,6 +976,7 @@ object Utils {
}
}
@RequiresApi(Build.VERSION_CODES.S)
fun setCommunicationDevice(am: AudioManager, type: Int) {
val current = am.communicationDevice!!.type
Log.d(TAG, "Current com dev/mode $current/${am.mode}")