diff --git a/app/src/main/kotlin/com/tutpro/baresip/ChatActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/ChatActivity.kt index 2c66dd29..27752aa6 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/ChatActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/ChatActivity.kt @@ -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 { chatMessages.clear() diff --git a/app/src/main/kotlin/com/tutpro/baresip/ChatListAdapter.kt b/app/src/main/kotlin/com/tutpro/baresip/ChatListAdapter.kt index a195d28e..b8a78b4a 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/ChatListAdapter.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/ChatListAdapter.kt @@ -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)) diff --git a/app/src/main/kotlin/com/tutpro/baresip/ChatsActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/ChatsActivity.kt index 8c7f0414..4ef1f964 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/ChatsActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/ChatsActivity.kt @@ -17,7 +17,7 @@ class ChatsActivity: AppCompatActivity() { private lateinit var binding: ActivityChatsBinding private lateinit var uaMessages: ArrayList - 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 diff --git a/app/src/main/kotlin/com/tutpro/baresip/Contact.kt b/app/src/main/kotlin/com/tutpro/baresip/Contact.kt index cf920b38..e46db19f 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/Contact.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/Contact.kt @@ -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 } } diff --git a/app/src/main/kotlin/com/tutpro/baresip/MessageListAdapter.kt b/app/src/main/kotlin/com/tutpro/baresip/MessageListAdapter.kt index bc397401..8f7417b8 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/MessageListAdapter.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/MessageListAdapter.kt @@ -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) : +class MessageListAdapter(private val ctx: Context, private val peerUri: String, + private val chatPeer: String, private val rows: ArrayList) : ArrayAdapter(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) diff --git a/app/src/main/kotlin/com/tutpro/baresip/Utils.kt b/app/src/main/kotlin/com/tutpro/baresip/Utils.kt index 695fd54d..50a2bb88 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/Utils.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/Utils.kt @@ -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}")