From 7bfa90d87968bf2b9fd99b8bb0c167a40c3feb85 Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Sun, 18 Feb 2018 22:07:46 +0100
Subject: [PATCH] Properly render netsplits

(Further information will be in a "detail" view)
---
 .../ui/chat/QuasselMessageRenderer.kt         | 32 ++++++++++++++++---
 app/src/main/res/values/strings.xml           |  8 +++++
 2 files changed, 36 insertions(+), 4 deletions(-)

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 3cc00924f..1d9014e88 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
@@ -157,7 +157,7 @@ class QuasselMessageRenderer(
           )
         }
       )
-      Message_Type.Quit   -> FormattedMessage(
+      Message_Type.Quit -> FormattedMessage(
         message.messageId,
         timeFormatter.format(message.time.atZone(zoneId)),
         if (message.content.isBlank()) {
@@ -175,19 +175,43 @@ class QuasselMessageRenderer(
           )
         }
       )
+      Message_Type.NetsplitJoin -> {
+        val split = message.content.split("#:#")
+        val (server1, server2) = split.last().split(' ')
+        val usersAffected = split.size - 1
+        FormattedMessage(
+          message.messageId,
+          timeFormatter.format(message.time.atZone(zoneId)),
+          context.resources.getQuantityString(
+            R.plurals.message_netsplit_join, usersAffected, server1, server2, usersAffected
+          )
+        )
+      }
+      Message_Type.NetsplitQuit -> {
+        val split = message.content.split("#:#")
+        val (server1, server2) = split.last().split(' ')
+        val usersAffected = split.size - 1
+        FormattedMessage(
+          message.messageId,
+          timeFormatter.format(message.time.atZone(zoneId)),
+          context.resources.getQuantityString(
+            R.plurals.message_netsplit_quit, usersAffected, server1, server2, usersAffected
+          )
+        )
+      }
       Message_Type.Server,
       Message_Type.Info,
-      Message_Type.Error  -> FormattedMessage(
+      Message_Type.Error -> FormattedMessage(
         message.messageId,
         timeFormatter.format(message.time.atZone(zoneId)),
         message.content
       )
-      Message_Type.Topic  -> FormattedMessage(
+      Message_Type.Topic -> FormattedMessage(
         message.messageId,
         timeFormatter.format(message.time.atZone(zoneId)),
         message.content
       )
-      else                -> FormattedMessage(
+      else -> FormattedMessage(
         message.messageId,
         timeFormatter.format(message.time.atZone(zoneId)),
         SpanFormatter.format(
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 3527a83de..5706a39f2 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -18,4 +18,12 @@
   <string name="message_format_part_2">%1$s%2$s left: %3$s</string>
   <string name="message_format_quit_1">%1$s%2$s quit</string>
   <string name="message_format_quit_2">%1$s%2$s quit (%3$s)</string>
+  <plurals name="message_netsplit_join">
+    <item quantity="one">Netsplit between %1$s and %2$s ended: %3$d user joined</item>
+    <item quantity="other">Netsplit between %1$s and %2$s ended: %3$d users joined</item>
+  </plurals>
+  <plurals name="message_netsplit_quit">
+    <item quantity="one">Netsplit between %1$s and %2$s: %3$d user quit</item>
+    <item quantity="other">Netsplit between %1$s and %2$s: %3$d users quit</item>
+  </plurals>
 </resources>
-- 
GitLab