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 eff975c0cc7f1102d5cefebe2ca9d7997e754b35..a981cdd53bde97fb35d536a33a8ec772f33430d2 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 c2b7ddf9922e45eb03f02203a4cdac122bf404d1..294c097896992b260e9a67c27d0fe7cc55ee2235 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 33ac5d95ecd3671a4627864b4c9592a3f50927d4..6774b96f1454b6861a84305fb591daed51ead52f 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))