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,15 +21,15 @@ import com.nextcloud.talk.api.NcApi
import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.chat.ChatActivity
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.data.OpenConversation
import com.nextcloud.talk.openconversations.viewmodels.OpenConversationsViewModel
import com.nextcloud.talk.utils.bundle.BundleKeys
import com.vanniktech.ui.showKeyboardAndFocus
import javax.inject.Inject
@AutoInjector(NextcloudTalkApplication::class)
class ListOpenConversationsActivity : BaseActivity() {
class ListOpenConversationsActivity : BaseActivity() {
private lateinit var binding: ActivityOpenConversationsBinding
@ -62,7 +62,7 @@ class ListOpenConversationsActivity : BaseActivity() {
val user = currentUserProvider.currentUser.blockingGet()
adapter = OpenConversationsAdapter(user) { conversation -> adapterOnClick(conversation) }
adapter = OpenConversationsAdapter(user, viewThemeUtils) { conversation -> adapterOnClick(conversation) }
binding.openConversationsRecyclerView.adapter = adapter
binding.searchOpenConversations.setOnClickListener {
searching = !searching
@ -86,9 +86,9 @@ class ListOpenConversationsActivity : BaseActivity() {
}
}
private fun adapterOnClick(conversation: OpenConversation) {
private fun adapterOnClick(conversation: Conversation) {
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)
chatIntent.putExtras(bundle)
@ -143,3 +143,6 @@ class ListOpenConversationsActivity : BaseActivity() {
viewThemeUtils.material.themeToolbar(binding.openConversationsToolbar)
}
}

View File

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