forked from GitHub-Mirror/riotX-android
Manage sync in an infinite thread
This commit is contained in:
@ -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<Matrix>()
|
||||
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<SyncResponse> {
|
||||
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 {
|
||||
|
@ -7,34 +7,34 @@
|
||||
android:orientation="vertical"
|
||||
tools:context=".features.login.LoginActivity">
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/loadingView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
<Button
|
||||
android:id="@+id/startSyncButton"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:text="Start sync"
|
||||
app:layout_constraintBottom_toTopOf="@+id/stopSyncButton"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
|
||||
<Button
|
||||
android:id="@+id/synchronizeButton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/stopSyncButton"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:text="Synchronize"
|
||||
android:text="stop sync"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.5"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
app:layout_constraintTop_toBottomOf="@+id/startSyncButton" />
|
||||
|
||||
|
||||
</android.support.constraint.ConstraintLayout>
|
Reference in New Issue
Block a user