From 44eb838610e8c035c4c1d9eb32b8b60bbbae5490 Mon Sep 17 00:00:00 2001 From: ganfra Date: Wed, 17 Oct 2018 13:59:21 +0200 Subject: [PATCH] Manage sync in an infinite thread --- .idea/caches/build_file_checksums.ser | Bin 651 -> 651 bytes .idea/dictionaries/ganfra.xml | 2 + .../features/home/HomeActivity.kt | 40 ++----- app/src/main/res/layout/activity_home.xml | 24 ++-- matrix-sdk-android/build.gradle | 7 +- .../src/main/AndroidManifest.xml | 1 + .../im/vector/matrix/android/api/Matrix.kt | 8 +- .../matrix/android/api/session/Session.kt | 4 +- .../vector/matrix/android/api/util/Logger.kt | 57 ---------- .../internal/database/mapper/EventMapper.kt | 2 +- .../android/internal/di/NetworkModule.kt | 5 + .../internal/events/sync/RoomSyncHandler.kt | 1 + .../internal/events/sync/StateEvent.kt | 18 --- .../internal/events/sync/SyncModule.kt | 9 +- .../sync/{Synchronizer.kt => SyncRequest.kt} | 16 ++- .../internal/events/sync/job/SyncThread.kt | 105 ++++++++++++++++++ .../android/internal/legacy/MXSession.java | 2 +- .../internal/legacy/sync/EventsThread.java | 6 +- .../network/NetworkConnectivityChecker.kt | 44 ++++++++ .../internal/session/DefaultSession.kt | 20 ++-- 20 files changed, 221 insertions(+), 150 deletions(-) delete mode 100644 matrix-sdk-android/src/main/java/im/vector/matrix/android/api/util/Logger.kt delete mode 100644 matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/events/sync/StateEvent.kt rename matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/events/sync/{Synchronizer.kt => SyncRequest.kt} (78%) create mode 100644 matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/events/sync/job/SyncThread.kt create mode 100644 matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/network/NetworkConnectivityChecker.kt diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index 3d334265dec011b5a457deca9220c0aa8634a839..f1d03afc68338383cfc12e31de7f1918461bef67 100644 GIT binary patch delta 36 ucmV+<0NekI1&alcm;`}Qt_iW6Edda3$riX)ldWJg4nkNN*^r)-*#WZofev>7 delta 36 ucmV+<0NekI1&alcm;`+J{R^?2EddZ5hgPFM8Y$3-=d6;?9cdwx*#WW=Ko5lg diff --git a/.idea/dictionaries/ganfra.xml b/.idea/dictionaries/ganfra.xml index a9343c033e..806a104826 100644 --- a/.idea/dictionaries/ganfra.xml +++ b/.idea/dictionaries/ganfra.xml @@ -1,7 +1,9 @@ + connectable coroutine + merlins moshi synchronizer diff --git a/app/src/main/java/im/vector/riotredesign/features/home/HomeActivity.kt b/app/src/main/java/im/vector/riotredesign/features/home/HomeActivity.kt index 56d391fe38..07f3be3e5f 100644 --- a/app/src/main/java/im/vector/riotredesign/features/home/HomeActivity.kt +++ b/app/src/main/java/im/vector/riotredesign/features/home/HomeActivity.kt @@ -3,53 +3,31 @@ package im.vector.riotredesign.features.home import android.content.Context import android.content.Intent import android.os.Bundle -import android.view.View import im.vector.matrix.android.api.Matrix -import im.vector.matrix.android.api.MatrixCallback -import im.vector.matrix.android.api.failure.Failure import im.vector.matrix.android.internal.database.model.RoomSummaryEntity -import im.vector.matrix.android.internal.events.sync.data.SyncResponse import im.vector.riotredesign.R import im.vector.riotredesign.core.platform.RiotActivity import kotlinx.android.synthetic.main.activity_home.* import org.koin.android.ext.android.inject import timber.log.Timber + class HomeActivity : RiotActivity() { private val matrix by inject() - private val synchronizer = matrix.currentSession?.synchronizer() - private val realmHolder = matrix.currentSession?.realmHolder() + private val currentSession = matrix.currentSession!! + private val realmHolder = currentSession.realmHolder() + private val syncThread = currentSession.syncThread() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_home) - synchronizeButton.setOnClickListener { synchronize() } - } - - private fun synchronize() { - synchronizeButton.visibility = View.GONE - loadingView.visibility = View.VISIBLE - synchronizer?.synchronize(object : MatrixCallback { - override fun onSuccess(data: SyncResponse) { - synchronizeButton.visibility = View.VISIBLE - loadingView.visibility = View.GONE - Timber.v("Sync successful") - } - - override fun onFailure(failure: Failure) { - synchronizeButton.visibility = View.VISIBLE - loadingView.visibility = View.GONE - Timber.e("Sync has failed : %s", failure.toString()) - } - }) - if (realmHolder != null) { - val results = realmHolder.instance.where(RoomSummaryEntity::class.java).findAll() - results.addChangeListener { summaries -> - Timber.v("Summaries updated") - } + val results = realmHolder.instance.where(RoomSummaryEntity::class.java).findAll() + results.addChangeListener { summaries -> + Timber.v("Summaries updated") } - + startSyncButton.setOnClickListener { syncThread.restart() } + stopSyncButton.setOnClickListener { syncThread.pause() } } companion object { diff --git a/app/src/main/res/layout/activity_home.xml b/app/src/main/res/layout/activity_home.xml index 3078248ee8..e5007dce7d 100644 --- a/app/src/main/res/layout/activity_home.xml +++ b/app/src/main/res/layout/activity_home.xml @@ -7,34 +7,34 @@ android:orientation="vertical" tools:context=".features.login.LoginActivity"> - -