From 5e4476c903421d5d8f74329072ce3907ee292827 Mon Sep 17 00:00:00 2001 From: Mariotaku Lee Date: Sun, 26 Feb 2017 00:04:57 +0800 Subject: [PATCH] improved participants limitation --- .../adapter/BaseRecyclerViewAdapter.kt | 5 +++- .../MessageConversationInfoFragment.kt | 26 +++++++++++++++++-- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/adapter/BaseRecyclerViewAdapter.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/adapter/BaseRecyclerViewAdapter.kt index 4a49d7410..f6a5e28db 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/adapter/BaseRecyclerViewAdapter.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/adapter/BaseRecyclerViewAdapter.kt @@ -28,6 +28,7 @@ import org.mariotaku.twidere.constant.displayProfileImageKey import org.mariotaku.twidere.constant.profileImageStyleKey import org.mariotaku.twidere.constant.showAbsoluteTimeKey import org.mariotaku.twidere.constant.textSizeKey +import org.mariotaku.twidere.model.DefaultFeatures import org.mariotaku.twidere.util.* import org.mariotaku.twidere.util.dagger.GeneralComponentHelper import javax.inject.Inject @@ -45,13 +46,15 @@ abstract class BaseRecyclerViewAdapter( @Inject override final lateinit var userColorNameManager: UserColorNameManager @Inject + override final lateinit var bidiFormatter: BidiFormatter + @Inject lateinit var preferences: SharedPreferencesWrapper @Inject lateinit var readStateManager: ReadStateManager @Inject lateinit var multiSelectManager: MultiSelectManager @Inject - override final lateinit var bidiFormatter: BidiFormatter + lateinit var defaultFeatures: DefaultFeatures override final val profileImageStyle: Int override final val textSize: Float diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/message/MessageConversationInfoFragment.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/message/MessageConversationInfoFragment.kt index 032db7226..294b1763a 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/message/MessageConversationInfoFragment.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/message/MessageConversationInfoFragment.kt @@ -68,6 +68,8 @@ import org.mariotaku.twidere.fragment.iface.IToolBarSupportFragment import org.mariotaku.twidere.fragment.message.MessageConversationInfoFragment.ConversationInfoAdapter.Companion.VIEW_TYPE_HEADER import org.mariotaku.twidere.fragment.message.MessageConversationInfoFragment.ConversationInfoAdapter.Companion.VIEW_TYPE_SPACE import org.mariotaku.twidere.model.* +import org.mariotaku.twidere.model.ParcelableMessageConversation.ConversationType +import org.mariotaku.twidere.model.ParcelableMessageConversation.ExtrasType import org.mariotaku.twidere.provider.TwidereDataStore.Messages.Conversations import org.mariotaku.twidere.task.twitter.message.AddParticipantsTask import org.mariotaku.twidere.task.twitter.message.DestroyConversationTask @@ -313,9 +315,22 @@ class MessageConversationInfoFragment : BaseFragment(), IToolBarSupportFragment, override fun getItemCount(): Int { val conversation = this.conversation ?: return 0 + val participantsSize = conversation.participants.size itemCounts[ITEM_INDEX_HEADER] = 1 - itemCounts[ITEM_INDEX_ITEM] = conversation.participants.size - itemCounts[ITEM_INDEX_ADD_USER] = 1 + itemCounts[ITEM_INDEX_ITEM] = participantsSize + when (conversation.conversation_type) { + ConversationType.GROUP -> { + if (participantsSize < defaultFeatures.getDirectMessageMaxParticipants(conversation.conversation_extras_type)) { + itemCounts[ITEM_INDEX_ADD_USER] = 1 + } else { + itemCounts[ITEM_INDEX_ADD_USER] = 0 + } + } + else -> { + itemCounts[ITEM_INDEX_ADD_USER] = 0 + } + } + itemCounts[ITEM_INDEX_SPACE] = 1 return itemCounts.itemCount } @@ -508,3 +523,10 @@ class MessageConversationInfoFragment : BaseFragment(), IToolBarSupportFragment, const val REQUEST_CONVERSATION_ADD_USER = 101 } } + +private fun DefaultFeatures.getDirectMessageMaxParticipants(extrasType: String?): Long { + when (extrasType) { + ExtrasType.TWITTER_OFFICIAL -> return twitterDirectMessageMaxParticipants + } + return 2 +}