Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand All @@ -45,6 +44,4 @@ actual class Factory(
"cart.json",
).absolutePath
}

actual fun createApi(): FruittieApi = commonCreateApi()
}
Original file line number Diff line number Diff line change
Expand Up @@ -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()),
Expand Down Expand Up @@ -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",
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -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 }
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -56,6 +55,4 @@ actual class Factory {
)
return requireNotNull(documentDirectory).path!!
}

actual fun createApi(): FruittieApi = commonCreateApi()
}