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

95 lines
3.4 KiB
Kotlin
Raw Normal View History

2019-01-18 10:12:08 +00:00
/*
* Copyright 2019 New Vector Ltd
2019-01-18 10:12:08 +00:00
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
2019-01-18 10:12:08 +00:00
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
2019-01-18 10:12:08 +00:00
*/
2018-10-17 16:21:09 +00:00
package im.vector.matrix.android.internal.session
2018-11-27 11:23:15 +00:00
import android.content.Context
import com.zhuinden.monarchy.Monarchy
import dagger.Module
import dagger.Provides
import im.vector.matrix.android.api.auth.data.Credentials
import im.vector.matrix.android.api.auth.data.SessionParams
2018-11-07 19:36:19 +00:00
import im.vector.matrix.android.internal.database.LiveEntityObserver
import im.vector.matrix.android.internal.database.model.SessionRealmModule
import im.vector.matrix.android.internal.session.filter.FilterApi
2018-11-05 16:39:07 +00:00
import im.vector.matrix.android.internal.session.group.GroupSummaryUpdater
import im.vector.matrix.android.internal.session.room.EventRelationsAggregationUpdater
import im.vector.matrix.android.internal.session.room.prune.EventsPruner
import im.vector.matrix.android.internal.session.user.UserEntityUpdater
import im.vector.matrix.android.internal.util.md5
import io.realm.RealmConfiguration
import retrofit2.Retrofit
2018-11-27 11:23:15 +00:00
import java.io.File
import javax.inject.Named
@Module
internal object SessionModule {
@Provides
@SessionScope
fun providesCredentials(sessionParams: SessionParams): Credentials {
return sessionParams.credentials
}
2019-04-12 13:51:20 +00:00
@Provides
@SessionScope
@Named("SessionRealmConfiguration")
fun providesRealmConfiguration(sessionParams: SessionParams, context: Context): RealmConfiguration {
val childPath = sessionParams.credentials.userId.md5()
val directory = File(context.filesDir, childPath)
return RealmConfiguration.Builder()
.directory(directory)
.name("disk_store.realm")
.modules(SessionRealmModule())
.deleteRealmIfMigrationNeeded()
.build()
}
2019-04-12 13:51:20 +00:00
@Provides
@SessionScope
fun providesMonarchy(@Named("SessionRealmConfiguration")
realmConfiguration: RealmConfiguration): Monarchy {
return Monarchy.Builder()
.setRealmConfiguration(realmConfiguration)
.build()
}
2019-04-12 13:51:20 +00:00
@Provides
@SessionScope
fun providesRetrofit(sessionParams: SessionParams, retrofitBuilder: Retrofit.Builder): Retrofit {
return retrofitBuilder
.baseUrl(sessionParams.homeServerConnectionConfig.homeServerUri.toString())
.build()
}
2018-11-05 16:39:07 +00:00
@Provides
@SessionScope
fun providesFilterAPI(retrofit: Retrofit): FilterApi {
return retrofit.create(FilterApi::class.java)
}
2018-11-07 19:36:19 +00:00
@Provides
@SessionScope
fun providesLiveEntityObservers(groupSummaryUpdater: GroupSummaryUpdater,
userEntityUpdater: UserEntityUpdater,
aggregationUpdater: EventRelationsAggregationUpdater,
eventsPruner: EventsPruner): List<LiveEntityObserver> {
return listOf<LiveEntityObserver>(groupSummaryUpdater, userEntityUpdater, aggregationUpdater, eventsPruner)
}
}