From b80396b34bb41dba4d8c2648387dcd22b6f243d7 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Wed, 14 Apr 2021 18:09:11 +0200 Subject: [PATCH] sort participants list Signed-off-by: Andy Scherzinger --- .../talk/adapters/items/UserItem.java | 12 ++++------ .../controllers/ConversationInfoController.kt | 22 ++++++++++++++++--- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/adapters/items/UserItem.java b/app/src/main/java/com/nextcloud/talk/adapters/items/UserItem.java index 87ba9093d..d13d9b292 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/items/UserItem.java +++ b/app/src/main/java/com/nextcloud/talk/adapters/items/UserItem.java @@ -26,6 +26,10 @@ import android.text.TextUtils; import android.view.View; import android.widget.ImageView; +import androidx.annotation.Nullable; +import androidx.core.content.res.ResourcesCompat; +import androidx.emoji.widget.EmojiTextView; + import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.drawee.interfaces.DraweeController; import com.facebook.drawee.view.SimpleDraweeView; @@ -40,11 +44,6 @@ import com.nextcloud.talk.utils.DisplayUtils; import java.util.List; import java.util.regex.Pattern; -import androidx.annotation.Nullable; - -import androidx.core.content.ContextCompat; -import androidx.core.content.res.ResourcesCompat; -import androidx.emoji.widget.EmojiTextView; import butterknife.BindView; import butterknife.ButterKnife; import eu.davidea.flexibleadapter.FlexibleAdapter; @@ -269,7 +268,6 @@ public class UserItem extends AbstractFlexibleItem this.header = header; } - static class UserItemViewHolder extends FlexibleViewHolder { @BindView(R.id.name_text) @@ -297,6 +295,4 @@ public class UserItem extends AbstractFlexibleItem ButterKnife.bind(this, view); } } - - } diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.kt b/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.kt index c5678fe8c..f9a31e419 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.kt @@ -78,7 +78,6 @@ import com.yarolegovich.mp.MaterialStandardPreference import com.yarolegovich.mp.MaterialSwitchPreference import eu.davidea.flexibleadapter.FlexibleAdapter import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager -import eu.davidea.flexibleadapter.items.AbstractFlexibleItem import io.reactivex.Observer import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable @@ -142,8 +141,8 @@ class ConversationInfoController(args: Bundle) : BaseController(args), FlexibleA private var databaseStorageModule: DatabaseStorageModule? = null private var conversation: Conversation? = null - private var adapter: FlexibleAdapter>? = null - private var recyclerViewItems: MutableList> = ArrayList() + private var adapter: FlexibleAdapter? = null + private var recyclerViewItems: MutableList = ArrayList() private var saveStateHandler: LovelySaveStateHandler? = null @@ -376,6 +375,7 @@ class ConversationInfoController(args: Bundle) : BaseController(args), FlexibleA } } + Collections.sort(recyclerViewItems, UserItemComparator()) if (ownUserItem != null) { recyclerViewItems.add(0, ownUserItem) @@ -684,4 +684,20 @@ class ConversationInfoController(args: Bundle) : BaseController(args), FlexibleA private const val ID_DELETE_CONVERSATION_DIALOG = 0 } + + class UserItemComparator : Comparator { + override fun compare(left: UserItem, right: UserItem): Int { + if (left.isOnline && !right.isOnline) { + return -1 + } else if (!left.isOnline && right.isOnline) { + return 1 + } + if (Participant.ParticipantType.MODERATOR == left.model.type && Participant.ParticipantType.MODERATOR != right.model.type) { + return -1 + } else if (Participant.ParticipantType.MODERATOR != left.model.type && Participant.ParticipantType.MODERATOR == right.model.type) { + return 1 + } + return left.model.displayName.compareTo(right.model.displayName) + } + } }