From e9ba0397b9e26042a217ee5bc7953d23706bcfd6 Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Wed, 12 Dec 2018 13:39:53 +0100
Subject: [PATCH] Fixes #159

---
 .../ui/coresettings/aliasitem/AliasItemFragment.kt   |  3 +--
 .../ui/coresettings/aliaslist/AliasListAdapter.kt    |  2 +-
 app/src/main/res/values/strings.xml                  |  1 +
 .../libquassel/quassel/syncables/AliasManager.kt     | 12 ++++++------
 .../quassel/syncables/interfaces/IAliasManager.kt    |  6 +++---
 .../quasseldroid/viewmodel/data/AutoCompleteItem.kt  |  6 +++---
 6 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliasitem/AliasItemFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliasitem/AliasItemFragment.kt
index fc061d638..d7b15d669 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliasitem/AliasItemFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliasitem/AliasItemFragment.kt
@@ -39,7 +39,6 @@ import de.kuschku.quasseldroid.settings.AutoCompleteSettings
 import de.kuschku.quasseldroid.settings.MessageSettings
 import de.kuschku.quasseldroid.ui.chat.input.*
 import de.kuschku.quasseldroid.ui.coresettings.SettingsFragment
-import de.kuschku.quasseldroid.util.compatibility.AndroidCrashFixer
 import de.kuschku.quasseldroid.util.irc.format.IrcFormatDeserializer
 import de.kuschku.quasseldroid.util.irc.format.IrcFormatSerializer
 import de.kuschku.quasseldroid.viewmodel.EditorViewModel
@@ -131,7 +130,7 @@ class AliasItemFragment : SettingsFragment(), SettingsFragment.Savable,
     }
 
     rule?.let { data ->
-      name.setText(AndroidCrashFixer.removeCrashableCharacters(data.name))
+      name.setText(data.name ?: "")
       expansion.setText(formatDeserializer.formatString(data.expansion, true))
     }
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/AliasListAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/AliasListAdapter.kt
index 625c40470..e1df794a7 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/AliasListAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/AliasListAdapter.kt
@@ -69,7 +69,7 @@ class AliasListAdapter @Inject constructor(
     notifyItemChanged(index)
   }
 
-  fun indexOf(name: String) = data.map(IAliasManager.Alias::name).indexOf(name)
+  fun indexOf(name: String?) = data.map(IAliasManager.Alias::name).indexOf(name)
 
   fun remove(index: Int) {
     data.removeAt(index)
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 336b63168..7e7f849a0 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -66,6 +66,7 @@
   <string name="label_join_long">Join Channel</string>
   <string name="label_libraries">Libraries</string>
   <string name="label_license">License</string>
+  <string name="label_match_all">Matches all messages</string>
   <string name="label_mark_read">Mark Read</string>
   <string name="label_mention">Mention</string>
   <string name="label_mention_long">Copy username into input line</string>
diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/AliasManager.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/AliasManager.kt
index 3e26c5bca..132f1624e 100644
--- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/AliasManager.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/AliasManager.kt
@@ -60,7 +60,7 @@ class AliasManager constructor(
     _aliases = names.zip(expansions, ::Alias).toList()
   }
 
-  override fun addAlias(name: String, expansion: String) {
+  override fun addAlias(name: String?, expansion: String?) {
     if (contains(name)) {
       return
     }
@@ -70,9 +70,9 @@ class AliasManager constructor(
     super.addAlias(name, expansion)
   }
 
-  fun indexOf(name: String) = _aliases.map(Alias::name).indexOf(name)
+  fun indexOf(name: String?) = _aliases.map(Alias::name).indexOf(name)
 
-  fun contains(name: String) = _aliases.map(Alias::name).contains(name)
+  fun contains(name: String?) = _aliases.map(Alias::name).contains(name)
 
   fun defaults() = listOf(
     Alias("j", "/join $0"),
@@ -124,7 +124,7 @@ class AliasManager constructor(
       if (search != null) {
         val found = _aliases.firstOrNull { it.name.equals(search, true) }
         if (found != null) {
-          expand(found.expansion, info, split.getOrNull(1) ?: "", previousCommands)
+          expand(found.expansion ?: "", info, split.getOrNull(1) ?: "", previousCommands)
           return
         }
       }
@@ -138,8 +138,8 @@ class AliasManager constructor(
     val network = proxy.network(bufferInfo.networkId)
 
     val paramRange = Regex("""\$(\d+)\.\.(\d*)""")
-    val commands = expansion.split("; ?".toRegex()).dropLastWhile { it.isEmpty() }
-    val params = msg.split(' ').dropLastWhile({ it.isEmpty() })
+    val commands = expansion.split("; ?".toRegex()).dropLastWhile(String::isEmpty)
+    val params = msg.split(' ').dropLastWhile(String::isEmpty)
     val expandedCommands = LinkedList<String>()
 
     for (i in commands.indices) {
diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/IAliasManager.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/IAliasManager.kt
index efb7edefc..d45b8d48e 100644
--- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/IAliasManager.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/interfaces/IAliasManager.kt
@@ -32,7 +32,7 @@ interface IAliasManager : ISyncableObject {
   fun initAliases(): QVariantMap
   fun initSetAliases(aliases: QVariantMap)
   @Slot
-  fun addAlias(name: String, expansion: String) {
+  fun addAlias(name: String?, expansion: String?) {
     SYNC("addAlias", ARG(name, Type.QString), ARG(expansion, Type.QString))
   }
 
@@ -42,8 +42,8 @@ interface IAliasManager : ISyncableObject {
   }
 
   data class Alias(
-    val name: String,
-    val expansion: String
+    val name: String?,
+    val expansion: String?
   ) : Serializable
 
   data class Command(
diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/AutoCompleteItem.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/AutoCompleteItem.kt
index 29c9e39fb..53e44b93b 100644
--- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/AutoCompleteItem.kt
+++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/data/AutoCompleteItem.kt
@@ -79,9 +79,9 @@ sealed class AutoCompleteItem(open val name: String, val suffix: String, private
   }
 
   data class AliasItem(
-    val alias: String,
-    val expansion: String
-  ) : AutoCompleteItem(alias, " ", 1)
+    val alias: String?,
+    val expansion: String?
+  ) : AutoCompleteItem(alias ?: "", " ", 1)
 
   data class ChannelItem(
     val info: BufferInfo,
-- 
GitLab