From f9e6f4b5332712baae73179eaaac98fbe26ba38c Mon Sep 17 00:00:00 2001
From: ganfra <francois.ganard@gmail.com>
Date: Thu, 11 Oct 2018 09:05:32 +0200
Subject: [PATCH] Integration with old SDK - make it works

---
 .idea/caches/build_file_checksums.ser         | Bin 651 -> 653 bytes
 .../features/login/LoginActivity.kt           |   1 +
 .../auth/data/HomeServerConnectionConfig.kt   |  19 ++++++++++++++++--
 .../android/internal/di/NetworkModule.kt      |   4 +++-
 .../android/internal/di/SessionModule.kt      |   5 ++++-
 .../internal/events/sync/SyncModule.kt        |   2 +-
 .../events/sync/SyncResponseHandler.kt        |   4 ++--
 .../internal/legacy/util/ContentManager.java  |   4 ++--
 .../internal/legacy/util/JsonUtils.java       |   1 -
 .../network/parsing/UriMoshiAdapter.kt        |  19 ++++++++++++++++++
 .../android/internal/network/ssl/CertUtil.kt  |   6 +++---
 11 files changed, 52 insertions(+), 13 deletions(-)
 create mode 100644 matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/network/parsing/UriMoshiAdapter.kt

diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
index 4bf38514d5820bdcddea4bfb9d908f6b2722e82b..f844065a2b5b117fb29e9fb47bb347954b242e71 100644
GIT binary patch
delta 61
zcmV-D0K)%^1&sxem;_<bP!Exuh?8gmw<4W0-4f!BFNqE8lw$EA2~KnXDKAxXWpZ;b
TW^!R}V{d75lQID|lQ9BX@--JG

delta 58
zcmV-A0LA}}1&alcm;_#f#a5A=hz=(&RdZ!>b1!FMZf0^}ll=iUlOzGR5P#Oppp<nz
Q%n{+Npnf)idXq5%T(MFZJOBUy

diff --git a/app/src/main/java/im/vector/riotredesign/features/login/LoginActivity.kt b/app/src/main/java/im/vector/riotredesign/features/login/LoginActivity.kt
index c280bb4684..9b3e6b00e3 100644
--- a/app/src/main/java/im/vector/riotredesign/features/login/LoginActivity.kt
+++ b/app/src/main/java/im/vector/riotredesign/features/login/LoginActivity.kt
@@ -32,6 +32,7 @@ class LoginActivity : RiotActivity() {
         val homeServerConnectionConfig = HomeServerConnectionConfig.Builder()
                 .withHomeServerUri("https://matrix.org/")
                 .withIdentityServerUri("https://vector.im")
+                .withAntiVirusServerUri("https://matrix.org/")
                 .build()
 
         authenticator.authenticate(homeServerConnectionConfig, login, password, object : MatrixCallback<Session> {
diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/auth/data/HomeServerConnectionConfig.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/auth/data/HomeServerConnectionConfig.kt
index 164a502a9b..0ffcbb77ab 100644
--- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/auth/data/HomeServerConnectionConfig.kt
+++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/auth/data/HomeServerConnectionConfig.kt
@@ -43,7 +43,7 @@ data class HomeServerConnectionConfig(
          */
         fun withHomeServerUri(hsUri: Uri): Builder {
             if (hsUri.scheme != "http" && hsUri.scheme != "https") {
-                throw RuntimeException("Invalid home server URI: " + hsUri!!)
+                throw RuntimeException("Invalid home server URI: " + hsUri)
             }
             // remove trailing /
             homeServerUri = if (hsUri.toString().endsWith("/")) {
@@ -148,6 +148,10 @@ data class HomeServerConnectionConfig(
             return this
         }
 
+        fun withAntiVirusServerUri(antivirusServerUriString: String?): Builder {
+            return withAntiVirusServerUri(antivirusServerUriString?.let { Uri.parse(it) })
+        }
+
         /**
          * Update the anti-virus server URI.
          *
@@ -211,7 +215,18 @@ data class HomeServerConnectionConfig(
          * @return the [HomeServerConnectionConfig]
          */
         fun build(): HomeServerConnectionConfig {
-            return HomeServerConnectionConfig(homeServerUri, identityServerUri, antiVirusServerUri, allowedFingerprints, shouldPin, tlsVersions, tlsCipherSuites, shouldAcceptTlsExtensions, allowHttpExtension, forceUsageTlsVersions)
+            return HomeServerConnectionConfig(
+                    homeServerUri,
+                    identityServerUri,
+                    antiVirusServerUri,
+                    allowedFingerprints,
+                    shouldPin,
+                    tlsVersions,
+                    tlsCipherSuites,
+                    shouldAcceptTlsExtensions,
+                    allowHttpExtension,
+                    forceUsageTlsVersions
+            )
         }
 
     }
diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/di/NetworkModule.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/di/NetworkModule.kt
index 9504b7b072..ebf688d7ca 100644
--- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/di/NetworkModule.kt
+++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/di/NetworkModule.kt
@@ -1,7 +1,9 @@
 package im.vector.matrix.android.internal.di
 
 import com.jakewharton.retrofit2.adapter.kotlin.coroutines.CoroutineCallAdapterFactory
+import com.squareup.moshi.Moshi
 import im.vector.matrix.android.internal.network.AccessTokenInterceptor
+import im.vector.matrix.android.internal.network.parsing.UriMoshiAdapter
 import okhttp3.OkHttpClient
 import okhttp3.logging.HttpLoggingInterceptor
 import org.koin.dsl.context.ModuleDefinition
@@ -38,7 +40,7 @@ class NetworkModule : Module {
         }
 
         single {
-            MoshiProvider.providesMoshi()
+            Moshi.Builder().add(UriMoshiAdapter()).build()
         }
 
         single {
diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/di/SessionModule.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/di/SessionModule.kt
index 0997947de1..ca1a28d1d7 100644
--- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/di/SessionModule.kt
+++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/di/SessionModule.kt
@@ -13,10 +13,11 @@ import retrofit2.Retrofit
 class SessionModule(private val sessionParams: SessionParams) : Module {
 
     override fun invoke(): ModuleDefinition = module(override = true) {
+
         scope(DefaultSession.SCOPE) {
             val retrofitBuilder = get() as Retrofit.Builder
             retrofitBuilder
-                    .baseUrl(sessionParams.homeServerConnectionConfig?.homeServerUri.toString())
+                    .baseUrl(sessionParams.homeServerConnectionConfig.homeServerUri.toString())
                     .build()
         }
 
@@ -24,6 +25,8 @@ class SessionModule(private val sessionParams: SessionParams) : Module {
             val store = MXFileStore(sessionParams.credentials, false, get())
             val dataHandler = MXDataHandler(store, sessionParams.credentials)
             MXSession.Builder(sessionParams, dataHandler, get()).build()
+            store.setDataHandler(dataHandler)
+            dataHandler
         }
 
     }.invoke()
diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/events/sync/SyncModule.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/events/sync/SyncModule.kt
index 01b95e265d..a0ec4d6409 100644
--- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/events/sync/SyncModule.kt
+++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/events/sync/SyncModule.kt
@@ -16,7 +16,7 @@ class SyncModule : Module {
         }
 
         scope(DefaultSession.SCOPE) {
-            SyncResponseHandler(get(), get())
+            SyncResponseHandler(get())
         }
 
         scope(DefaultSession.SCOPE) {
diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/events/sync/SyncResponseHandler.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/events/sync/SyncResponseHandler.kt
index d3ab929db2..3c2743af92 100644
--- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/events/sync/SyncResponseHandler.kt
+++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/events/sync/SyncResponseHandler.kt
@@ -22,9 +22,9 @@ import kotlin.collections.emptyList
 import kotlin.collections.isNotEmpty
 import kotlin.collections.set
 
-class SyncResponseHandler(private val dataHandler: MXDataHandler,
-                          private val store: IMXStore) {
+class SyncResponseHandler(private val dataHandler: MXDataHandler) {
 
+    private val store = dataHandler.store
     private val leftRoomsStore = MXMemoryStore()
     private var isStartingCryptoWithInitialSync = false
     private var areLeftRoomsSynced = false
diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/legacy/util/ContentManager.java b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/legacy/util/ContentManager.java
index 696c7df11a..15fb6dbacf 100644
--- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/legacy/util/ContentManager.java
+++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/legacy/util/ContentManager.java
@@ -74,9 +74,9 @@ public class ContentManager {
     public void configureAntiVirusScanner(boolean isEnabled) {
         mIsAvScannerEnabled = isEnabled;
         if (isEnabled) {
-            mDownloadUrlPrefix = mHsConfig.getAntiVirusServerUri().toString() + "/" + RestClient.URI_API_PREFIX_PATH_MEDIA_PROXY_UNSTABLE;
+            mDownloadUrlPrefix = mHsConfig.getAntiVirusServerUri() + "/" + RestClient.URI_API_PREFIX_PATH_MEDIA_PROXY_UNSTABLE;
         } else {
-            mDownloadUrlPrefix = mHsConfig.getHomeServerUri().toString() + URI_PREFIX_CONTENT_API;
+            mDownloadUrlPrefix = mHsConfig.getHomeServerUri() + URI_PREFIX_CONTENT_API;
         }
     }
 
diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/legacy/util/JsonUtils.java b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/legacy/util/JsonUtils.java
index 63e47933a1..70c02547e5 100644
--- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/legacy/util/JsonUtils.java
+++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/legacy/util/JsonUtils.java
@@ -28,7 +28,6 @@ import com.google.gson.JsonObject;
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Modifier;
-import java.util.HashMap;
 import java.util.Map;
 import java.util.TreeSet;
 
diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/network/parsing/UriMoshiAdapter.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/network/parsing/UriMoshiAdapter.kt
new file mode 100644
index 0000000000..3311f3814a
--- /dev/null
+++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/network/parsing/UriMoshiAdapter.kt
@@ -0,0 +1,19 @@
+package im.vector.matrix.android.internal.network.parsing
+
+import android.net.Uri
+import com.squareup.moshi.FromJson
+import com.squareup.moshi.ToJson
+
+class UriMoshiAdapter {
+
+    @ToJson
+    fun toJson(uri: Uri): String {
+        return uri.toString()
+    }
+
+    @FromJson
+    fun fromJson(uriString: String): Uri {
+        return Uri.parse(uriString)
+    }
+
+}
\ No newline at end of file
diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/network/ssl/CertUtil.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/network/ssl/CertUtil.kt
index 33a157af6b..c8e955c3fd 100644
--- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/network/ssl/CertUtil.kt
+++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/network/ssl/CertUtil.kt
@@ -141,7 +141,7 @@ object CertUtil {
                 try {
                     tf = TrustManagerFactory.getInstance("PKIX")
                 } catch (e: Exception) {
-                    Timber.e("## newPinnedSSLSocketFactory() : TrustManagerFactory.getInstance failed " + e.message, e)
+                    Timber.e(e, "## newPinnedSSLSocketFactory() : TrustManagerFactory.getInstance failed " + e.message)
                 }
 
                 // it doesn't exist, use the default one.
@@ -149,7 +149,7 @@ object CertUtil {
                     try {
                         tf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm())
                     } catch (e: Exception) {
-                        Timber.e("## addRule : onBingRuleUpdateFailure failed " + e.message, e)
+                        Timber.e(e, "## addRule : onBingRuleUpdateFailure failed " + e.message)
                     }
 
                 }
@@ -197,7 +197,7 @@ object CertUtil {
 
         return HostnameVerifier { hostname, session ->
             if (defaultVerifier.verify(hostname, session)) return@HostnameVerifier true
-            if (trustedFingerprints == null || trustedFingerprints.size == 0) return@HostnameVerifier false
+            if (trustedFingerprints.isEmpty()) return@HostnameVerifier false
 
             // If remote cert matches an allowed fingerprint, just accept it.
             try {