Commit ad96c9db authored by Filipe de Lima Brito's avatar Filipe de Lima Brito

Update ChatRoomsAdapter.kt

parent deb483de
package chat.rocket.android.chatrooms.ui
import DateTimeHelper
import DrawableHelper
import android.content.Context
import android.support.v7.widget.RecyclerView
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import chat.rocket.android.R
import chat.rocket.android.util.inflate
import chat.rocket.android.util.setVisibility
import chat.rocket.android.util.textContent
import chat.rocket.common.model.BaseRoom.RoomType
import chat.rocket.core.model.ChatRoom
import com.facebook.drawee.view.SimpleDraweeView
......@@ -15,48 +19,65 @@ import kotlinx.android.synthetic.main.item_chat.view.*
class ChatRoomsAdapter(private var dataSet: MutableList<ChatRoom>, private val context: Context) : RecyclerView.Adapter<ChatRoomsAdapter.ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_chat, parent, false)
return ViewHolder(view)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder = ViewHolder(parent.inflate(R.layout.item_chat))
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val chat = dataSet[position]
val chatRoom = dataSet[position]
val chatRoomName = chatRoom.name
holder.chatName.textContent = chatRoomName
// holder.userAvatar.setImageURI(chat.user.avatarUri)
holder.chatName.text = chat.name
// holder.lastMessage.text = chat.lastMessage
// holder.lastMessageDateTime.text = DateTimeHelper.getDate(chat.lastMessageDateTime, context)
if (chatRoom.type == RoomType.ONE_TO_ONE) {
val canonicalUrl = chatRoom.client.restUrl.toString()
// TODO get safe URL
holder.userAvatar.setImageURI(canonicalUrl + "avatar/" + chatRoomName)
holder.userAvatar.setVisibility(true)
} else {
holder.roomAvatar.setImageDrawable(DrawableHelper.getTextDrawable(chatRoomName))
holder.roomAvatar.setVisibility(true)
}
when (chat.type) {
RoomType.PRIVATE -> {
DrawableHelper.compoundDrawable(holder.chatName, DrawableHelper.getDrawableFromId(R.drawable.ic_lock_outline_black, context))
val totalUnreadMessage = chatRoom.unread
when {
totalUnreadMessage in 1..99 -> {
holder.unreadMessage.textContent = totalUnreadMessage.toString()
holder.unreadMessage.setVisibility(true)
}
RoomType.PUBLIC -> {
DrawableHelper.compoundDrawable(holder.chatName, DrawableHelper.getDrawableFromId(R.drawable.ic_hashtag_black, context))
totalUnreadMessage > 99 -> {
holder.unreadMessage.textContent = context.getString(R.string.msg_more_than_ninety_nine_unread_messages)
holder.unreadMessage.setVisibility(true)
}
// chat.rocket.common.model.BaseRoom.RoomType.ONE_TO_ONE -> {
// DrawableHelper.compoundDrawable(holder.chatName, DrawableHelper.getUserStatusDrawable(chat.user.status, context))
// }
}
// val totalUnreadMessage = chat.totalUnreadMessages
// when {
// totalUnreadMessage in 1..99 -> {
// holder.unreadMessage.text = totalUnreadMessage.toString()
// holder.unreadMessage.visibility = View.VISIBLE
// }
// totalUnreadMessage > 99 -> {
// holder.unreadMessage.text = context.getString(R.string.msg_more_than_ninety_nine_unread_messages)
// holder.unreadMessage.visibility = View.VISIBLE
// }
// }
val lastMessage = chatRoom.lastMessage
val lastMessageSender = lastMessage?.sender
if (lastMessage != null && lastMessageSender != null) {
val message = lastMessage.message
val senderUsername = lastMessageSender.username
when (senderUsername) {
chatRoomName -> {
holder.lastMessage.textContent = message
}
// TODO Change to MySelf
chatRoom.user?.username -> {
holder.lastMessage.textContent = context.getString(R.string.msg_you) + ": $message"
}
else -> {
holder.lastMessage.textContent = "@$senderUsername: $message"
}
}
val localDateTime = DateTimeHelper.getLocalDateTime(lastMessage.timestamp)
holder.lastMessageDateTime.textContent = DateTimeHelper.getDate(localDateTime, context)
}
}
override fun getItemCount(): Int = dataSet.size
override fun getItemViewType(position: Int): Int = position
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val userAvatar: SimpleDraweeView = itemView.image_user_avatar
val roomAvatar: ImageView = itemView.image_room_avatar
val chatName: TextView = itemView.text_chat_name
val lastMessage: TextView = itemView.text_last_message
val lastMessageDateTime: TextView = itemView.text_last_message_date_time
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment