Refactor: Migrate network layer from Retrofit to Ktor

This commit migrates the network layer from Retrofit to Ktor.

Specific changes include:

-
 Replaced Retrofit with Ktor for network requests.
- Updated dependencies to include Ktor libraries.
- Refactored network service and data classes to use Ktor's API.
- Removed Retrofit-specific code and dependencies.
- Adjusted network module to provide Ktor client and services.
- Updated Pixabay
ImageRepository to use the new Ktor-based PixabayService.
- Introduced Result sealed class to handle network responses.
- Updated PhotoDetailViewModel to handle Result.Error state.
This commit is contained in:
2024-08-22 15:07:06 +02:00
parent 5c0a31d648
commit 3490ee7514
13 changed files with 43 additions and 25 deletions

View File

@ -5,6 +5,7 @@ import androidx.lifecycle.viewModelScope
import dagger.assisted.Assisted
import dagger.assisted.AssistedInject
import dagger.hilt.android.lifecycle.HiltViewModel
import dev.adriankuta.pixabay.data.Result
import dev.adriankuta.pixabay.data.repository.ImageRepository
import dev.adriankuta.pixabay.feature.details.di.PhotoDetailsViewModelFactory
import kotlinx.coroutines.flow.SharingStarted
@ -23,7 +24,12 @@ class PhotoDetailViewModel @AssistedInject constructor(
}
val uiState = loadedData
.map { PhotoDetailUiState.Success(it) }
.map {
when (it) {
is Result.Success -> PhotoDetailUiState.Success(it.data)
is Result.Error -> PhotoDetailUiState.Error
}
}
.stateIn(
scope = viewModelScope,
started = SharingStarted.WhileSubscribed(stopTimeoutMillis = 5000),

View File

@ -17,7 +17,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.paging.LoadState

View File

@ -1,7 +1,5 @@
package dev.adriankuta.pixabay.feature.search
import dev.adriankuta.pixabay.data.model.PixabayImage
data class SearchUiState(
val query: String = ""