diff --git a/app/src/main/java/com/nextcloud/talk/openconversations/ListOpenConversationsActivity.kt b/app/src/main/java/com/nextcloud/talk/openconversations/ListOpenConversationsActivity.kt index 9918fc153..c07403205 100644 --- a/app/src/main/java/com/nextcloud/talk/openconversations/ListOpenConversationsActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/openconversations/ListOpenConversationsActivity.kt @@ -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) } } + + + diff --git a/app/src/main/java/com/nextcloud/talk/openconversations/adapters/OpenConversationsAdapter.kt b/app/src/main/java/com/nextcloud/talk/openconversations/adapters/OpenConversationsAdapter.kt index b8a9e2d0f..8268349d2 100644 --- a/app/src/main/java/com/nextcloud/talk/openconversations/adapters/OpenConversationsAdapter.kt +++ b/app/src/main/java/com/nextcloud/talk/openconversations/adapters/OpenConversationsAdapter.kt @@ -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(ConversationsCallback) { - private var originalList: List = emptyList() +class OpenConversationsAdapter(val user: User, + val viewThemeUtils: ViewThemeUtils, + private val onClick: (Conversation) -> Unit) : + ListAdapter(ConversationsCallback) { + private var originalList: List = 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() + val newList = mutableListOf() 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, - currentList: MutableList + previousList: MutableList, + currentList: MutableList ) { if (!isFiltering) { originalList = currentList @@ -102,12 +111,12 @@ class OpenConversationsAdapter(val user: User, private val onClick: (OpenConvers } } -object ConversationsCallback : DiffUtil.ItemCallback() { - override fun areItemsTheSame(oldItem: OpenConversation, newItem: OpenConversation): Boolean { +object ConversationsCallback : DiffUtil.ItemCallback() { + 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 } }