forked from GitHub-Mirror/riotX-android
Try to configure okreplay for testing network + start to rework koin modules
This commit is contained in:
@ -3,4 +3,5 @@
|
||||
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
<uses-permission android:name="android.permission.VIBRATE" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
</manifest>
|
||||
|
@ -23,12 +23,10 @@ class Matrix(matrixOptions: MatrixOptions) : KoinComponent {
|
||||
|
||||
init {
|
||||
Monarchy.init(matrixOptions.context)
|
||||
|
||||
val matrixModule = MatrixModule(matrixOptions)
|
||||
val networkModule = NetworkModule()
|
||||
val authModule = AuthModule()
|
||||
val matrixModule = MatrixModule(matrixOptions).definition
|
||||
val networkModule = NetworkModule().definition
|
||||
val authModule = AuthModule().definition
|
||||
loadKoinModules(listOf(matrixModule, networkModule, authModule))
|
||||
|
||||
ProcessLifecycleOwner.get().lifecycle.addObserver(backgroundDetectionObserver)
|
||||
|
||||
val lastActiveSession = authenticator.getLastActiveSession()
|
||||
|
@ -4,13 +4,11 @@ import im.vector.matrix.android.api.auth.Authenticator
|
||||
import im.vector.matrix.android.internal.auth.db.RealmSessionParamsStore
|
||||
import im.vector.matrix.android.internal.auth.db.SessionParamsMapper
|
||||
import io.realm.RealmConfiguration
|
||||
import org.koin.dsl.context.ModuleDefinition
|
||||
import org.koin.dsl.module.Module
|
||||
import org.koin.dsl.module.module
|
||||
|
||||
class AuthModule : Module {
|
||||
class AuthModule {
|
||||
|
||||
override fun invoke(): ModuleDefinition = module {
|
||||
val definition = module {
|
||||
|
||||
single {
|
||||
DefaultAuthenticator(get(), get(), get()) as Authenticator
|
||||
@ -22,5 +20,5 @@ class AuthModule : Module {
|
||||
RealmSessionParamsStore(mapper, realmConfiguration) as SessionParamsStore
|
||||
}
|
||||
|
||||
}.invoke()
|
||||
}
|
||||
}
|
||||
|
@ -6,14 +6,12 @@ import im.vector.matrix.android.internal.util.BackgroundDetectionObserver
|
||||
import im.vector.matrix.android.internal.util.MatrixCoroutineDispatchers
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.asCoroutineDispatcher
|
||||
import org.koin.dsl.context.ModuleDefinition
|
||||
import org.koin.dsl.module.Module
|
||||
import org.koin.dsl.module.module
|
||||
|
||||
|
||||
class MatrixModule(private val options: MatrixOptions) : Module {
|
||||
class MatrixModule(private val options: MatrixOptions) {
|
||||
|
||||
override fun invoke(): ModuleDefinition = module {
|
||||
val definition = module {
|
||||
|
||||
single {
|
||||
options.context
|
||||
@ -27,5 +25,5 @@ class MatrixModule(private val options: MatrixOptions) : Module {
|
||||
BackgroundDetectionObserver()
|
||||
}
|
||||
|
||||
}.invoke()
|
||||
}
|
||||
}
|
@ -4,8 +4,7 @@ import im.vector.matrix.android.internal.network.AccessTokenInterceptor
|
||||
import im.vector.matrix.android.internal.network.NetworkConnectivityChecker
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.logging.HttpLoggingInterceptor
|
||||
import org.koin.dsl.context.ModuleDefinition
|
||||
import org.koin.dsl.module.Module
|
||||
import okreplay.OkReplayInterceptor
|
||||
import org.koin.dsl.module.module
|
||||
import retrofit2.Converter
|
||||
import retrofit2.Retrofit
|
||||
@ -13,9 +12,9 @@ import retrofit2.converter.moshi.MoshiConverterFactory
|
||||
import timber.log.Timber
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
class NetworkModule : Module {
|
||||
class NetworkModule {
|
||||
|
||||
override fun invoke(): ModuleDefinition = module {
|
||||
val definition = module {
|
||||
|
||||
single {
|
||||
AccessTokenInterceptor(get())
|
||||
@ -28,13 +27,18 @@ class NetworkModule : Module {
|
||||
interceptor
|
||||
}
|
||||
|
||||
single {
|
||||
OkReplayInterceptor()
|
||||
}
|
||||
|
||||
single {
|
||||
OkHttpClient.Builder()
|
||||
.connectTimeout(30, TimeUnit.SECONDS)
|
||||
.readTimeout(30, TimeUnit.SECONDS)
|
||||
.writeTimeout(30, TimeUnit.SECONDS)
|
||||
.addInterceptor(get() as AccessTokenInterceptor)
|
||||
.addInterceptor(get() as HttpLoggingInterceptor)
|
||||
.addInterceptor(get<AccessTokenInterceptor>())
|
||||
.addInterceptor(get<HttpLoggingInterceptor>())
|
||||
.addInterceptor(get<OkReplayInterceptor>())
|
||||
.build()
|
||||
}
|
||||
|
||||
@ -56,5 +60,5 @@ class NetworkModule : Module {
|
||||
.addConverterFactory(get())
|
||||
}
|
||||
|
||||
}.invoke()
|
||||
}
|
||||
}
|
@ -3,6 +3,7 @@ package im.vector.matrix.android.internal.session
|
||||
import android.arch.lifecycle.LiveData
|
||||
import android.os.Looper
|
||||
import android.support.annotation.MainThread
|
||||
import im.vector.matrix.android.api.auth.data.SessionParams
|
||||
import im.vector.matrix.android.api.session.Session
|
||||
import im.vector.matrix.android.api.session.group.Group
|
||||
import im.vector.matrix.android.api.session.group.GroupService
|
||||
@ -10,7 +11,6 @@ import im.vector.matrix.android.api.session.group.model.GroupSummary
|
||||
import im.vector.matrix.android.api.session.room.Room
|
||||
import im.vector.matrix.android.api.session.room.RoomService
|
||||
import im.vector.matrix.android.api.session.room.model.RoomSummary
|
||||
import im.vector.matrix.android.api.auth.data.SessionParams
|
||||
import im.vector.matrix.android.internal.database.LiveEntityObserver
|
||||
import im.vector.matrix.android.internal.session.group.GroupModule
|
||||
import im.vector.matrix.android.internal.session.room.RoomModule
|
||||
@ -39,13 +39,13 @@ internal class DefaultSession(override val sessionParams: SessionParams) : Sessi
|
||||
|
||||
@MainThread
|
||||
override fun open() {
|
||||
checkIsMainThread()
|
||||
assertMainThread()
|
||||
assert(!isOpen)
|
||||
isOpen = true
|
||||
val sessionModule = SessionModule(sessionParams)
|
||||
val syncModule = SyncModule()
|
||||
val roomModule = RoomModule()
|
||||
val groupModule = GroupModule()
|
||||
val sessionModule = SessionModule(sessionParams).definition
|
||||
val syncModule = SyncModule().definition
|
||||
val roomModule = RoomModule().definition
|
||||
val groupModule = GroupModule().definition
|
||||
StandAloneContext.loadKoinModules(listOf(sessionModule, syncModule, roomModule, groupModule))
|
||||
scope = getKoin().getOrCreateScope(SCOPE)
|
||||
liveEntityUpdaters.forEach { it.start() }
|
||||
@ -55,7 +55,7 @@ internal class DefaultSession(override val sessionParams: SessionParams) : Sessi
|
||||
|
||||
@MainThread
|
||||
override fun close() {
|
||||
checkIsMainThread()
|
||||
assertMainThread()
|
||||
assert(isOpen)
|
||||
syncThread.kill()
|
||||
liveEntityUpdaters.forEach { it.dispose() }
|
||||
@ -109,9 +109,9 @@ internal class DefaultSession(override val sessionParams: SessionParams) : Sessi
|
||||
|
||||
// Private methods *****************************************************************************
|
||||
|
||||
private fun checkIsMainThread() {
|
||||
if (Looper.myLooper() != Looper.getMainLooper()) {
|
||||
throw IllegalStateException("Should be called on main thread")
|
||||
private fun assertMainThread() {
|
||||
if (Looper.getMainLooper().thread !== Thread.currentThread()) {
|
||||
throw IllegalStateException("This method can only be called on the main thread!")
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -16,15 +16,13 @@ import im.vector.matrix.android.internal.session.room.members.RoomDisplayNameRes
|
||||
import im.vector.matrix.android.internal.session.room.members.RoomMemberDisplayNameResolver
|
||||
import im.vector.matrix.android.internal.util.md5
|
||||
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
|
||||
import java.io.File
|
||||
|
||||
internal class SessionModule(private val sessionParams: SessionParams) : Module {
|
||||
internal class SessionModule(private val sessionParams: SessionParams) {
|
||||
|
||||
override fun invoke(): ModuleDefinition = module(override = true) {
|
||||
val definition = module(override = true) {
|
||||
|
||||
scope(DefaultSession.SCOPE) {
|
||||
sessionParams
|
||||
@ -85,7 +83,7 @@ internal class SessionModule(private val sessionParams: SessionParams) : Module
|
||||
}
|
||||
|
||||
|
||||
}.invoke()
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,14 +1,12 @@
|
||||
package im.vector.matrix.android.internal.session.group
|
||||
|
||||
import im.vector.matrix.android.internal.session.DefaultSession
|
||||
import org.koin.dsl.context.ModuleDefinition
|
||||
import org.koin.dsl.module.Module
|
||||
import org.koin.dsl.module.module
|
||||
import retrofit2.Retrofit
|
||||
|
||||
class GroupModule : Module {
|
||||
class GroupModule {
|
||||
|
||||
override fun invoke(): ModuleDefinition = module(override = true) {
|
||||
val definition = module(override = true) {
|
||||
|
||||
scope(DefaultSession.SCOPE) {
|
||||
val retrofit: Retrofit = get()
|
||||
@ -19,5 +17,5 @@ class GroupModule : Module {
|
||||
GetGroupDataRequest(get(), get(), get())
|
||||
}
|
||||
|
||||
}.invoke()
|
||||
}
|
||||
}
|
@ -9,16 +9,14 @@ import im.vector.matrix.android.internal.session.room.members.LoadRoomMembersReq
|
||||
import im.vector.matrix.android.internal.session.room.send.DefaultSendService
|
||||
import im.vector.matrix.android.internal.session.room.timeline.*
|
||||
import im.vector.matrix.android.internal.util.PagingRequestHelper
|
||||
import org.koin.dsl.context.ModuleDefinition
|
||||
import org.koin.dsl.module.Module
|
||||
import org.koin.dsl.module.module
|
||||
import retrofit2.Retrofit
|
||||
import java.util.concurrent.Executors
|
||||
|
||||
|
||||
class RoomModule : Module {
|
||||
class RoomModule {
|
||||
|
||||
override fun invoke(): ModuleDefinition = module(override = true) {
|
||||
val definition = module(override = true) {
|
||||
|
||||
scope(DefaultSession.SCOPE) {
|
||||
val retrofit: Retrofit = get()
|
||||
@ -56,5 +54,5 @@ class RoomModule : Module {
|
||||
DefaultSendService(roomId, get(), get()) as SendService
|
||||
}
|
||||
|
||||
}.invoke()
|
||||
}
|
||||
}
|
||||
|
@ -2,15 +2,13 @@ package im.vector.matrix.android.internal.session.sync
|
||||
|
||||
import im.vector.matrix.android.internal.session.DefaultSession
|
||||
import im.vector.matrix.android.internal.session.sync.job.SyncThread
|
||||
import org.koin.dsl.context.ModuleDefinition
|
||||
import org.koin.dsl.module.Module
|
||||
import org.koin.dsl.module.module
|
||||
import retrofit2.Retrofit
|
||||
|
||||
|
||||
internal class SyncModule : Module {
|
||||
internal class SyncModule {
|
||||
|
||||
override fun invoke(): ModuleDefinition = module(override = true) {
|
||||
val definition = module(override = true) {
|
||||
|
||||
scope(DefaultSession.SCOPE) {
|
||||
val retrofit: Retrofit = get()
|
||||
@ -49,5 +47,5 @@ internal class SyncModule : Module {
|
||||
SyncThread(get(), get(), get(), get())
|
||||
}
|
||||
|
||||
}.invoke()
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user