Show session info on toolbar click & Change links color
This commit is contained in:
parent
87e17c818e
commit
004277dc42
@ -41,16 +41,15 @@ class ChatActivity : ServiceBoundActivity() {
|
||||
super.onCreate(savedInstanceState)
|
||||
binding = ActivityChatBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
setSupportActionBar(binding.toolbar.toolbar)
|
||||
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
||||
|
||||
sessionId = intent.getIntExtra("sessionId", -1)
|
||||
if (sessionId != -1) {
|
||||
intent.getStringExtra("sessionName")?.let { name ->
|
||||
sessionName = name
|
||||
setSupportActionBar(binding.toolbar.toolbar)
|
||||
binding.toolbar.textAvatar.setLetterFrom(name)
|
||||
binding.toolbar.title.text = name
|
||||
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
||||
|
||||
chatAdapter = ChatAdapter(this@ChatActivity, ::onClickSaveFile)
|
||||
binding.recyclerChat.apply {
|
||||
adapter = chatAdapter
|
||||
@ -73,6 +72,9 @@ class ChatActivity : ServiceBoundActivity() {
|
||||
}
|
||||
})
|
||||
}
|
||||
binding.toolbar.toolbar.setOnClickListener {
|
||||
showSessionInfo()
|
||||
}
|
||||
binding.buttonSend.setOnClickListener {
|
||||
val msg = binding.editMessage.text.toString()
|
||||
airaService.sendTo(sessionId, Protocol.newMessage(msg))
|
||||
@ -219,38 +221,7 @@ class ChatActivity : ServiceBoundActivity() {
|
||||
true
|
||||
}
|
||||
R.id.session_info -> {
|
||||
val contact = airaService.contacts[sessionId]
|
||||
val session = airaService.sessions[sessionId]
|
||||
val publicKey = contact?.publicKey ?: session?.peerPublicKey
|
||||
val dialogBinding = DialogInfoBinding.inflate(layoutInflater)
|
||||
dialogBinding.textAvatar.setLetterFrom(sessionName)
|
||||
dialogBinding.textFingerprint.text = StringUtils.beautifyFingerprint(generateFingerprint(publicKey!!))
|
||||
if (session == null) {
|
||||
dialogBinding.onlineFields.visibility = View.GONE
|
||||
} else {
|
||||
dialogBinding.textIp.text = session.ip
|
||||
dialogBinding.textOutgoing.text = getString(if (session.outgoing) {
|
||||
R.string.outgoing
|
||||
} else {
|
||||
R.string.incoming
|
||||
})
|
||||
}
|
||||
dialogBinding.textIsContact.text = getString(if (contact == null) {
|
||||
dialogBinding.fieldIsVerified.visibility = View.GONE
|
||||
R.string.no
|
||||
} else {
|
||||
dialogBinding.textIsVerified.text = getString(if (contact.verified) {
|
||||
R.string.yes
|
||||
} else {
|
||||
R.string.no
|
||||
})
|
||||
R.string.yes
|
||||
})
|
||||
AlertDialog.Builder(this)
|
||||
.setTitle(sessionName)
|
||||
.setView(dialogBinding.root)
|
||||
.setPositiveButton(R.string.ok, null)
|
||||
.show()
|
||||
showSessionInfo()
|
||||
true
|
||||
}
|
||||
R.id.set_as_contact -> {
|
||||
@ -340,4 +311,39 @@ class ChatActivity : ServiceBoundActivity() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun showSessionInfo() {
|
||||
val contact = airaService.contacts[sessionId]
|
||||
val session = airaService.sessions[sessionId]
|
||||
val publicKey = contact?.publicKey ?: session?.peerPublicKey
|
||||
val dialogBinding = DialogInfoBinding.inflate(layoutInflater)
|
||||
dialogBinding.textAvatar.setLetterFrom(sessionName)
|
||||
dialogBinding.textFingerprint.text = StringUtils.beautifyFingerprint(generateFingerprint(publicKey!!))
|
||||
if (session == null) {
|
||||
dialogBinding.onlineFields.visibility = View.GONE
|
||||
} else {
|
||||
dialogBinding.textIp.text = session.ip
|
||||
dialogBinding.textOutgoing.text = getString(if (session.outgoing) {
|
||||
R.string.outgoing
|
||||
} else {
|
||||
R.string.incoming
|
||||
})
|
||||
}
|
||||
dialogBinding.textIsContact.text = getString(if (contact == null) {
|
||||
dialogBinding.fieldIsVerified.visibility = View.GONE
|
||||
R.string.no
|
||||
} else {
|
||||
dialogBinding.textIsVerified.text = getString(if (contact.verified) {
|
||||
R.string.yes
|
||||
} else {
|
||||
R.string.no
|
||||
})
|
||||
R.string.yes
|
||||
})
|
||||
AlertDialog.Builder(this)
|
||||
.setTitle(sessionName)
|
||||
.setView(dialogBinding.root)
|
||||
.setPositiveButton(R.string.ok, null)
|
||||
.show()
|
||||
}
|
||||
}
|
@ -82,14 +82,18 @@ class ChatAdapter(
|
||||
|
||||
internal class OutgoingMessageViewHolder(private val context: Context, itemView: View): MessageViewHolder(itemView) {
|
||||
fun bind(chatItem: ChatItem) {
|
||||
configureBubble(context, bindMessage(chatItem), true)
|
||||
configureBubble(context, bindMessage(chatItem).apply {
|
||||
setLinkTextColor(ContextCompat.getColor(context, R.color.outgoingTextLink))
|
||||
}, true)
|
||||
setPadding(true)
|
||||
}
|
||||
}
|
||||
|
||||
internal class IncomingMessageViewHolder(private val context: Context, itemView: View): MessageViewHolder(itemView) {
|
||||
fun bind(chatItem: ChatItem) {
|
||||
configureBubble(context, bindMessage(chatItem), false)
|
||||
configureBubble(context, bindMessage(chatItem).apply {
|
||||
setLinkTextColor(ContextCompat.getColor(context, R.color.incomingTextLink))
|
||||
}, false)
|
||||
setPadding(false)
|
||||
}
|
||||
}
|
||||
|
@ -10,7 +10,6 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:textIsSelectable="true"
|
||||
android:autoLink="all"
|
||||
android:textColorLink="@color/textLink"
|
||||
android:textColor="@color/messageTextColor"
|
||||
style="@style/Bubble"/>
|
||||
|
||||
|
@ -2,12 +2,12 @@
|
||||
<resources>
|
||||
<color name="primary">#262626</color>
|
||||
<color name="secondary">#19a52c</color>
|
||||
<color name="white">#FFFFFF</color>
|
||||
<color name="backgroundColor">#111111</color>
|
||||
<color name="sessionBackground">#1A1A1A</color>
|
||||
<color name="bubbleBackground">@color/sessionBackground</color>
|
||||
<color name="incomingBubbleBackground">@color/secondary</color>
|
||||
<color name="textLink">#3845A3</color>
|
||||
<color name="outgoingTextLink">#d4866a</color>
|
||||
<color name="incomingTextLink">#7d0839</color>
|
||||
<color name="messageTextColor">#ffffff</color>
|
||||
<color name="itemSelected">#66666666</color>
|
||||
<color name="transparent">#00000000</color>
|
||||
|
Loading…
Reference in New Issue
Block a user