MyApi
Код: Выделить всё
interface MyApi {
@GET("v1/coins")
suspend fun getCoins(): List
@GET("v1/coins/{coinId}")
suspend fun getCoinById(@Path("coinId") coinId: String): CoinDetailDto
}
< /code>
NetworkModule < /p>
@Module
@InstallIn(SingletonComponent::class)
object NetworkModule {
@Provides
@Singleton
fun provideOkHttpClient(): OkHttpClient {
return OkHttpClient.Builder().build()
}
@Provides
@Singleton
fun provideMyApi(): MyApi {
return Retrofit.Builder()
.baseUrl(BASE_URL)
.client(provideOkHttpClient())
.addConverterFactory(GsonConverterFactory.create())
.build()
.create(MyApi::class.java)
}
}
Код: Выделить всё
@Module
@InstallIn(SingletonComponent::class)
object RepositoryModule {
@Provides
@Singleton
fun provideCryptoRepository(myApi: MyApi): CryptoRepository {
return CryptoRepositoryImpl(myApi)
}
}
interface CryptoRepository {
suspend fun getCoins(): List
suspend fun getCoinById(coinId: String): CoinDetailDto
}
class CryptoRepositoryImpl @Inject constructor(
private val myApi: MyApi
) : CryptoRepository {
override suspend fun getCoins(): List {
return myApi.getCoins()
}
override suspend fun getCoinById(coinId: String): CoinDetailDto {
return myApi.getCoinById(coinId)
}
}
< /code>
Проблема: @provides @jakarta.inject.singleton com.example.cryptocompose.ui.domain.repository.cryptorepository com.example.cryptocompose.ui.di.repositorymodule.providecryptorepositor (com. Пример.cryptocompose.ui.data.retrofit.myapi) < /p>
Я ожидал, что CryptorePositoryImpl будет введен везде, где требуется крипторепозиция (например, в просмотре моделей или других компонентов). Следует получить данные из API и вернуть список монет или деталей для конкретной монеты без каких-либо ошибок времени выполнения, связанных с зависимостью.
Подробнее здесь: https://stackoverflow.com/questions/793 ... pi-data-fe
Мобильная версия