From fa74da92a0879603ba4db1c2504230d3fd1d51dc Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Sun, 18 Feb 2018 22:36:11 +0100
Subject: [PATCH] Properly handle casemapping in sorting

---
 .../de/kuschku/quasseldroid_ng/ui/chat/NickListAdapter.kt   | 6 ++++--
 .../de/kuschku/quasseldroid_ng/ui/chat/NickListFragment.kt  | 3 ++-
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/NickListAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/NickListAdapter.kt
index 7e4e0c413..9b17073fb 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/NickListAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/NickListAdapter.kt
@@ -13,6 +13,7 @@ import butterknife.BindView
 import butterknife.ButterKnife
 import de.kuschku.quasseldroid_ng.R
 import de.kuschku.quasseldroid_ng.util.helper.visibleIf
+import de.kuschku.quasseldroid_ng.util.irc.IrcCaseMappers
 
 class NickListAdapter(
   lifecycleOwner: LifecycleOwner,
@@ -30,7 +31,7 @@ class NickListAdapter(
         val list = it ?: emptyList()
         val old: List<IrcUserItem> = data
         val new: List<IrcUserItem> = list
-          .sortedBy { it.nick.toLowerCase() }
+          .sortedBy { IrcCaseMappers[it.networkCasemapping].toLowerCase(it.nick) }
           .sortedBy { it.lowestMode }
         val result = DiffUtil.calculateDiff(
           object : DiffUtil.Callback() {
@@ -81,7 +82,8 @@ class NickListAdapter(
     val modes: String,
     val lowestMode: Int,
     val realname: String,
-    val away: Boolean
+    val away: Boolean,
+    val networkCasemapping: String
   )
 
   class NickViewHolder(
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/NickListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/NickListFragment.kt
index 39d97df1a..acbecda60 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/NickListFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/NickListFragment.kt
@@ -65,7 +65,8 @@ class NickListFragment : ServiceBoundFragment() {
                   network.modesToPrefixes(userModes),
                   lowestMode,
                   realName,
-                  away
+                  away,
+                  network.support("CASEMAPPING")
                 )
               }
             }, { array: Array<Any> ->
-- 
GitLab