From aaf6ab7ba30ddd4bf5db861535d2e86f3061328f Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Sun, 25 Feb 2018 14:31:05 +0100 Subject: [PATCH] Fix an issue with alias expansion --- .../kuschku/quasseldroid_ng/ui/chat/ChatActivity.kt | 9 +++++++-- .../util/irc/format/IrcFormatSerializer.kt | 8 ++++++-- .../libquassel/quassel/syncables/AliasManager.kt | 11 ++++++----- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.kt index eff975c0c..a981cdd53 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ChatActivity.kt @@ -24,6 +24,7 @@ import com.afollestad.materialdialogs.MaterialDialog import com.sothree.slidinguppanel.SlidingUpPanelLayout import de.kuschku.libquassel.protocol.Message import de.kuschku.libquassel.protocol.Message_Type +import de.kuschku.libquassel.quassel.syncables.interfaces.IAliasManager import de.kuschku.libquassel.session.ConnectionState import de.kuschku.libquassel.util.and import de.kuschku.libquassel.util.or @@ -169,9 +170,13 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc viewModel.session { session -> viewModel.getBuffer().let { bufferId -> session.bufferSyncer?.bufferInfo(bufferId)?.also { bufferInfo -> - session.rpcHandler?.sendInput( - bufferInfo, ircFormatSerializer.toEscapeCodes(text) + val output = mutableListOf<IAliasManager.Command>() + session.aliasManager?.processInput( + bufferInfo, ircFormatSerializer.toEscapeCodes(text), output ) + for (command in output) { + session.rpcHandler?.sendInput(command.buffer, command.message) + } } } } diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/util/irc/format/IrcFormatSerializer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/util/irc/format/IrcFormatSerializer.kt index c2b7ddf99..294c09789 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/util/irc/format/IrcFormatSerializer.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/util/irc/format/IrcFormatSerializer.kt @@ -104,6 +104,10 @@ class IrcFormatSerializer internal constructor(private val context: Context) { } } + fun writeReset() { + out.append(CODE_RESET) + } + var next: Int var foreground: Int? = null var background: Int? = null @@ -195,8 +199,8 @@ class IrcFormatSerializer internal constructor(private val context: Context) { i = next } - if (bold || italic || underline || background != -1 || foreground != -1) - out.append(CODE_RESET) + if (bold || italic || underline || background != null || foreground != null) + writeReset() } companion object { 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 33ac5d95e..6774b96f1 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 @@ -89,11 +89,12 @@ class AliasManager constructor( } else { // check for aliases val split = msg.split(' ', ignoreCase = true, limit = 2) - val search: String = split.firstOrNull() - ?: return - val found = _aliases.firstOrNull { it.name.equals(search, true) } - ?: return - expand(found.expansion, info, split.getOrNull(1) ?: "", previousCommands) + val search: String? = split.firstOrNull() + if (search != null) { + val found = _aliases.firstOrNull { it.name.equals(search, true) } + if (found != null) + expand(found.expansion, info, split.getOrNull(1) ?: "", previousCommands) + } } previousCommands.add(IAliasManager.Command(info, msg)) -- GitLab