diff --git a/Fruitties/shared/src/androidMain/kotlin/com/example/fruitties/di/Factory.android.kt b/Fruitties/shared/src/androidMain/kotlin/com/example/fruitties/di/Factory.android.kt index 9391469..9c86774 100644 --- a/Fruitties/shared/src/androidMain/kotlin/com/example/fruitties/di/Factory.android.kt +++ b/Fruitties/shared/src/androidMain/kotlin/com/example/fruitties/di/Factory.android.kt @@ -21,7 +21,6 @@ import androidx.sqlite.driver.bundled.BundledSQLiteDriver import com.example.fruitties.database.AppDatabase import com.example.fruitties.database.CartDataStore import com.example.fruitties.database.DB_FILE_NAME -import com.example.fruitties.network.FruittieApi import kotlinx.coroutines.Dispatchers actual class Factory( @@ -45,6 +44,4 @@ actual class Factory( "cart.json", ).absolutePath } - - actual fun createApi(): FruittieApi = commonCreateApi() } diff --git a/Fruitties/shared/src/commonMain/kotlin/com/example/fruitties/di/AppContainer.kt b/Fruitties/shared/src/commonMain/kotlin/com/example/fruitties/di/AppContainer.kt index 24ed104..5cb2a3a 100644 --- a/Fruitties/shared/src/commonMain/kotlin/com/example/fruitties/di/AppContainer.kt +++ b/Fruitties/shared/src/commonMain/kotlin/com/example/fruitties/di/AppContainer.kt @@ -18,20 +18,29 @@ package com.example.fruitties.di import androidx.lifecycle.viewmodel.initializer import androidx.lifecycle.viewmodel.viewModelFactory import com.example.fruitties.DataRepository +import com.example.fruitties.network.FruittieApi +import com.example.fruitties.network.FruittieNetworkApi import com.example.fruitties.viewmodel.CartViewModel import com.example.fruitties.viewmodel.FruittieViewModel import com.example.fruitties.viewmodel.FruittieViewModel.Companion.FRUITTIE_ID_KEY import com.example.fruitties.viewmodel.MainViewModel +import io.ktor.client.HttpClient +import io.ktor.client.plugins.contentnegotiation.ContentNegotiation +import io.ktor.http.ContentType +import io.ktor.serialization.kotlinx.json.json import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.SupervisorJob +import kotlinx.serialization.json.Json + +val json = Json { ignoreUnknownKeys = true } class AppContainer( private val factory: Factory, ) { val dataRepository: DataRepository by lazy { DataRepository( - api = factory.createApi(), + api = commonCreateApi(), database = factory.createRoomDatabase(), cartDataStore = factory.createCartDataStore(), scope = CoroutineScope(Dispatchers.Default + SupervisorJob()), @@ -59,4 +68,14 @@ class AppContainer( ) } } + + internal fun commonCreateApi(): FruittieApi = + FruittieNetworkApi( + client = HttpClient { + install(ContentNegotiation) { + json(json, contentType = ContentType.Any) + } + }, + apiUrl = "https://android.github.io/kotlin-multiplatform-samples/fruitties-api", + ) } diff --git a/Fruitties/shared/src/commonMain/kotlin/com/example/fruitties/di/Factory.kt b/Fruitties/shared/src/commonMain/kotlin/com/example/fruitties/di/Factory.kt index 079df30..cf82163 100644 --- a/Fruitties/shared/src/commonMain/kotlin/com/example/fruitties/di/Factory.kt +++ b/Fruitties/shared/src/commonMain/kotlin/com/example/fruitties/di/Factory.kt @@ -17,30 +17,9 @@ package com.example.fruitties.di import com.example.fruitties.database.AppDatabase import com.example.fruitties.database.CartDataStore -import com.example.fruitties.network.FruittieApi -import com.example.fruitties.network.FruittieNetworkApi -import io.ktor.client.HttpClient -import io.ktor.client.plugins.contentnegotiation.ContentNegotiation -import io.ktor.http.ContentType -import io.ktor.serialization.kotlinx.json.json -import kotlinx.serialization.json.Json expect class Factory { fun createRoomDatabase(): AppDatabase - fun createApi(): FruittieApi - fun createCartDataStore(): CartDataStore } - -internal fun commonCreateApi(): FruittieApi = - FruittieNetworkApi( - client = HttpClient { - install(ContentNegotiation) { - json(json, contentType = ContentType.Any) - } - }, - apiUrl = "https://android.github.io/kotlin-multiplatform-samples/fruitties-api", - ) - -val json = Json { ignoreUnknownKeys = true } diff --git a/Fruitties/shared/src/iosMain/kotlin/com/example/fruitties/di/Factory.native.kt b/Fruitties/shared/src/iosMain/kotlin/com/example/fruitties/di/Factory.native.kt index 65bf22f..db35496 100644 --- a/Fruitties/shared/src/iosMain/kotlin/com/example/fruitties/di/Factory.native.kt +++ b/Fruitties/shared/src/iosMain/kotlin/com/example/fruitties/di/Factory.native.kt @@ -20,7 +20,6 @@ import androidx.sqlite.driver.bundled.BundledSQLiteDriver import com.example.fruitties.database.AppDatabase import com.example.fruitties.database.CartDataStore import com.example.fruitties.database.DB_FILE_NAME -import com.example.fruitties.network.FruittieApi import kotlinx.cinterop.ExperimentalForeignApi import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.IO @@ -56,6 +55,4 @@ actual class Factory { ) return requireNotNull(documentDirectory).path!! } - - actual fun createApi(): FruittieApi = commonCreateApi() }