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

56 lines
2.0 KiB
Kotlin
Raw Normal View History

2018-10-17 16:21:09 +00:00
package im.vector.matrix.android.internal.session
2018-10-17 16:21:09 +00:00
import im.vector.matrix.android.api.session.room.RoomService
import im.vector.matrix.android.internal.auth.data.SessionParams
import im.vector.matrix.android.internal.database.SessionRealmHolder
import im.vector.matrix.android.internal.legacy.MXDataHandler
import im.vector.matrix.android.internal.legacy.MXSession
import im.vector.matrix.android.internal.legacy.data.store.MXFileStore
2018-10-17 16:21:09 +00:00
import im.vector.matrix.android.internal.session.room.DefaultRoomService
import im.vector.matrix.android.internal.session.room.RoomSummaryObserver
2018-10-15 17:42:13 +00:00
import io.realm.RealmConfiguration
import org.koin.dsl.context.ModuleDefinition
import org.koin.dsl.module.Module
import org.koin.dsl.module.module
import retrofit2.Retrofit
class SessionModule(private val sessionParams: SessionParams) : Module {
override fun invoke(): ModuleDefinition = module(override = true) {
2018-10-15 17:42:13 +00:00
scope(DefaultSession.SCOPE) {
RealmConfiguration.Builder().name(sessionParams.credentials.userId).deleteRealmIfMigrationNeeded().build()
}
scope(DefaultSession.SCOPE) {
SessionRealmHolder(get())
2018-10-15 17:42:13 +00:00
}
scope(DefaultSession.SCOPE) {
val retrofitBuilder = get() as Retrofit.Builder
retrofitBuilder
.baseUrl(sessionParams.homeServerConnectionConfig.homeServerUri.toString())
.build()
}
scope(DefaultSession.SCOPE) {
RoomSummaryObserver(get(), get(), get())
}
2018-10-17 16:21:09 +00:00
scope(DefaultSession.SCOPE) {
DefaultRoomService(get(), get()) as RoomService
}
scope(DefaultSession.SCOPE) {
val store = MXFileStore(sessionParams.credentials, false, get())
val dataHandler = MXDataHandler(store, sessionParams.credentials)
MXSession.Builder(sessionParams, dataHandler, get()).build()
store.setDataHandler(dataHandler)
dataHandler
}
}.invoke()
}