Modify Adapter and ListOpenConversationsActivity

Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
This commit is contained in:
sowjanyakch 2024-11-27 18:31:14 +01:00 committed by Marcel Hibbe
parent b769a024c4
commit 5b8b3bb027
No known key found for this signature in database
GPG Key ID: C793F8B59F43CE7B
2 changed files with 35 additions and 23 deletions

View File

@ -21,8 +21,8 @@ import com.nextcloud.talk.api.NcApi
import com.nextcloud.talk.application.NextcloudTalkApplication import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.chat.ChatActivity import com.nextcloud.talk.chat.ChatActivity
import com.nextcloud.talk.databinding.ActivityOpenConversationsBinding import com.nextcloud.talk.databinding.ActivityOpenConversationsBinding
import com.nextcloud.talk.models.json.conversations.Conversation
import com.nextcloud.talk.openconversations.adapters.OpenConversationsAdapter import com.nextcloud.talk.openconversations.adapters.OpenConversationsAdapter
import com.nextcloud.talk.openconversations.data.OpenConversation
import com.nextcloud.talk.openconversations.viewmodels.OpenConversationsViewModel import com.nextcloud.talk.openconversations.viewmodels.OpenConversationsViewModel
import com.nextcloud.talk.utils.bundle.BundleKeys import com.nextcloud.talk.utils.bundle.BundleKeys
import com.vanniktech.ui.showKeyboardAndFocus import com.vanniktech.ui.showKeyboardAndFocus
@ -62,7 +62,7 @@ class ListOpenConversationsActivity : BaseActivity() {
val user = currentUserProvider.currentUser.blockingGet() val user = currentUserProvider.currentUser.blockingGet()
adapter = OpenConversationsAdapter(user) { conversation -> adapterOnClick(conversation) } adapter = OpenConversationsAdapter(user, viewThemeUtils) { conversation -> adapterOnClick(conversation) }
binding.openConversationsRecyclerView.adapter = adapter binding.openConversationsRecyclerView.adapter = adapter
binding.searchOpenConversations.setOnClickListener { binding.searchOpenConversations.setOnClickListener {
searching = !searching searching = !searching
@ -86,9 +86,9 @@ class ListOpenConversationsActivity : BaseActivity() {
} }
} }
private fun adapterOnClick(conversation: OpenConversation) { private fun adapterOnClick(conversation: Conversation) {
val bundle = Bundle() val bundle = Bundle()
bundle.putString(BundleKeys.KEY_ROOM_TOKEN, conversation.roomToken) bundle.putString(BundleKeys.KEY_ROOM_TOKEN, conversation.token)
val chatIntent = Intent(context, ChatActivity::class.java) val chatIntent = Intent(context, ChatActivity::class.java)
chatIntent.putExtras(bundle) chatIntent.putExtras(bundle)
@ -143,3 +143,6 @@ class ListOpenConversationsActivity : BaseActivity() {
viewThemeUtils.material.themeToolbar(binding.openConversationsToolbar) viewThemeUtils.material.themeToolbar(binding.openConversationsToolbar)
} }
} }

View File

@ -13,21 +13,24 @@ import android.widget.RelativeLayout
import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.nextcloud.talk.R
import com.nextcloud.talk.data.user.model.User import com.nextcloud.talk.data.user.model.User
import com.nextcloud.talk.databinding.RvItemOpenConversationBinding import com.nextcloud.talk.databinding.RvItemOpenConversationBinding
import com.nextcloud.talk.extensions.loadUserAvatar import com.nextcloud.talk.extensions.loadConversationAvatar
import com.nextcloud.talk.openconversations.data.OpenConversation import com.nextcloud.talk.models.domain.ConversationModel
import com.nextcloud.talk.models.json.conversations.Conversation
import com.nextcloud.talk.ui.theme.ViewThemeUtils
class OpenConversationsAdapter(val user: User, private val onClick: (OpenConversation) -> Unit) : class OpenConversationsAdapter(val user: User,
ListAdapter<OpenConversation, OpenConversationsAdapter.OpenConversationsViewHolder>(ConversationsCallback) { val viewThemeUtils: ViewThemeUtils,
private var originalList: List<OpenConversation> = emptyList() private val onClick: (Conversation) -> Unit) :
ListAdapter<Conversation, OpenConversationsAdapter.OpenConversationsViewHolder>(ConversationsCallback) {
private var originalList: List<Conversation> = emptyList()
private var isFiltering = false private var isFiltering = false
inner class OpenConversationsViewHolder(val itemBinding: RvItemOpenConversationBinding) : inner class OpenConversationsViewHolder(val itemBinding: RvItemOpenConversationBinding) :
RecyclerView.ViewHolder(itemBinding.root) { RecyclerView.ViewHolder(itemBinding.root) {
var currentConversation: OpenConversation? = null var currentConversation: Conversation? = null
init { init {
itemBinding.root.setOnClickListener { itemBinding.root.setOnClickListener {
@ -37,11 +40,11 @@ class OpenConversationsAdapter(val user: User, private val onClick: (OpenConvers
} }
} }
fun bindItem(conversation: OpenConversation) { fun bindItem(conversation: Conversation) {
val nameTextLayoutParams: RelativeLayout.LayoutParams = itemBinding.nameText.layoutParams as val nameTextLayoutParams: RelativeLayout.LayoutParams = itemBinding.nameText.layoutParams as
RelativeLayout.LayoutParams RelativeLayout.LayoutParams
currentConversation = conversation currentConversation = conversation
val currentConversationModel = ConversationModel.mapToConversationModel(conversation, user)
itemBinding.nameText.text = conversation.displayName itemBinding.nameText.text = conversation.displayName
if (conversation.description == "") { if (conversation.description == "") {
itemBinding.descriptionText.visibility = View.GONE itemBinding.descriptionText.visibility = View.GONE
@ -50,9 +53,15 @@ class OpenConversationsAdapter(val user: User, private val onClick: (OpenConvers
itemBinding.descriptionText.text = conversation.description itemBinding.descriptionText.text = conversation.description
} }
// load avatar from server when https://github.com/nextcloud/spreed/issues/9600 is solved // load avatar from server when https://github.com/nextcloud/spreed/issues/9600 is solved
// itemBinding.avatarView.loadUserAvatar(user, conversation.displayName, true, false) itemBinding.avatarView.loadConversationAvatar(
itemBinding.avatarView.loadUserAvatar(R.drawable.ic_circular_group) user,
currentConversationModel,
false,
viewThemeUtils
)
//itemBinding.avatarView.loadUserAvatar(R.drawable.ic_circular_group)
} }
} }
@ -79,7 +88,7 @@ class OpenConversationsAdapter(val user: User, private val onClick: (OpenConvers
} }
isFiltering = true isFiltering = true
val newList = mutableListOf<OpenConversation>() val newList = mutableListOf<Conversation>()
for (conversation in originalList) { for (conversation in originalList) {
if (conversation.displayName.contains(text, true) || conversation.description!!.contains(text, true)) { if (conversation.displayName.contains(text, true) || conversation.description!!.contains(text, true)) {
newList.add(conversation) newList.add(conversation)
@ -92,8 +101,8 @@ class OpenConversationsAdapter(val user: User, private val onClick: (OpenConvers
} }
override fun onCurrentListChanged( override fun onCurrentListChanged(
previousList: MutableList<OpenConversation>, previousList: MutableList<Conversation>,
currentList: MutableList<OpenConversation> currentList: MutableList<Conversation>
) { ) {
if (!isFiltering) { if (!isFiltering) {
originalList = currentList originalList = currentList
@ -102,12 +111,12 @@ class OpenConversationsAdapter(val user: User, private val onClick: (OpenConvers
} }
} }
object ConversationsCallback : DiffUtil.ItemCallback<OpenConversation>() { object ConversationsCallback : DiffUtil.ItemCallback<Conversation>() {
override fun areItemsTheSame(oldItem: OpenConversation, newItem: OpenConversation): Boolean { override fun areItemsTheSame(oldItem: Conversation, newItem: Conversation): Boolean {
return oldItem == newItem return oldItem == newItem
} }
override fun areContentsTheSame(oldItem: OpenConversation, newItem: OpenConversation): Boolean { override fun areContentsTheSame(oldItem: Conversation, newItem: Conversation): Boolean {
return oldItem.roomToken == newItem.roomToken return oldItem.token == newItem.token
} }
} }