session-android/src/org/thoughtcrime/securesms/loki/views/MentionCandidateView.kt

46 lines
2 KiB
Kotlin
Raw Normal View History

2020-05-11 08:19:26 +02:00
package org.thoughtcrime.securesms.loki.views
2019-10-10 04:53:02 +02:00
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.LinearLayout
2020-01-16 05:15:08 +01:00
import kotlinx.android.synthetic.main.view_mention_candidate.view.*
2019-10-10 04:53:02 +02:00
import network.loki.messenger.R
2020-01-16 05:15:08 +01:00
import org.thoughtcrime.securesms.mms.GlideRequests
2020-07-15 04:24:43 +02:00
import org.whispersystems.signalservice.loki.api.opengroups.PublicChatAPI
2020-05-07 09:59:41 +02:00
import org.whispersystems.signalservice.loki.protocol.mentions.Mention
2019-10-10 04:53:02 +02:00
2020-01-16 05:15:08 +01:00
class MentionCandidateView(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : LinearLayout(context, attrs, defStyleAttr) {
2019-10-11 07:37:28 +02:00
var mentionCandidate = Mention("", "")
2019-10-10 04:53:02 +02:00
set(newValue) { field = newValue; update() }
2020-01-16 05:15:08 +01:00
var glide: GlideRequests? = null
2019-10-15 04:39:17 +02:00
var publicChatServer: String? = null
var publicChatChannel: Long? = null
2019-10-10 04:53:02 +02:00
constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0)
constructor(context: Context) : this(context, null)
companion object {
2020-01-16 05:15:08 +01:00
fun inflate(layoutInflater: LayoutInflater, parent: ViewGroup): MentionCandidateView {
return layoutInflater.inflate(R.layout.view_mention_candidate, parent, false) as MentionCandidateView
2019-10-10 04:53:02 +02:00
}
}
private fun update() {
2019-10-11 07:37:28 +02:00
displayNameTextView.text = mentionCandidate.displayName
2020-07-15 04:24:43 +02:00
profilePictureView.hexEncodedPublicKey = mentionCandidate.publicKey
2020-01-16 05:15:08 +01:00
profilePictureView.additionalHexEncodedPublicKey = null
profilePictureView.isRSSFeed = false
profilePictureView.glide = glide!!
profilePictureView.update()
2019-10-15 04:39:17 +02:00
if (publicChatServer != null && publicChatChannel != null) {
2020-07-15 04:24:43 +02:00
val isUserModerator = PublicChatAPI.isUserModerator(mentionCandidate.publicKey, publicChatChannel!!, publicChatServer!!)
2019-10-15 04:39:17 +02:00
moderatorIconImageView.visibility = if (isUserModerator) View.VISIBLE else View.GONE
} else {
moderatorIconImageView.visibility = View.GONE
}
2019-10-10 04:53:02 +02:00
}
}