Skip to content

Commit 6087d2a

Browse files
authored
Merge pull request #140 from hoc081098/koin_3_2_0
Koin 3.2.0
2 parents 0186f58 + 0419dd0 commit 6087d2a

File tree

27 files changed

+111
-86
lines changed

27 files changed

+111
-86
lines changed

.idea/gradle.xml

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package com.hoc.flowmvi.core
22

3-
import com.hoc.flowmvi.core.dispatchers.CoroutineDispatchers
3+
import com.hoc.flowmvi.core.dispatchers.AppCoroutineDispatchers
44
import com.hoc.flowmvi.core_ui.navigator.Navigator
5+
import org.koin.core.module.dsl.bind
6+
import org.koin.core.module.dsl.singleOf
57
import org.koin.dsl.module
68

79
@JvmField
810
val coreModule = module {
9-
single<CoroutineDispatchers> { DefaultCoroutineDispatchers() }
11+
singleOf(::DefaultAppCoroutineDispatchers) { bind<AppCoroutineDispatchers>() }
1012

11-
single<Navigator> { NavigatorImpl(add = get(), search = get()) }
13+
singleOf(::NavigatorImpl) { bind<Navigator>() }
1214
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.hoc.flowmvi.core
2+
3+
import com.hoc.flowmvi.core.dispatchers.AppCoroutineDispatchers
4+
import kotlinx.coroutines.Dispatchers
5+
6+
internal class DefaultAppCoroutineDispatchers : AppCoroutineDispatchers {
7+
override val main get() = Dispatchers.Main
8+
override val mainImmediate get() = Dispatchers.Main.immediate
9+
override val io get() = Dispatchers.IO
10+
}

app/src/main/java/com/hoc/flowmvi/core/DefaultCoroutineDispatchers.kt

Lines changed: 0 additions & 10 deletions
This file was deleted.

app/src/test/java/com/hoc/flowmvi/CheckModulesTest.kt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package com.hoc.flowmvi
33
import androidx.lifecycle.SavedStateHandle
44
import com.hoc.flowmvi.test_utils.TestCoroutineDispatcherRule
55
import io.mockk.every
6-
import io.mockk.mockkClass
6+
import io.mockk.mockk
77
import kotlinx.coroutines.ExperimentalCoroutinesApi
88
import kotlinx.coroutines.FlowPreview
99
import org.junit.Rule
@@ -22,12 +22,16 @@ import kotlin.time.ExperimentalTime
2222
class CheckModulesTest : AutoCloseKoinTest() {
2323
@get:Rule
2424
val mockProvider = MockProviderRule.create { clazz ->
25-
mockkClass(clazz).also { o ->
26-
if (clazz == SavedStateHandle::class) {
27-
every { (o as SavedStateHandle).get<Any?>(any()) } returns null
25+
when (clazz) {
26+
SavedStateHandle::class -> {
27+
mockk<SavedStateHandle>() {
28+
every { get<Any?>(any()) } returns null
29+
}
2830
}
31+
else -> error("Unknown class: $clazz")
2932
}
3033
}
34+
3135
@get:Rule
3236
val coroutineRule = TestCoroutineDispatcherRule()
3337

buildSrc/src/main/kotlin/deps.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ object deps {
6060
}
6161

6262
object koin {
63-
private const val version = "3.2.0-beta-1"
63+
private const val version = "3.2.0"
6464

6565
const val core = "io.insert-koin:koin-core:$version"
6666
const val android = "io.insert-koin:koin-android:$version"
@@ -90,7 +90,7 @@ object deps {
9090
}
9191
}
9292

93-
const val mockk = "io.mockk:mockk:1.12.3"
93+
const val mockk = "io.mockk:mockk:1.12.4"
9494
const val kotlinJUnit = "org.jetbrains.kotlin:kotlin-test-junit:$kotlinVersion"
9595
}
9696
}

core/src/main/java/com/hoc/flowmvi/core/dispatchers/CoroutineDispatchers.kt renamed to core/src/main/java/com/hoc/flowmvi/core/dispatchers/AppCoroutineDispatchers.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ package com.hoc.flowmvi.core.dispatchers
22

33
import kotlinx.coroutines.CoroutineDispatcher
44

5-
interface CoroutineDispatchers {
5+
interface AppCoroutineDispatchers {
66
val main: CoroutineDispatcher
7+
val mainImmediate: CoroutineDispatcher
78
val io: CoroutineDispatcher
89
}

data/src/main/java/com/hoc/flowmvi/data/DataModule.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,24 @@ import kotlinx.coroutines.FlowPreview
1414
import okhttp3.OkHttpClient
1515
import okhttp3.logging.HttpLoggingInterceptor
1616
import okhttp3.logging.HttpLoggingInterceptor.Level
17+
import org.koin.core.module.dsl.singleOf
1718
import org.koin.core.qualifier.named
1819
import org.koin.dsl.module
1920
import retrofit2.Retrofit
2021
import retrofit2.converter.moshi.MoshiConverterFactory
2122
import java.util.concurrent.TimeUnit
2223
import kotlin.time.ExperimentalTime
2324

24-
val BASE_URL_QUALIFIER = named("BASE_URL")
25+
internal val BASE_URL_QUALIFIER = named("BASE_URL")
26+
internal val ERROR_RESPONSE_JSON_ADAPTER = named("ERROR_RESPONSE_JSON_ADAPTER")
2527

2628
@JvmField
2729
@FlowPreview
2830
@ExperimentalStdlibApi
2931
@ExperimentalTime
3032
@ExperimentalCoroutinesApi
3133
val dataModule = module {
32-
single { UserApiService(retrofit = get()) }
34+
singleOf(UserApiService::invoke)
3335

3436
single {
3537
provideRetrofit(
@@ -49,9 +51,9 @@ val dataModule = module {
4951

5052
factory { UserDomainToUserBodyMapper() }
5153

52-
factory { get<Moshi>().adapter<ErrorResponse>() }
54+
factory(ERROR_RESPONSE_JSON_ADAPTER) { get<Moshi>().adapter<ErrorResponse>() }
5355

54-
factory { UserErrorMapper(errorResponseJsonAdapter = get()) }
56+
factory { UserErrorMapper(get(ERROR_RESPONSE_JSON_ADAPTER)) }
5557

5658
single<UserRepository> {
5759
UserRepositoryImpl(

data/src/main/java/com/hoc/flowmvi/data/UserRepositoryImpl.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import arrow.core.leftWiden
77
import arrow.core.right
88
import arrow.core.valueOr
99
import com.hoc.flowmvi.core.Mapper
10-
import com.hoc.flowmvi.core.dispatchers.CoroutineDispatchers
10+
import com.hoc.flowmvi.core.dispatchers.AppCoroutineDispatchers
1111
import com.hoc.flowmvi.data.remote.UserApiService
1212
import com.hoc.flowmvi.data.remote.UserBody
1313
import com.hoc.flowmvi.data.remote.UserResponse
@@ -39,7 +39,7 @@ import arrow.core.Either.Companion.catch as catchEither
3939
@ExperimentalCoroutinesApi
4040
internal class UserRepositoryImpl(
4141
private val userApiService: UserApiService,
42-
private val dispatchers: CoroutineDispatchers,
42+
private val dispatchers: AppCoroutineDispatchers,
4343
private val responseToDomain: Mapper<UserResponse, ValidatedNel<UserValidationError, User>>,
4444
private val domainToBody: Mapper<User, UserBody>,
4545
private val errorMapper: Mapper<Throwable, UserError>,

data/src/test/java/com/hoc/flowmvi/data/UserRepositoryImplRealAPITest.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.hoc.flowmvi.data
22

33
import android.util.Log
4-
import com.hoc.flowmvi.core.dispatchers.CoroutineDispatchers
4+
import com.hoc.flowmvi.core.dispatchers.AppCoroutineDispatchers
55
import com.hoc.flowmvi.domain.repository.UserRepository
66
import com.hoc.flowmvi.test_utils.getOrThrow
77
import kotlinx.coroutines.CoroutineDispatcher
@@ -38,10 +38,11 @@ class UserRepositoryImplRealAPITest : KoinTest {
3838
modules(
3939
dataModule,
4040
module {
41-
factory<CoroutineDispatchers> {
42-
object : CoroutineDispatchers {
41+
factory<AppCoroutineDispatchers> {
42+
object : AppCoroutineDispatchers {
4343
override val main: CoroutineDispatcher get() = Main
4444
override val io: CoroutineDispatcher get() = IO
45+
override val mainImmediate: CoroutineDispatcher get() = Main.immediate
4546
}
4647
}
4748
}

0 commit comments

Comments
 (0)