From 9090d941ae25f2f479d0be66f1cfdae69017ba57 Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Mon, 19 Feb 2018 01:27:48 +0100
Subject: [PATCH] Fix a crashing bug due to the context not being available yet

---
 .../ui/chat/BufferViewConfigFragment.kt       | 16 +++++++++-----
 .../ui/chat/NickListFragment.kt               | 12 +++++++---
 .../ui/chat/QuasselMessageRenderer.kt         |  2 +-
 .../ui/chat/ToolbarFragment.kt                | 22 +++++++++++++------
 4 files changed, 35 insertions(+), 17 deletions(-)

diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigFragment.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigFragment.kt
index 026c7b1da..23d8508c7 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/BufferViewConfigFragment.kt
@@ -74,8 +74,8 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
     }
   }
 
-  val ircFormatDeserializer = IrcFormatDeserializer(context!!)
-  val renderingSettings = RenderingSettings(
+  private var ircFormatDeserializer: IrcFormatDeserializer? = null
+  private val renderingSettings = RenderingSettings(
     showPrefix = RenderingSettings.ShowPrefixMode.FIRST,
     colorizeNicknames = RenderingSettings.ColorizeNicknamesMode.ALL_BUT_MINE,
     colorizeMirc = true,
@@ -134,9 +134,9 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
                                   away                 -> BufferListAdapter.BufferStatus.AWAY
                                   else                 -> BufferListAdapter.BufferStatus.ONLINE
                                 },
-                                description = ircFormatDeserializer.formatString(
+                                description = ircFormatDeserializer?.formatString(
                                   realName, renderingSettings.colorizeMirc
-                                ),
+                                ) ?: realName,
                                 activity = activity
                               )
                             }
@@ -155,9 +155,9 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
                                 IrcChannel.NULL -> BufferListAdapter.BufferStatus.OFFLINE
                                 else            -> BufferListAdapter.BufferStatus.ONLINE
                               },
-                              description = ircFormatDeserializer.formatString(
+                              description = ircFormatDeserializer?.formatString(
                                 topic, renderingSettings.colorizeMirc
-                              ),
+                              ) ?: topic,
                               activity = activity
                             )
                           }
@@ -210,6 +210,10 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
   override fun onCreate(savedInstanceState: Bundle?) {
     handlerThread.onCreate()
     super.onCreate(savedInstanceState)
+
+    if (ircFormatDeserializer == null) {
+      ircFormatDeserializer = IrcFormatDeserializer(context!!)
+    }
   }
 
   override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
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 5ada6fa5b..be9bd31ff 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
@@ -34,8 +34,8 @@ class NickListFragment : ServiceBoundFragment() {
   @BindView(R.id.nickList)
   lateinit var nickList: RecyclerView
 
-  val ircFormatDeserializer = IrcFormatDeserializer(context!!)
-  val renderingSettings = RenderingSettings(
+  private var ircFormatDeserializer: IrcFormatDeserializer? = null
+  private val renderingSettings = RenderingSettings(
     showPrefix = RenderingSettings.ShowPrefixMode.FIRST,
     colorizeNicknames = RenderingSettings.ColorizeNicknamesMode.ALL_BUT_MINE,
     colorizeMirc = true,
@@ -74,7 +74,9 @@ class NickListFragment : ServiceBoundFragment() {
                   user.nick(),
                   network.modesToPrefixes(userModes),
                   lowestMode,
-                  ircFormatDeserializer.formatString(realName, renderingSettings.colorizeMirc),
+                  ircFormatDeserializer?.formatString(
+                    realName, renderingSettings.colorizeMirc
+                  ) ?: realName,
                   away,
                   network.support("CASEMAPPING")
                 )
@@ -97,6 +99,10 @@ class NickListFragment : ServiceBoundFragment() {
   override fun onCreate(savedInstanceState: Bundle?) {
     handlerThread.onCreate()
     super.onCreate(savedInstanceState)
+
+    if (ircFormatDeserializer == null) {
+      ircFormatDeserializer = IrcFormatDeserializer(context!!)
+    }
   }
 
   override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/QuasselMessageRenderer.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/QuasselMessageRenderer.kt
index df5950c06..4829aef05 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/QuasselMessageRenderer.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/QuasselMessageRenderer.kt
@@ -210,7 +210,7 @@ class QuasselMessageRenderer(
       Message_Type.Error -> FormattedMessage(
         message.messageId,
         timeFormatter.format(message.time.atZone(zoneId)),
-        message.content
+        formatContent(message.content)
       )
       Message_Type.Topic -> FormattedMessage(
         message.messageId,
diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ToolbarFragment.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ToolbarFragment.kt
index 235822264..4ef64d13b 100644
--- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ToolbarFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/ToolbarFragment.kt
@@ -23,6 +23,7 @@ import de.kuschku.quasseldroid_ng.ui.settings.data.RenderingSettings
 import de.kuschku.quasseldroid_ng.util.helper.*
 import de.kuschku.quasseldroid_ng.util.irc.format.IrcFormatDeserializer
 import de.kuschku.quasseldroid_ng.util.service.ServiceBoundFragment
+import de.kuschku.quasseldroid_ng.util.ui.SpanFormatter
 import io.reactivex.Observable
 
 class ToolbarFragment : ServiceBoundFragment() {
@@ -45,8 +46,8 @@ class ToolbarFragment : ServiceBoundFragment() {
     showLag = true
   )
 
-  val ircFormatDeserializer = IrcFormatDeserializer(context!!)
-  val renderingSettings = RenderingSettings(
+  private var ircFormatDeserializer: IrcFormatDeserializer? = null
+  private val renderingSettings = RenderingSettings(
     showPrefix = RenderingSettings.ShowPrefixMode.FIRST,
     colorizeNicknames = RenderingSettings.ColorizeNicknamesMode.ALL_BUT_MINE,
     colorizeMirc = true,
@@ -81,9 +82,9 @@ class ToolbarFragment : ServiceBoundFragment() {
                       BufferData(
                         info = info,
                         network = network.networkInfo(),
-                        description = ircFormatDeserializer.formatString(
+                        description = ircFormatDeserializer?.formatString(
                           realName, renderingSettings.colorizeMirc
-                        )
+                        ) ?: realName
                       )
                     }
                   }
@@ -96,9 +97,9 @@ class ToolbarFragment : ServiceBoundFragment() {
                       BufferData(
                         info = info,
                         network = network.networkInfo(),
-                        description = ircFormatDeserializer.formatString(
+                        description = ircFormatDeserializer?.formatString(
                           topic, renderingSettings.colorizeMirc
-                        )
+                        ) ?: topic
                       )
                     }
                   }
@@ -154,6 +155,13 @@ class ToolbarFragment : ServiceBoundFragment() {
       toolbarSubtitle.visibleIf(value?.isNotEmpty() == true)
     }
 
+  override fun onCreate(savedInstanceState: Bundle?) {
+    super.onCreate(savedInstanceState)
+    if (ircFormatDeserializer == null) {
+      ircFormatDeserializer = IrcFormatDeserializer(context!!)
+    }
+  }
+
   override fun onCreateView(inflater: LayoutInflater,
                             container: ViewGroup?,
                             savedInstanceState: Bundle?): View? {
@@ -177,7 +185,7 @@ class ToolbarFragment : ServiceBoundFragment() {
           if (description.isNullOrBlank()) {
             this.subtitle = "Lag: ${lag}ms"
           } else {
-            this.subtitle = "Lag: ${lag}ms | $description"
+            this.subtitle = SpanFormatter.format("Lag: %dms | %s", lag, description)
           }
         }
       }
-- 
GitLab