mirror of
https://github.com/AdrianKuta/android-challange-adrian-kuta.git
synced 2025-07-01 20:37:59 +02:00
Refactor: Migrate to kotlinx-datetime and implement flight search results display
This commit migrates date handling from `java.time` to `kotlinx-datetime` across various modules. It also introduces the display of flight search results on the home screen. Key changes: - Replaced `java.time.LocalDate` and related classes with `kotlinx.datetime.LocalDate` in: - `ui/home/src/main/kotlin/dev/adriankuta/flights/ui/home/components/DatePicker.kt` - `model/repository/src/main/kotlin/dev/adriankuta/flights/model/repository/usecases/GetFlightsSearchContentUseCaseImpl.kt` - `ui/home/src/main/kotlin/dev/adriankuta/flights/ui/home/HomeScreen.kt` - `ui/home/src/main/kotlin/dev/adriankuta/flights/ui/home/HomeScreenViewModel.kt` - `domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/TripDate.kt` - `ui/home/src/main/kotlin/dev/adriankuta/flights/ui/home/components/PassengersOptions.kt` - `ui/home/src/main/kotlin/dev/adriankuta/flights/ui/home/components/SearchForm.kt` - `domain/search/src/main/kotlin/dev/adriankuta/flights/domain/search/entities/SearchOptions.kt` - Added `kotlinx-datetime` dependency to `build-logic/convention/src/main/kotlin/dev/adriankuta/partymania/ConfigureKotlinAndroid.kt`. - Implemented `SearchResults.kt` composable to display flight search results. - Updated `HomeScreen.kt` to show `SearchResults` when results are available and handle back navigation. - Modified `HomeScreenViewModel.kt`: - Introduced `SearchResultUiState` to manage search result states (Loading, Success, Error, Idle). - Updated `search()` function to fetch and expose flight results. - Adjusted initial airport list in `homeUiState` to filter for "DUB" and "STN" and ensure destination isn't the same as origin. - Updated `FlightDomainMapper.kt` to parse date strings into `kotlinx.datetime.LocalDate`. - Added `HomeUiStatePreviewParameterProvider.kt` and `FlightPreviewParameterProvider.kt` for Compose previews. - Removed Timber dependency from `ui/home`, `domain/search`, and `domain/types` modules as it's now provided via convention plugin.
This commit is contained in:
@ -8,6 +8,7 @@ import dev.adriankuta.flights.domain.types.TripDate
|
||||
import dev.adriankuta.flights.domain.types.TripFare
|
||||
import dev.adriankuta.flights.domain.types.TripFlight
|
||||
import dev.adriankuta.model.data.api.entities.FlightResponse
|
||||
import kotlinx.datetime.LocalDateTime
|
||||
import dev.adriankuta.model.data.api.entities.RegularFare as ApiRegularFare
|
||||
import dev.adriankuta.model.data.api.entities.Segment as ApiSegment
|
||||
import dev.adriankuta.model.data.api.entities.Trip as ApiTrip
|
||||
@ -33,7 +34,7 @@ internal fun ApiTrip.toDomain(): Trip {
|
||||
|
||||
internal fun ApiTripDate.toDomain(): TripDate {
|
||||
return TripDate(
|
||||
dateOut = dateOut ?: "",
|
||||
dateOut = dateOut?.let { LocalDateTime.parse(it).date },
|
||||
flights = flights.orEmpty().map { it.toDomain() },
|
||||
)
|
||||
}
|
||||
|
@ -5,7 +5,6 @@ import dev.adriankuta.flights.domain.search.entities.SearchOptions
|
||||
import dev.adriankuta.flights.domain.types.Flight
|
||||
import dev.adriankuta.flights.model.repository.mappers.toDomain
|
||||
import dev.adriankuta.model.data.api.FlightService
|
||||
import java.time.format.DateTimeFormatter
|
||||
import javax.inject.Inject
|
||||
|
||||
internal class GetFlightsSearchContentUseCaseImpl @Inject constructor(
|
||||
@ -16,7 +15,7 @@ internal class GetFlightsSearchContentUseCaseImpl @Inject constructor(
|
||||
val result = flightService.getFlights(
|
||||
origin = searchOptions.origin.code,
|
||||
destination = searchOptions.destination.code,
|
||||
date = searchOptions.date.format(DateTimeFormatter.ISO_DATE),
|
||||
date = searchOptions.date.toString(),
|
||||
adult = searchOptions.adults,
|
||||
teen = searchOptions.teens,
|
||||
child = searchOptions.children,
|
||||
|
Reference in New Issue
Block a user