Skip to content

Commit 2af76ae

Browse files
authored
Merge pull request #101 from Sushant-Hande/remove-platform-specific-implementation-of-createApi
Remove platform-specific implementation of createApi in Factory
2 parents 86326d4 + d06a5e6 commit 2af76ae

File tree

4 files changed

+20
-28
lines changed

4 files changed

+20
-28
lines changed

Fruitties/shared/src/androidMain/kotlin/com/example/fruitties/di/Factory.android.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import androidx.sqlite.driver.bundled.BundledSQLiteDriver
2121
import com.example.fruitties.database.AppDatabase
2222
import com.example.fruitties.database.CartDataStore
2323
import com.example.fruitties.database.DB_FILE_NAME
24-
import com.example.fruitties.network.FruittieApi
2524
import kotlinx.coroutines.Dispatchers
2625

2726
actual class Factory(
@@ -45,6 +44,4 @@ actual class Factory(
4544
"cart.json",
4645
).absolutePath
4746
}
48-
49-
actual fun createApi(): FruittieApi = commonCreateApi()
5047
}

Fruitties/shared/src/commonMain/kotlin/com/example/fruitties/di/AppContainer.kt

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,29 @@ package com.example.fruitties.di
1818
import androidx.lifecycle.viewmodel.initializer
1919
import androidx.lifecycle.viewmodel.viewModelFactory
2020
import com.example.fruitties.DataRepository
21+
import com.example.fruitties.network.FruittieApi
22+
import com.example.fruitties.network.FruittieNetworkApi
2123
import com.example.fruitties.viewmodel.CartViewModel
2224
import com.example.fruitties.viewmodel.FruittieViewModel
2325
import com.example.fruitties.viewmodel.FruittieViewModel.Companion.FRUITTIE_ID_KEY
2426
import com.example.fruitties.viewmodel.MainViewModel
27+
import io.ktor.client.HttpClient
28+
import io.ktor.client.plugins.contentnegotiation.ContentNegotiation
29+
import io.ktor.http.ContentType
30+
import io.ktor.serialization.kotlinx.json.json
2531
import kotlinx.coroutines.CoroutineScope
2632
import kotlinx.coroutines.Dispatchers
2733
import kotlinx.coroutines.SupervisorJob
34+
import kotlinx.serialization.json.Json
35+
36+
val json = Json { ignoreUnknownKeys = true }
2837

2938
class AppContainer(
3039
private val factory: Factory,
3140
) {
3241
val dataRepository: DataRepository by lazy {
3342
DataRepository(
34-
api = factory.createApi(),
43+
api = commonCreateApi(),
3544
database = factory.createRoomDatabase(),
3645
cartDataStore = factory.createCartDataStore(),
3746
scope = CoroutineScope(Dispatchers.Default + SupervisorJob()),
@@ -59,4 +68,14 @@ class AppContainer(
5968
)
6069
}
6170
}
71+
72+
internal fun commonCreateApi(): FruittieApi =
73+
FruittieNetworkApi(
74+
client = HttpClient {
75+
install(ContentNegotiation) {
76+
json(json, contentType = ContentType.Any)
77+
}
78+
},
79+
apiUrl = "https://android.github.io/kotlin-multiplatform-samples/fruitties-api",
80+
)
6281
}

Fruitties/shared/src/commonMain/kotlin/com/example/fruitties/di/Factory.kt

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -17,30 +17,9 @@ package com.example.fruitties.di
1717

1818
import com.example.fruitties.database.AppDatabase
1919
import com.example.fruitties.database.CartDataStore
20-
import com.example.fruitties.network.FruittieApi
21-
import com.example.fruitties.network.FruittieNetworkApi
22-
import io.ktor.client.HttpClient
23-
import io.ktor.client.plugins.contentnegotiation.ContentNegotiation
24-
import io.ktor.http.ContentType
25-
import io.ktor.serialization.kotlinx.json.json
26-
import kotlinx.serialization.json.Json
2720

2821
expect class Factory {
2922
fun createRoomDatabase(): AppDatabase
3023

31-
fun createApi(): FruittieApi
32-
3324
fun createCartDataStore(): CartDataStore
3425
}
35-
36-
internal fun commonCreateApi(): FruittieApi =
37-
FruittieNetworkApi(
38-
client = HttpClient {
39-
install(ContentNegotiation) {
40-
json(json, contentType = ContentType.Any)
41-
}
42-
},
43-
apiUrl = "https://android.github.io/kotlin-multiplatform-samples/fruitties-api",
44-
)
45-
46-
val json = Json { ignoreUnknownKeys = true }

Fruitties/shared/src/iosMain/kotlin/com/example/fruitties/di/Factory.native.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import androidx.sqlite.driver.bundled.BundledSQLiteDriver
2020
import com.example.fruitties.database.AppDatabase
2121
import com.example.fruitties.database.CartDataStore
2222
import com.example.fruitties.database.DB_FILE_NAME
23-
import com.example.fruitties.network.FruittieApi
2423
import kotlinx.cinterop.ExperimentalForeignApi
2524
import kotlinx.coroutines.Dispatchers
2625
import kotlinx.coroutines.IO
@@ -56,6 +55,4 @@ actual class Factory {
5655
)
5756
return requireNotNull(documentDirectory).path!!
5857
}
59-
60-
actual fun createApi(): FruittieApi = commonCreateApi()
6158
}

0 commit comments

Comments
 (0)