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 applies code formatting changes across multiple files and updates lint baseline files.
Key changes:
- Added trailing commas to data classes in the `domain/types` module and related files.
- Formatted `HomeScreenViewModel.kt`, `Result.kt`, `ObserveAirportsUseCase.kt`, `AirportService.kt`, `ObserveAirportsUseCaseModule.kt`, `AirportInfoDomainMapper.kt`, `AirportInfoModelMapper.kt`, `AirportsDatasourceModule.kt`, `AirportsDatasourceImpl.kt`, `FlightService.kt`, `Cache.kt`, and `CacheImpl.kt`.
- Updated `README.md` and `LICENCE.md` with minor formatting adjustments.
- Updated various `lint-baseline.xml` files due to changes in cached dependencies or formatting.
- Added new `lint-baseline.xml` files for `model/datasource/airports`, `model/datasource/shared`, `domain/search`, and `model/data/api`.
- Removed unused imports from `app/build.gradle.kts`.
- Reformatted XML files: `ic_launcher_round.xml`, `ic_launcher.xml`, `strings.xml`, `ic_launcher_background.xml`.
- Added project code style configuration files: `.idea/codeStyles/codeStyleConfig.xml` and `.idea/codeStyles/Project.xml`.
- Reformatted `characters.json`.
- Updated response data classes in `model/data/api/entities` with trailing commas and minor formatting.
This commit refactors the domain types to better represent flight-related data.
Key changes:
- Deleted the unused `Character` data class.
- Introduced new data classes:
- `Airport`: Represents airport information with sealed subtypes for `Departure`, `Arrival`, and `Connecting` airports.
- `AirportInfo`: Contains detailed information about an airport, including `City`, `MacCity`, `Region`, `Country`, and `Coordinates`.
- `City`: Represents city data with code and name.
- `Coordinates`: Represents geographical coordinates.
- `Country`: Represents country data including currency code.
- `Flight`: Top-level data class for flight information, including currency and a list of `Trip` objects.
- `MacCity`: Represents MAC (Multi-Airport City) code.
- `Region`: Represents region data.
- `RegularFare`: Contains a list of `TripFare` objects.
- `Route`: Defines a flight route with departure, arrival, and optional connecting airports.
- `Segment`: Represents a flight segment with origin, destination, flight number, dates, and duration.
- `Trip`: Represents a trip with a list of `TripDate` objects, origin, and destination.
- `TripDate`: Contains a date and a list of `TripFlight` objects for that date.
- `TripFare`: Represents a fare type with amount and count.
- `TripFlight`: Represents a specific flight within a trip, including fare information, segments, and operator.