diff --git a/processor/src/main/resources/kotli/template/multiplatform/compose/dataflow/database/sqldelight/usage.md b/processor/src/main/resources/kotli/template/multiplatform/compose/dataflow/database/sqldelight/usage.md index 04012b2f..d805cf12 100644 --- a/processor/src/main/resources/kotli/template/multiplatform/compose/dataflow/database/sqldelight/usage.md +++ b/processor/src/main/resources/kotli/template/multiplatform/compose/dataflow/database/sqldelight/usage.md @@ -1,7 +1,7 @@ ## Overview - Component package: `app.data.source.database.sqldelight` -- DI integration: `app.di.datasource.ProvidesSqlDelightSource` +- DI integration: `app.di.data.SqlDelightSourceModule` The integration includes the following components: diff --git a/processor/src/main/resources/kotli/template/multiplatform/compose/dataflow/http/ktor/usage.md b/processor/src/main/resources/kotli/template/multiplatform/compose/dataflow/http/ktor/usage.md index 9ed2d8e8..660ce9f8 100644 --- a/processor/src/main/resources/kotli/template/multiplatform/compose/dataflow/http/ktor/usage.md +++ b/processor/src/main/resources/kotli/template/multiplatform/compose/dataflow/http/ktor/usage.md @@ -1,6 +1,7 @@ ## Overview -The data source is available within the class `shared.data.source.http.HttpSource`. An instance of this class can be obtained through dependency injection (DI) as a singleton in `app.di.datasource.ProvidesHttpSource`. +- DI integration: `app.di.data.HttpSourceModule` +- Data source: `shared.data.source.http.HttpSource` The class provides the next functionality: @@ -12,12 +13,12 @@ To start using, just inject it to your DI managed class. ```kotlin class ApiSource( - private val httpSource: HttpSource = get() + private val httpSource: HttpSource ) { - suspend fun getIp(): String { - val ktor = httpSource.ktor - return ktor.get("https://api64.ipify.org").body() + fun getIp(): String { + val client = httpSource.client + return client.get("https://api64.ipify.org").body() } } diff --git a/processor/src/main/resources/kotli/template/multiplatform/compose/dataflow/paging/cashapp/usage.md b/processor/src/main/resources/kotli/template/multiplatform/compose/dataflow/paging/cashapp/usage.md index 9c2a3478..d78fafa0 100644 --- a/processor/src/main/resources/kotli/template/multiplatform/compose/dataflow/paging/cashapp/usage.md +++ b/processor/src/main/resources/kotli/template/multiplatform/compose/dataflow/paging/cashapp/usage.md @@ -1,6 +1,6 @@ ## Overview -- DI integration: `app.di.datasource.ProvidesPagingSource` +- DI integration: `app.di.data.PagingSourceModule` - Data source: `app.data.source.paging.AppPagingSource` - UI component: `shared.design.component.AppPagingList` diff --git a/template/app/src/commonMain/kotlin/kotli/app/di/DI.kt b/template/app/src/commonMain/kotlin/kotli/app/di/DI.kt index 017b9b34..2c11f46f 100644 --- a/template/app/src/commonMain/kotlin/kotli/app/di/DI.kt +++ b/template/app/src/commonMain/kotlin/kotli/app/di/DI.kt @@ -1,12 +1,12 @@ package kotli.app.di -import kotli.app.di.datasource.ProvidesAnalyticsSource -import kotli.app.di.datasource.ProvidesCacheSource -import kotli.app.di.datasource.ProvidesConfigSource -import kotli.app.di.datasource.ProvidesHttpSource -import kotli.app.di.datasource.ProvidesKeyValueSource -import kotli.app.di.datasource.ProvidesPagingSource -import kotli.app.di.datasource.ProvidesSqlDelightSource +import kotli.app.di.data.analyticsSourceModule +import kotli.app.di.data.cacheSourceModule +import kotli.app.di.data.configSourceModule +import kotli.app.di.data.httpSourceModule +import kotli.app.di.data.keyValueSourceModule +import kotli.app.di.data.pagingSourceModule +import kotli.app.di.data.sqlDelightSourceModule import kotli.app.di.state.ProvidesAppState import kotli.app.di.state.ProvidesNavigationBarState import kotli.app.di.state.ProvidesNavigationState @@ -16,13 +16,13 @@ import org.koin.core.context.startKoin val koinDI = startKoin { printLogger() modules( - ProvidesAnalyticsSource, - ProvidesConfigSource, - ProvidesCacheSource, - ProvidesHttpSource, - ProvidesKeyValueSource, - ProvidesPagingSource, - ProvidesSqlDelightSource, + analyticsSourceModule, + configSourceModule, + cacheSourceModule, + httpSourceModule, + keyValueSourceModule, + pagingSourceModule, + sqlDelightSourceModule, ProvidesNavigationBarState, ProvidesNavigationState, ProvidesThemeStore, diff --git a/template/app/src/commonMain/kotlin/kotli/app/di/datasource/ProvidesAnalyticsSource.kt b/template/app/src/commonMain/kotlin/kotli/app/di/data/AnalyticsSourceModule.kt similarity index 76% rename from template/app/src/commonMain/kotlin/kotli/app/di/datasource/ProvidesAnalyticsSource.kt rename to template/app/src/commonMain/kotlin/kotli/app/di/data/AnalyticsSourceModule.kt index 2ea8ef9c..6a5764f0 100644 --- a/template/app/src/commonMain/kotlin/kotli/app/di/datasource/ProvidesAnalyticsSource.kt +++ b/template/app/src/commonMain/kotlin/kotli/app/di/data/AnalyticsSourceModule.kt @@ -1,10 +1,10 @@ -package kotli.app.di.datasource +package kotli.app.di.data import kotli.app.data.source.analytics.AppAnalyticsSource import shared.data.source.analytics.AnalyticsSource import org.koin.dsl.bind import org.koin.dsl.module -val ProvidesAnalyticsSource = module { +val analyticsSourceModule = module { single { AppAnalyticsSource() }.bind(AnalyticsSource::class) } \ No newline at end of file diff --git a/template/app/src/commonMain/kotlin/kotli/app/di/datasource/ProvidesCacheSource.kt b/template/app/src/commonMain/kotlin/kotli/app/di/data/CacheSourceModule.kt similarity index 75% rename from template/app/src/commonMain/kotlin/kotli/app/di/datasource/ProvidesCacheSource.kt rename to template/app/src/commonMain/kotlin/kotli/app/di/data/CacheSourceModule.kt index 70898f65..30764ad1 100644 --- a/template/app/src/commonMain/kotlin/kotli/app/di/datasource/ProvidesCacheSource.kt +++ b/template/app/src/commonMain/kotlin/kotli/app/di/data/CacheSourceModule.kt @@ -1,10 +1,10 @@ -package kotli.app.di.datasource +package kotli.app.di.data import kotli.app.data.source.cache.AppCacheSource import org.koin.dsl.bind import org.koin.dsl.module import shared.data.source.cache.CacheSource -val ProvidesCacheSource = module { +val cacheSourceModule = module { single { AppCacheSource() }.bind(CacheSource::class) } \ No newline at end of file diff --git a/template/app/src/commonMain/kotlin/kotli/app/di/datasource/ProvidesConfigSource.kt b/template/app/src/commonMain/kotlin/kotli/app/di/data/ConfigSourceModule.kt similarity index 75% rename from template/app/src/commonMain/kotlin/kotli/app/di/datasource/ProvidesConfigSource.kt rename to template/app/src/commonMain/kotlin/kotli/app/di/data/ConfigSourceModule.kt index 60365301..01845c5c 100644 --- a/template/app/src/commonMain/kotlin/kotli/app/di/datasource/ProvidesConfigSource.kt +++ b/template/app/src/commonMain/kotlin/kotli/app/di/data/ConfigSourceModule.kt @@ -1,10 +1,10 @@ -package kotli.app.di.datasource +package kotli.app.di.data import kotli.app.data.source.config.AppConfigSource import shared.data.source.config.ConfigSource import org.koin.dsl.bind import org.koin.dsl.module -val ProvidesConfigSource = module { +val configSourceModule = module { single { AppConfigSource() }.bind(ConfigSource::class) } \ No newline at end of file diff --git a/template/app/src/commonMain/kotlin/kotli/app/di/datasource/ProvidesHttpSource.kt b/template/app/src/commonMain/kotlin/kotli/app/di/data/HttpSourceModule.kt similarity index 82% rename from template/app/src/commonMain/kotlin/kotli/app/di/datasource/ProvidesHttpSource.kt rename to template/app/src/commonMain/kotlin/kotli/app/di/data/HttpSourceModule.kt index 0afa4439..cfcb040e 100644 --- a/template/app/src/commonMain/kotlin/kotli/app/di/datasource/ProvidesHttpSource.kt +++ b/template/app/src/commonMain/kotlin/kotli/app/di/data/HttpSourceModule.kt @@ -1,10 +1,10 @@ -package kotli.app.di.datasource +package kotli.app.di.data import kotli.app.data.source.config.AppConfigSource import org.koin.dsl.module import shared.data.source.http.HttpSource -val ProvidesHttpSource = module { +val httpSourceModule = module { single { val config: AppConfigSource = get() HttpSource( diff --git a/template/app/src/commonMain/kotlin/kotli/app/di/datasource/ProvidesKeyValueSource.kt b/template/app/src/commonMain/kotlin/kotli/app/di/data/KeyValueSourceModule.kt similarity index 76% rename from template/app/src/commonMain/kotlin/kotli/app/di/datasource/ProvidesKeyValueSource.kt rename to template/app/src/commonMain/kotlin/kotli/app/di/data/KeyValueSourceModule.kt index bea75da5..6b4a335c 100644 --- a/template/app/src/commonMain/kotlin/kotli/app/di/datasource/ProvidesKeyValueSource.kt +++ b/template/app/src/commonMain/kotlin/kotli/app/di/data/KeyValueSourceModule.kt @@ -1,10 +1,10 @@ -package kotli.app.di.datasource +package kotli.app.di.data import kotli.app.data.source.keyvalue.AppKeyValueSource import shared.data.source.keyvalue.KeyValueSource import org.koin.dsl.bind import org.koin.dsl.module -val ProvidesKeyValueSource = module { +val keyValueSourceModule = module { single { AppKeyValueSource() }.bind(KeyValueSource::class) } \ No newline at end of file diff --git a/template/app/src/commonMain/kotlin/kotli/app/di/datasource/ProvidesPagingSource.kt b/template/app/src/commonMain/kotlin/kotli/app/di/data/PagingSourceModule.kt similarity index 75% rename from template/app/src/commonMain/kotlin/kotli/app/di/datasource/ProvidesPagingSource.kt rename to template/app/src/commonMain/kotlin/kotli/app/di/data/PagingSourceModule.kt index dee2f146..8bc077e6 100644 --- a/template/app/src/commonMain/kotlin/kotli/app/di/datasource/ProvidesPagingSource.kt +++ b/template/app/src/commonMain/kotlin/kotli/app/di/data/PagingSourceModule.kt @@ -1,9 +1,9 @@ -package kotli.app.di.datasource +package kotli.app.di.data import kotli.app.data.source.config.AppConfigSource import kotli.app.data.source.paging.AppPagingSource import org.koin.dsl.module -val ProvidesPagingSource = module { +val pagingSourceModule = module { single { AppPagingSource(get().getPagingPageSize()) } } \ No newline at end of file diff --git a/template/app/src/commonMain/kotlin/kotli/app/di/datasource/ProvidesSqlDelightSource.kt b/template/app/src/commonMain/kotlin/kotli/app/di/data/SqlDelightSourceModule.kt similarity index 65% rename from template/app/src/commonMain/kotlin/kotli/app/di/datasource/ProvidesSqlDelightSource.kt rename to template/app/src/commonMain/kotlin/kotli/app/di/data/SqlDelightSourceModule.kt index 417553f5..9c187c86 100644 --- a/template/app/src/commonMain/kotlin/kotli/app/di/datasource/ProvidesSqlDelightSource.kt +++ b/template/app/src/commonMain/kotlin/kotli/app/di/data/SqlDelightSourceModule.kt @@ -1,8 +1,8 @@ -package kotli.app.di.datasource +package kotli.app.di.data import kotli.app.data.source.database.sqldelight.AppSqlDelightSource import org.koin.dsl.module -val ProvidesSqlDelightSource = module { +val sqlDelightSourceModule = module { single { AppSqlDelightSource() } } \ No newline at end of file diff --git a/template/app/src/commonMain/kotlin/kotli/app/showcases/datasource/http/basic/BasicHttpViewModel.kt b/template/app/src/commonMain/kotlin/kotli/app/showcases/datasource/http/basic/BasicHttpViewModel.kt index b2b0ecbe..d2f75a7c 100644 --- a/template/app/src/commonMain/kotlin/kotli/app/showcases/datasource/http/basic/BasicHttpViewModel.kt +++ b/template/app/src/commonMain/kotlin/kotli/app/showcases/datasource/http/basic/BasicHttpViewModel.kt @@ -32,7 +32,7 @@ class BasicHttpViewModel( delay(500) ipState.set("Proceed fetching…") val url = "https://api64.ipify.org?format=json" - val ipData = httpSource.ktor.get(url).body() + val ipData = httpSource.client.get(url).body() ipState.set(ipData.ip) } catch (e: Throwable) { if (!e.isCancellationException() && !e.isHttpTimeoutException()) { diff --git a/template/shared/data/src/commonMain/kotlin/shared/data/source/http/HttpSource.kt b/template/shared/data/src/commonMain/kotlin/shared/data/source/http/HttpSource.kt index 94b1cbeb..2b2c84b9 100644 --- a/template/shared/data/src/commonMain/kotlin/shared/data/source/http/HttpSource.kt +++ b/template/shared/data/src/commonMain/kotlin/shared/data/source/http/HttpSource.kt @@ -34,7 +34,7 @@ class HttpSource( ) : DataSource { /** https://ktor.io/docs/client-create-multiplatform-application.html */ - val ktor by lazy { + val client by lazy { HttpClient { install(ContentNegotiation) { json( diff --git a/template/shared/presentation/src/commonMain/kotlin/shared/presentation/store/Store.kt b/template/shared/presentation/src/commonMain/kotlin/shared/presentation/store/Store.kt index e92ca0c6..b6cc0973 100644 --- a/template/shared/presentation/src/commonMain/kotlin/shared/presentation/store/Store.kt +++ b/template/shared/presentation/src/commonMain/kotlin/shared/presentation/store/Store.kt @@ -12,7 +12,7 @@ import androidx.compose.runtime.Immutable @Immutable abstract class Store { - /** Store object to hold the [DataLoading]. */ + /** State object to hold the [DataLoading]. */ val loadingState: DataState by lazy(::DataState) /**