Start to insert room summaries and listen for changes

This commit is contained in:
ganfra
2018-10-16 15:52:30 +02:00
parent b79d23ad24
commit 4904ac894e
29 changed files with 319 additions and 84 deletions

View File

@ -28,6 +28,8 @@ dependencies {
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.jakewharton.timber:timber:4.7.1'
implementation "org.koin:koin-android:$koin_version"
implementation "org.koin:koin-android-scope:$koin_version"
implementation "org.koin:koin-android-viewmodel:$koin_version"

View File

@ -1,13 +1,18 @@
package im.vector.riotredesign
import android.app.Application
import im.vector.matrix.android.BuildConfig
import im.vector.riotredesign.core.di.AppModule
import org.koin.standalone.StandAloneContext.startKoin
import timber.log.Timber
class Riot : Application() {
override fun onCreate() {
super.onCreate()
if (BuildConfig.DEBUG) {
Timber.plant(Timber.DebugTree())
}
startKoin(listOf(AppModule(this)))
}

View File

@ -4,24 +4,22 @@ import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.view.View
import android.widget.Toast
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.EventEntity
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 io.realm.RealmChangeListener
import io.realm.RealmResults
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?.realmInstanceHolder()
private val realmHolder = matrix.currentSession?.realmHolder()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@ -33,25 +31,25 @@ class HomeActivity : RiotActivity() {
synchronizeButton.visibility = View.GONE
loadingView.visibility = View.VISIBLE
synchronizer?.synchronize(object : MatrixCallback<SyncResponse> {
override fun onSuccess(data: 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
Toast.makeText(this@HomeActivity, failure.toString(), Toast.LENGTH_LONG).show()
Timber.e("Sync has failed : %s", failure.toString())
}
})
if (realmHolder != null) {
val results = realmHolder.realm.where(EventEntity::class.java).equalTo("chunk.room.roomId", "!UlckfcnwgLKswCmUbe:matrix.org").findAll()
results.addChangeListener(RealmChangeListener<RealmResults<EventEntity>> {
Toast.makeText(this@HomeActivity, "Room events data changed", Toast.LENGTH_LONG).show()
})
val results = realmHolder.instance.where(RoomSummaryEntity::class.java).findAll()
results.addChangeListener { summaries ->
Timber.v("Summaries updated")
}
}
}
companion object {

View File

@ -22,8 +22,8 @@ class LoginActivity : RiotActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login)
authenticateButton.setOnClickListener { authenticate() }
checkActiveSessions()
authenticateButton.setOnClickListener { authenticate() }
}
private fun authenticate() {
@ -37,9 +37,8 @@ class LoginActivity : RiotActivity() {
.build()
authenticator.authenticate(homeServerConnectionConfig, login, password, object : MatrixCallback<Session> {
override fun onSuccess(data: Session?) {
matrix.currentSession = data
goToHomeScreen()
override fun onSuccess(data: Session) {
openSessionAndGoToHome(data)
}
override fun onFailure(failure: Failure) {
@ -51,12 +50,16 @@ class LoginActivity : RiotActivity() {
private fun checkActiveSessions() {
if (authenticator.hasActiveSessions()) {
matrix.currentSession = authenticator.getLastActiveSession()
goToHomeScreen()
val session = authenticator.getLastActiveSession()
session?.let {
openSessionAndGoToHome(it)
}
}
}
private fun goToHomeScreen() {
private fun openSessionAndGoToHome(session: Session) {
matrix.currentSession = session
session.open()
val intent = HomeActivity.newIntent(this)
startActivity(intent)
finish()