From 69eaf2695e8c48eb78fec1c1defe54e6d41dfa24 Mon Sep 17 00:00:00 2001
From: Valere <valeref@matrix.org>
Date: Thu, 2 Jul 2020 14:08:09 +0200
Subject: [PATCH 1/5] FIx / inbound session bad migration

---
 .../internal/crypto/store/db/RealmCryptoStoreMigration.kt    | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/store/db/RealmCryptoStoreMigration.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/store/db/RealmCryptoStoreMigration.kt
index eb2fc9ebad..47af558b90 100644
--- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/store/db/RealmCryptoStoreMigration.kt
+++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/store/db/RealmCryptoStoreMigration.kt
@@ -182,7 +182,8 @@ internal class RealmCryptoStoreMigration @Inject constructor(private val crossSi
                     try {
                         val oldSerializedData = obj.getString("olmInboundGroupSessionData")
                         deserializeFromRealm<MXOlmInboundGroupSession2>(oldSerializedData)?.let { mxOlmInboundGroupSession2 ->
-                            val newOlmInboundGroupSessionWrapper2 = OlmInboundGroupSessionWrapper2()
+                            val sessionKey = mxOlmInboundGroupSession2.mSession.sessionIdentifier()
+                            val newOlmInboundGroupSessionWrapper = OlmInboundGroupSessionWrapper(sessionKey, false)
                                     .apply {
                                         olmInboundGroupSession = mxOlmInboundGroupSession2.mSession
                                         roomId = mxOlmInboundGroupSession2.mRoomId
@@ -191,7 +192,7 @@ internal class RealmCryptoStoreMigration @Inject constructor(private val crossSi
                                         forwardingCurve25519KeyChain = mxOlmInboundGroupSession2.mForwardingCurve25519KeyChain
                                     }
 
-                            obj.setString("olmInboundGroupSessionData", serializeForRealm(newOlmInboundGroupSessionWrapper2))
+                            obj.setString("olmInboundGroupSessionData", serializeForRealm(newOlmInboundGroupSessionWrapper))
                         }
                     } catch (e: Exception) {
                         Timber.e(e, "Error")

From 596fcf94bac88f461cb6ef487f893fe710a6d613 Mon Sep 17 00:00:00 2001
From: Valere <valeref@matrix.org>
Date: Thu, 2 Jul 2020 19:26:05 +0200
Subject: [PATCH 2/5] Fix / Serialization issues

Fixes  keybackup import failing and UTD of incoming messages
---
 matrix-sdk-android/proguard-rules.pro | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/matrix-sdk-android/proguard-rules.pro b/matrix-sdk-android/proguard-rules.pro
index 08a20cbf0a..fa860d8049 100644
--- a/matrix-sdk-android/proguard-rules.pro
+++ b/matrix-sdk-android/proguard-rules.pro
@@ -64,3 +64,19 @@
 
 ### Webrtc
 -keep class org.webrtc.** { *; }
+
+### Serializable persisted classes
+# https://www.guardsquare.com/en/products/proguard/manual/examples#serializable
+-keepnames class * implements java.io.Serializable
+
+-keepclassmembers class * implements java.io.Serializable {
+    static final long serialVersionUID;
+    private static final java.io.ObjectStreamField[] serialPersistentFields;
+    !static !transient <fields>;
+    !private <fields>;
+    !private <methods>;
+    private void writeObject(java.io.ObjectOutputStream);
+    private void readObject(java.io.ObjectInputStream);
+    java.lang.Object writeReplace();
+    java.lang.Object readResolve();
+}
\ No newline at end of file

From e098b87d0a9908f9cccbb0afab83819433083f2d Mon Sep 17 00:00:00 2001
From: Benoit Marty <benoitm@matrix.org>
Date: Thu, 2 Jul 2020 21:30:49 +0200
Subject: [PATCH 3/5] Update comment

---
 .../internal/crypto/store/db/RealmCryptoStoreMigration.kt       | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/store/db/RealmCryptoStoreMigration.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/store/db/RealmCryptoStoreMigration.kt
index 47af558b90..7bf8e2478f 100644
--- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/store/db/RealmCryptoStoreMigration.kt
+++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/crypto/store/db/RealmCryptoStoreMigration.kt
@@ -176,7 +176,7 @@ internal class RealmCryptoStoreMigration @Inject constructor(private val crossSi
                     }
                 }
 
-        // Convert MXOlmInboundGroupSession2 to OlmInboundGroupSessionWrapper2
+        // Convert MXOlmInboundGroupSession2 to OlmInboundGroupSessionWrapper
         realm.schema.get("OlmInboundGroupSessionEntity")
                 ?.transform { obj ->
                     try {

From 15223ecfe4ccda4b97b27c8511d668e9b0b5e49c Mon Sep 17 00:00:00 2001
From: Benoit Marty <benoitm@matrix.org>
Date: Thu, 2 Jul 2020 21:31:39 +0200
Subject: [PATCH 4/5] Update changelog with the recent change

---
 CHANGES.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/CHANGES.md b/CHANGES.md
index 4a7d0d70af..61e27a1476 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -8,7 +8,7 @@ Improvements 🙌:
  -
 
 Bugfix 🐛:
- -
+ - Fix Exception when importing keys (#1576)
 
 Translations 🗣:
  -

From bfb8b6203cca75448e97efc0f7bafc2ff62a7121 Mon Sep 17 00:00:00 2001
From: Benoit Marty <benoitm@matrix.org>
Date: Thu, 2 Jul 2020 22:02:42 +0200
Subject: [PATCH 5/5] Add proguard command (commented)

---
 vector/proguard-rules.pro | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/vector/proguard-rules.pro b/vector/proguard-rules.pro
index 56d3b95510..bc27767d8a 100644
--- a/vector/proguard-rules.pro
+++ b/vector/proguard-rules.pro
@@ -20,4 +20,7 @@
 # hide the original source file name.
 #-renamesourcefileattribute SourceFile
 
--keep class im.vector.riotx.features.** { *; }
\ No newline at end of file
+-keep class im.vector.riotx.features.** { *; }
+
+## print all the rules in a file
+# -printconfiguration ../proguard_files/full-r8-config.txt