From 95806315819b9e3810a4fcc68932765dd01aaecd Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Sat, 31 Mar 2018 23:02:42 +0200
Subject: [PATCH] Fix a missing method on Android 4.4

---
 .../de/kuschku/libquassel/session/ObjectStorage.kt    |  3 ++-
 .../de/kuschku/libquassel/util/helpers/MapHelper.kt   | 11 +++++++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/lib/src/main/java/de/kuschku/libquassel/session/ObjectStorage.kt b/lib/src/main/java/de/kuschku/libquassel/session/ObjectStorage.kt
index 5cee6a28e..044bfeba4 100644
--- a/lib/src/main/java/de/kuschku/libquassel/session/ObjectStorage.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/session/ObjectStorage.kt
@@ -6,6 +6,7 @@ import de.kuschku.libquassel.protocol.Type
 import de.kuschku.libquassel.protocol.message.SignalProxyMessage
 import de.kuschku.libquassel.quassel.exceptions.ObjectNotFoundException
 import de.kuschku.libquassel.quassel.syncables.interfaces.ISyncableObject
+import de.kuschku.libquassel.util.helpers.removeIfEqual
 
 class ObjectStorage(private val proxy: SignalProxy) {
   private val objectTree: MutableMap<Pair<String, String>, ISyncableObject> = HashMap()
@@ -35,7 +36,7 @@ class ObjectStorage(private val proxy: SignalProxy) {
 
   fun rename(obj: ISyncableObject, new: String, old: String) {
     objectTree[Pair(obj.className, new)] = obj
-    objectTree.remove(Pair(obj.className, old), obj)
+    objectTree.removeIfEqual(Pair(obj.className, old), obj)
     if (get(obj.className, new) != obj) {
       throw IllegalStateException("Object should be existing")
     }
diff --git a/lib/src/main/java/de/kuschku/libquassel/util/helpers/MapHelper.kt b/lib/src/main/java/de/kuschku/libquassel/util/helpers/MapHelper.kt
index 471d16347..d0aeb7099 100644
--- a/lib/src/main/java/de/kuschku/libquassel/util/helpers/MapHelper.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/util/helpers/MapHelper.kt
@@ -1,3 +1,14 @@
 package de.kuschku.libquassel.util.helpers
 
 fun <K, V> Map<K, V>.getOr(key: K, defValue: V) = this[key] ?: defValue
+
+fun <K, V> MutableMap<K, V>.removeIfEqual(key: K, value: V): Boolean {
+  if (!this.containsKey(key))
+    return false
+
+  if (this[key] != value)
+    return false
+
+  this.remove(key)
+  return true
+}
-- 
GitLab