BayernMessenger/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/DefaultSession.kt

45 lines
1.4 KiB
Kotlin
Raw Normal View History

package im.vector.matrix.android.internal.session
import im.vector.matrix.android.api.session.Session
import im.vector.matrix.android.internal.auth.data.SessionParams
2018-10-15 17:42:13 +00:00
import im.vector.matrix.android.internal.database.RealmInstanceHolder
import im.vector.matrix.android.internal.di.SessionModule
import im.vector.matrix.android.internal.events.sync.SyncModule
import im.vector.matrix.android.internal.events.sync.Synchronizer
import org.koin.core.scope.Scope
import org.koin.standalone.KoinComponent
import org.koin.standalone.StandAloneContext
import org.koin.standalone.getKoin
import org.koin.standalone.inject
class DefaultSession(sessionParams: SessionParams) : Session, KoinComponent {
2018-10-15 17:42:13 +00:00
private val realmInstanceHolder by inject<RealmInstanceHolder>()
private val synchronizer by inject<Synchronizer>()
private val scope: Scope
init {
val sessionModule = SessionModule(sessionParams)
val syncModule = SyncModule()
StandAloneContext.loadKoinModules(listOf(sessionModule, syncModule))
scope = getKoin().getOrCreateScope(SCOPE)
}
override fun synchronizer(): Synchronizer {
return synchronizer
}
2018-10-15 17:42:13 +00:00
override fun realmInstanceHolder(): RealmInstanceHolder {
return realmInstanceHolder
}
override fun close() {
2018-10-15 17:42:13 +00:00
realmInstanceHolder.realm.close()
scope.close()
}
companion object {
const val SCOPE: String = "session"
}
}