From 0c3ae0f87504e771f4a2391fb8292bb5c961b7d3 Mon Sep 17 00:00:00 2001
From: Janne Mareike Koschinski <janne@kuschku.de>
Date: Sat, 2 Mar 2019 22:32:09 +0100
Subject: [PATCH] Preformance improvements

---
 .../util/irc/format/IrcFormatDeserializer.kt  | 31 +++++++++----------
 1 file changed, 15 insertions(+), 16 deletions(-)

diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/IrcFormatDeserializer.kt b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/IrcFormatDeserializer.kt
index 03e3aff35..79de3d8c8 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/IrcFormatDeserializer.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/irc/format/IrcFormatDeserializer.kt
@@ -22,7 +22,6 @@ package de.kuschku.quasseldroid.util.irc.format
 import android.content.Context
 import android.text.SpannableStringBuilder
 import de.kuschku.quasseldroid.R
-import de.kuschku.quasseldroid.util.compatibility.AndroidCrashFixer
 import de.kuschku.quasseldroid.util.helper.getColorCompat
 import de.kuschku.quasseldroid.util.irc.format.model.FormatDescription
 import de.kuschku.quasseldroid.util.irc.format.model.FormatInfo
@@ -71,11 +70,9 @@ class IrcFormatDeserializer(private val mircColors: IntArray) {
    * @param content mIRC formatted String
    * @return a CharSequence with Android’s span format representing the input string
    */
-  fun formatString(content: String?, colorize: Boolean,
+  fun formatString(str: String?, colorize: Boolean,
                    output: MutableList<FormatInfo>? = null): CharSequence {
-    if (content == null) return ""
-
-    val str = AndroidCrashFixer.removeCrashableCharacters(content)
+    if (str == null) return ""
 
     val plainText = SpannableStringBuilder()
     var bold: FormatDescription<IrcFormat.Bold>? = null
@@ -371,12 +368,14 @@ class IrcFormatDeserializer(private val mircColors: IntArray) {
      * @return Index of first character that is not a digit
      */
     private fun findEndOfNumber(str: String, start: Int): Int {
-      val validCharCodes = setOf('0', '1', '2', '3', '4', '5', '6', '7', '8', '9')
       val searchFrame = str.substring(start)
       var i = 0
-      while (i < 2 && i < searchFrame.length) {
-        if (!validCharCodes.contains(searchFrame[i])) {
-          break
+      loop@ while (i < 2 && i < searchFrame.length) {
+        when (searchFrame[i]) {
+          '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' -> {
+            // Do nothing
+          }
+          else -> break@loop
         }
         i++
       }
@@ -389,15 +388,15 @@ class IrcFormatDeserializer(private val mircColors: IntArray) {
      * @return Index of first character that is not a digit
      */
     private fun findEndOfHexNumber(str: String, start: Int): Int {
-      val validCharCodes = setOf(
-        '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'a', 'b',
-        'c', 'd', 'e', 'f'
-      )
       val searchFrame = str.substring(start)
       var i = 0
-      while (i < 6 && i < searchFrame.length) {
-        if (!validCharCodes.contains(searchFrame[i])) {
-          break
+      loop@ while (i < 6 && i < searchFrame.length) {
+        when (searchFrame[i]) {
+          '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'a', 'b',
+          'c', 'd', 'e', 'f' -> {
+            // Do nothing
+          }
+          else -> break@loop
         }
         i++
       }
-- 
GitLab