File tree Expand file tree Collapse file tree 11 files changed +34
-51
lines changed
androidMain/kotlin/me/moallemi/kmpshowcase/shared/di
commonMain/kotlin/me/moallemi/kmpshowcase/shared
iosMain/kotlin/me/moallemi/kmpshowcase/shared/di Expand file tree Collapse file tree 11 files changed +34
-51
lines changed Original file line number Diff line number Diff line change 11package me.moallemi.kmpshowcase.shared.di
22
3+ import io.ktor.client.engine.okhttp.OkHttp
34import org.koin.core.module.Module
5+ import org.koin.dsl.KoinAppDeclaration
46import org.koin.dsl.module
57
6- actual val platformModule: Module = module {
8+ fun initKoinAndroid (appDeclaration : KoinAppDeclaration ) = initKoin {
9+ appDeclaration()
10+ }
711
12+ actual val platformModule: Module = module {
13+ single {
14+ OkHttp .create()
15+ }
816}
Load Diff This file was deleted.
Original file line number Diff line number Diff line change @@ -2,32 +2,17 @@ package me.moallemi.kmpshowcase.shared.di
22
33import me.moallemi.kmpshowcase.shared.domain.mapper.AppDtoToApp
44import me.moallemi.kmpshowcase.shared.domain.mapper.LinksDtoToLinks
5- import me.moallemi.kmpshowcase.shared.domain.mapper.Mapper
6- import me.moallemi.kmpshowcase.shared.domain.model.App
7- import me.moallemi.kmpshowcase.shared.domain.model.Links
8- import me.moallemi.kmpshowcase.shared.network.response.AppDto
9- import me.moallemi.kmpshowcase.shared.network.response.LinksDto
105import me.moallemi.kmpshowcase.shared.repository.AppRepository
11- import org.koin.core.qualifier.named
126import org.koin.dsl.module
137
148internal val domainModule = module {
15- single<Mapper <LinksDto ?, Links ?>>(
16- named(QUALIFIER_NAME_MAPPER_LINKSDTO_TOLINKS )
17- ) {
9+ single {
1810 LinksDtoToLinks ()
1911 }
20- single<Mapper <AppDto , App >>(
21- named(QUALIFIER_NAME_MAPPER_APPDTO_TO_APP )
22- ) {
23- AppDtoToApp (
24- get(named(QUALIFIER_NAME_MAPPER_LINKSDTO_TOLINKS ))
25- )
12+ single {
13+ AppDtoToApp (get())
2614 }
2715 single {
28- AppRepository (
29- get(),
30- get(named(QUALIFIER_NAME_MAPPER_APPDTO_TO_APP ))
31- )
16+ AppRepository (get(), get())
3217 }
3318}
Original file line number Diff line number Diff line change 11package me.moallemi.kmpshowcase.shared.di
22
3- import me.moallemi.kmpshowcase.shared.presentation.AppListViewModel
43import org.koin.core.context.startKoin
54import org.koin.core.module.Module
65import org.koin.dsl.KoinAppDeclaration
7- import org.koin.dsl.module
86
9- fun initKoin (appDeclaration : KoinAppDeclaration = {}) = startKoin {
7+ internal fun initKoin (appDeclaration : KoinAppDeclaration = {}) = startKoin {
108 appDeclaration()
119 modules(
1210 networkModule,
@@ -15,12 +13,4 @@ fun initKoin(appDeclaration: KoinAppDeclaration = {}) = startKoin {
1513 )
1614}
1715
18- fun initKoin () = initKoin {
19- modules(
20- module {
21- factory { AppListViewModel (get()) }
22- }
23- )
24- }
25-
2616expect val platformModule: Module
Original file line number Diff line number Diff line change @@ -13,7 +13,7 @@ import me.moallemi.kmpshowcase.shared.utils.log as kmpLog
1313
1414internal val networkModule = module {
1515 single {
16- HttpClient {
16+ HttpClient ( this @single.get()) {
1717 install(JsonFeature ) {
1818 serializer = KotlinxSerializer (this @single.get())
1919 }
File renamed without changes.
Original file line number Diff line number Diff line change 11package me.moallemi.kmpshowcase.shared.domain.mapper
22
33import me.moallemi.kmpshowcase.shared.domain.model.App
4- import me.moallemi.kmpshowcase.shared.domain.model.Links
54import me.moallemi.kmpshowcase.shared.network.response.AppDto
6- import me.moallemi.kmpshowcase.shared.network.response.LinksDto
75
8- internal class AppDtoToApp (
9- private val linksDtoToLinks : Mapper < LinksDto ?, Links ?> ,
10- ) : Mapper<AppDto, App> {
6+ class AppDtoToApp (
7+ private val linksDtoToLinks : LinksDtoToLinks ,
8+ ) {
119
12- override fun map (from : AppDto ) = with (from) {
10+ fun map (from : AppDto ) = with (from) {
1311 App (
1412 id = name,
1513 name = name,
Original file line number Diff line number Diff line change @@ -3,9 +3,9 @@ package me.moallemi.kmpshowcase.shared.domain.mapper
33import me.moallemi.kmpshowcase.shared.domain.model.Links
44import me.moallemi.kmpshowcase.shared.network.response.LinksDto
55
6- internal class LinksDtoToLinks : Mapper < LinksDto ?, Links ?> {
6+ class LinksDtoToLinks {
77
8- override fun map (from : LinksDto ? ) = from?.let { linksDto ->
8+ fun map (from : LinksDto ? ) = from?.let { linksDto ->
99 Links (
1010 appStore = linksDto.appStore,
1111 googlePlay = linksDto.googlePlay,
Original file line number Diff line number Diff line change 11package me.moallemi.kmpshowcase.shared.domain.mapper
22
3+ // FIXME due to inconsistency we can not use generic interfaces with Koin
4+ // https://github.com/InsertKoinIO/koin/issues/75#issuecomment-474405908
35interface Mapper <in F , out T > {
46 fun map (from : F ): T
57}
Original file line number Diff line number Diff line change @@ -2,14 +2,15 @@ package me.moallemi.kmpshowcase.shared.repository
22
33import kotlinx.coroutines.flow.Flow
44import kotlinx.coroutines.flow.flow
5+ import me.moallemi.kmpshowcase.shared.domain.mapper.AppDtoToApp
56import me.moallemi.kmpshowcase.shared.domain.mapper.Mapper
67import me.moallemi.kmpshowcase.shared.domain.model.App
78import me.moallemi.kmpshowcase.shared.network.api.KmpShowcaseApi
89import me.moallemi.kmpshowcase.shared.network.response.AppDto
910
1011class AppRepository (
1112 private val kmpShowcaseApi : KmpShowcaseApi ,
12- private val appDtoToApp : Mapper < AppDto , App > ,
13+ private val appDtoToApp : AppDtoToApp ,
1314) {
1415 fun getAllAppsAsFlow (): Flow <List <App >> = flow {
1516 kmpShowcaseApi.getApps()
You can’t perform that action at this time.
0 commit comments