diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..4bec4ea --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,117 @@ + + + + + + \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..a55e7a1 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/LICENCE.md b/LICENCE.md index c453195..3d54c8d 100644 --- a/LICENCE.md +++ b/LICENCE.md @@ -2,6 +2,8 @@ Copyright © 2022 Ryanair Labs -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated -documentation files ( the "Software" ), to deal in the Software only with the scope of recruitment process, with +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and +associated +documentation files ( the "Software" ), to deal in the Software only with the scope of recruitment +process, with limitation the rights to publish, distribute, sublicense, and/or sell copies of the Software. \ No newline at end of file diff --git a/README.md b/README.md index ccc9ada..2ae505e 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,10 @@ We would like you to build an app to search for flights. -You are provided with a codebase containing a bit of code so that you can start working on the task faster. It -includes some parts of the UI, basic network layer implementation with DTOs & DI setup. Feel free to modify any file +You are provided with a codebase containing a bit of code so that you can start working on the task +faster. It +includes some parts of the UI, basic network layer implementation with DTOs & DI setup. Feel free to +modify any file you find in the repo – this is only there to help you out. Please develop an Android app with the following requirements: @@ -29,11 +31,12 @@ Please develop an Android app with the following requirements: * User can use search field to filter the airports list * Screen works with 2 configurations * Origin selection – all stations are available for selection - * Destination selection – only stations to which we can travel from origin selection are available for selection + * Destination selection – only stations to which we can travel from origin selection are + available for selection ### Results screen -* A list of results for the specified search criteria is shown +* A list of results for the specified search criteria is shown * Show only the crucial information about the trip * Make sure to handle network errors and empty results @@ -44,7 +47,7 @@ ___ * for `AirportService` and `RoutesService`: * for `FlightService`: -*Tip: For test purposes try DUB (Dublin) – STN (London Stansted) route – it has flights every day.* +*Tip: For test purposes try DUB (Dublin) – STN (London Stansted) route – it has flights every day.* --- @@ -60,11 +63,14 @@ ___ ### Questions for you Please submit the answers to the following questions in the README.md file + * How long did you spend on the task? -* Rate from 0-10, how would you assess the complexity of the task? _0 - very trivial_, _10 - extremely complex_ +* Rate from 0-10, how would you assess the complexity of the task? _0 - very trivial_, _10 - + extremely complex_ * If you had more time (or if you were doing it in production) what would you have changed/improved? * Which parts of the code would you like to highlight? -* In your opinion, which Google library was the best addition to the Android Dev world in the last years? +* In your opinion, which Google library was the best addition to the Android Dev world in the last + years? > If you have the need to comment the provided task, we would love to hear that from you 🙂 > ... @@ -72,13 +78,17 @@ Please submit the answers to the following questions in the README.md file ### Time frame -You have __4 days__ to submit your solution. There is no need to spend more than 12 hours on the task as we don't seek perfection. +You have __4 days__ to submit your solution. There is no need to spend more than 12 hours on the +task as we don't seek perfection. Focus on the key areas of Android development --- -#### Please fork this repository. After finishing a task, create pull request to the parent repository ``main`` branch. +#### Please fork this repository. After finishing a task, create pull request to the parent repository -You are allowed to use AI tools to assist with this programming task. However, you will be asked to explain your solutions in detail. +``main`` branch. + +You are allowed to use AI tools to assist with this programming task. However, you will be asked to +explain your solutions in detail. --- diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 39af1db..3ae9c0a 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,6 +1,3 @@ -import java.io.FileInputStream -import java.util.Properties - plugins { alias(libs.plugins.kotlin.serialization) alias(libs.plugins.flights.android.application.compose) diff --git a/app/lint-baseline.xml b/app/lint-baseline.xml index 3acbfa8..c579314 100644 --- a/app/lint-baseline.xml +++ b/app/lint-baseline.xml @@ -82,14 +82,14 @@ id="Aligned16KB" message="The native library `arm64-v8a/libmockkjvmtiagent.so` (from `io.mockk:mockk-agent-android:1.14.2`) is not 16 KB aligned"> + file="$GRADLE_USER_HOME/caches/8.11.1/transforms/78a476c196dc0b141a854b3fe010ce3f/transformed/mockk-agent-android-1.14.2/jni/arm64-v8a/libmockkjvmtiagent.so"/> + file="$GRADLE_USER_HOME/caches/8.11.1/transforms/78a476c196dc0b141a854b3fe010ce3f/transformed/mockk-agent-android-1.14.2/jni/arm64-v8a/libmockkjvmtiagent.so"/> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml index c4a603d..00f9eaa 100644 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml index c4a603d..00f9eaa 100644 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 55344e5..a6b3dae 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -1,3 +1,2 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/build-logic/convention/src/main/kotlin/AndroidApplicationConvention.kt b/build-logic/convention/src/main/kotlin/AndroidApplicationConvention.kt index 5beb40f..a16643d 100644 --- a/build-logic/convention/src/main/kotlin/AndroidApplicationConvention.kt +++ b/build-logic/convention/src/main/kotlin/AndroidApplicationConvention.kt @@ -17,7 +17,6 @@ import com.android.build.api.dsl.ApplicationExtension import dev.adriankuta.flights.configureAndroidLint import dev.adriankuta.flights.configureDetektDependencies -import dev.adriankuta.flights.configureFlavors import dev.adriankuta.flights.configureKotlinAndroid import dev.adriankuta.flights.configureUnitTests import org.gradle.api.Plugin diff --git a/core/util/lint-baseline.xml b/core/util/lint-baseline.xml index 5e74404..7c6c706 100644 --- a/core/util/lint-baseline.xml +++ b/core/util/lint-baseline.xml @@ -5,7 +5,7 @@ id="Aligned16KB" message="The native library `arm64-v8a/libmockkjvmtiagent.so` (from `io.mockk:mockk-agent-android:1.14.2`) is not 16 KB aligned"> + file="$GRADLE_USER_HOME/caches/8.11.1/transforms/78a476c196dc0b141a854b3fe010ce3f/transformed/mockk-agent-android-1.14.2/jni/arm64-v8a/libmockkjvmtiagent.so"/> diff --git a/core/util/src/main/kotlin/dev/adriankuta/flights/core/util/Result.kt b/core/util/src/main/kotlin/dev/adriankuta/flights/core/util/Result.kt index aa63ebf..18f456d 100644 --- a/core/util/src/main/kotlin/dev/adriankuta/flights/core/util/Result.kt +++ b/core/util/src/main/kotlin/dev/adriankuta/flights/core/util/Result.kt @@ -13,4 +13,4 @@ sealed interface Result { fun Flow.asResult(): Flow> = map> { Result.Success(it) } .onStart { emit(Result.Loading) } - .catch { emit(Result.Error(it)) } \ No newline at end of file + .catch { emit(Result.Error(it)) } diff --git a/domain/search/lint-baseline.xml b/domain/search/lint-baseline.xml new file mode 100644 index 0000000..7c6c706 --- /dev/null +++ b/domain/search/lint-baseline.xml @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/domain/search/src/main/kotlin/dev/adriankuta/flights/domain/search/ObserveAirportsUseCase.kt b/domain/search/src/main/kotlin/dev/adriankuta/flights/domain/search/ObserveAirportsUseCase.kt index 0149cfd..ee87544 100644 --- a/domain/search/src/main/kotlin/dev/adriankuta/flights/domain/search/ObserveAirportsUseCase.kt +++ b/domain/search/src/main/kotlin/dev/adriankuta/flights/domain/search/ObserveAirportsUseCase.kt @@ -5,4 +5,4 @@ import kotlinx.coroutines.flow.Flow fun interface ObserveAirportsUseCase { operator fun invoke(): Flow?> -} \ No newline at end of file +} diff --git a/domain/types/lint-baseline.xml b/domain/types/lint-baseline.xml index 5e74404..7c6c706 100644 --- a/domain/types/lint-baseline.xml +++ b/domain/types/lint-baseline.xml @@ -5,7 +5,7 @@ id="Aligned16KB" message="The native library `arm64-v8a/libmockkjvmtiagent.so` (from `io.mockk:mockk-agent-android:1.14.2`) is not 16 KB aligned"> + file="$GRADLE_USER_HOME/caches/8.11.1/transforms/78a476c196dc0b141a854b3fe010ce3f/transformed/mockk-agent-android-1.14.2/jni/arm64-v8a/libmockkjvmtiagent.so"/> diff --git a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Airport.kt b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Airport.kt index f8245a9..96037e3 100644 --- a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Airport.kt +++ b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Airport.kt @@ -8,18 +8,18 @@ sealed interface Airport { data class Departure( override val code: String, override val name: String, - override val macCity: MacCity? + override val macCity: MacCity?, ) : Airport data class Arrival( override val code: String, override val name: String, - override val macCity: MacCity? + override val macCity: MacCity?, ) : Airport data class Connecting( override val code: String, override val name: String, - override val macCity: MacCity? + override val macCity: MacCity?, ) : Airport -} \ No newline at end of file +} diff --git a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/AirportInfo.kt b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/AirportInfo.kt index 0838e3f..b81bf2e 100644 --- a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/AirportInfo.kt +++ b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/AirportInfo.kt @@ -10,5 +10,5 @@ data class AirportInfo( val macCity: MacCity, val region: Region, val country: Country, - val coordinates: Coordinates -) \ No newline at end of file + val coordinates: Coordinates, +) diff --git a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/City.kt b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/City.kt index a214595..5881c4b 100644 --- a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/City.kt +++ b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/City.kt @@ -2,5 +2,5 @@ package dev.adriankuta.flights.domain.types data class City( val code: String, - val name: String -) \ No newline at end of file + val name: String, +) diff --git a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Coordinates.kt b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Coordinates.kt index eacfa6b..4be1a69 100644 --- a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Coordinates.kt +++ b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Coordinates.kt @@ -2,5 +2,5 @@ package dev.adriankuta.flights.domain.types data class Coordinates( val latitude: Double, - val longitude: Double -) \ No newline at end of file + val longitude: Double, +) diff --git a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Country.kt b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Country.kt index ee8c476..f4d0272 100644 --- a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Country.kt +++ b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Country.kt @@ -3,5 +3,5 @@ package dev.adriankuta.flights.domain.types data class Country( val code: String, val name: String, - val currencyCode: String -) \ No newline at end of file + val currencyCode: String, +) diff --git a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Flight.kt b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Flight.kt index 9462f89..d8e2b71 100644 --- a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Flight.kt +++ b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Flight.kt @@ -3,5 +3,5 @@ package dev.adriankuta.flights.domain.types data class Flight( val currency: String, val currPrecision: Int, - val trips: List + val trips: List, ) diff --git a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/MacCity.kt b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/MacCity.kt index b686b0e..aad5a16 100644 --- a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/MacCity.kt +++ b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/MacCity.kt @@ -1,5 +1,5 @@ package dev.adriankuta.flights.domain.types data class MacCity( - val macCode: String -) \ No newline at end of file + val macCode: String, +) diff --git a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Region.kt b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Region.kt index c5653b7..3da0bdc 100644 --- a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Region.kt +++ b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Region.kt @@ -2,5 +2,5 @@ package dev.adriankuta.flights.domain.types data class Region( val code: String, - val name: String -) \ No newline at end of file + val name: String, +) diff --git a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/RegularFare.kt b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/RegularFare.kt index d7df162..7c2d5a2 100644 --- a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/RegularFare.kt +++ b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/RegularFare.kt @@ -1,5 +1,5 @@ package dev.adriankuta.flights.domain.types data class RegularFare( - val fares: List -) \ No newline at end of file + val fares: List, +) diff --git a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Route.kt b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Route.kt index e645ab8..7a6d20f 100644 --- a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Route.kt +++ b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Route.kt @@ -3,5 +3,5 @@ package dev.adriankuta.flights.domain.types data class Route( val departureAirport: Airport.Departure, val arrivalAirport: Airport.Arrival, - val connectingAirport: Airport.Connecting? -) \ No newline at end of file + val connectingAirport: Airport.Connecting?, +) diff --git a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Segment.kt b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Segment.kt index eaef042..4497ee9 100644 --- a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Segment.kt +++ b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Segment.kt @@ -5,5 +5,5 @@ data class Segment( val destination: String, val flightNumber: String, val dateTimes: List, - val duration: String -) \ No newline at end of file + val duration: String, +) diff --git a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Trip.kt b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Trip.kt index 01a76a5..5687b81 100644 --- a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Trip.kt +++ b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/Trip.kt @@ -3,5 +3,5 @@ package dev.adriankuta.flights.domain.types data class Trip( val dates: List, val origin: String, - val destination: String -) \ No newline at end of file + val destination: String, +) diff --git a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/TripDate.kt b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/TripDate.kt index 5f50b74..56935d1 100644 --- a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/TripDate.kt +++ b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/TripDate.kt @@ -2,5 +2,5 @@ package dev.adriankuta.flights.domain.types data class TripDate( val dateOut: String, - val flights: List -) \ No newline at end of file + val flights: List, +) diff --git a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/TripFare.kt b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/TripFare.kt index d965734..75fb4b7 100644 --- a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/TripFare.kt +++ b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/TripFare.kt @@ -3,5 +3,5 @@ package dev.adriankuta.flights.domain.types data class TripFare( val type: String, val amount: Double, - val count: Int -) \ No newline at end of file + val count: Int, +) diff --git a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/TripFlight.kt b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/TripFlight.kt index fac4f11..5eded02 100644 --- a/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/TripFlight.kt +++ b/domain/types/src/main/kotlin/dev/adriankuta/flights/domain/types/TripFlight.kt @@ -7,5 +7,5 @@ data class TripFlight( val dateTimes: List, val duration: String, val segments: List, - val operatedBy: String -) \ No newline at end of file + val operatedBy: String, +) diff --git a/model/data/api/lint-baseline.xml b/model/data/api/lint-baseline.xml new file mode 100644 index 0000000..7c6c706 --- /dev/null +++ b/model/data/api/lint-baseline.xml @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/model/data/api/src/main/kotlin/dev/adriankuta/model/data/api/AirportService.kt b/model/data/api/src/main/kotlin/dev/adriankuta/model/data/api/AirportService.kt index e3d4140..163e871 100644 --- a/model/data/api/src/main/kotlin/dev/adriankuta/model/data/api/AirportService.kt +++ b/model/data/api/src/main/kotlin/dev/adriankuta/model/data/api/AirportService.kt @@ -8,5 +8,4 @@ interface AirportService { @GET("/views/locate/5/airports/{language}/active") suspend fun getAirports(@Path("language") languageCode: String): List - } diff --git a/model/data/api/src/main/kotlin/dev/adriankuta/model/data/api/FlightService.kt b/model/data/api/src/main/kotlin/dev/adriankuta/model/data/api/FlightService.kt index 99b5e39..50b483e 100644 --- a/model/data/api/src/main/kotlin/dev/adriankuta/model/data/api/FlightService.kt +++ b/model/data/api/src/main/kotlin/dev/adriankuta/model/data/api/FlightService.kt @@ -10,9 +10,10 @@ interface FlightService { // example query: v4/en-gb/Availability?dateout=2025-09-17&origin=WRO&destination=DUB&adt=1&ToUs=AGREED @Headers( "client: android", - "client-version: 3.300.0" + "client-version: 3.300.0", ) @GET("v4/en-gb/Availability") + @Suppress("LongParameterList") suspend fun getFlights( @Query("dateout") date: String, @Query("origin") origin: String, @@ -21,6 +22,6 @@ interface FlightService { @Query("teen") teen: Int, @Query("chd") child: Int, @Query("inf") inf: Int = 0, - @Query("ToUs") toUs: String = "AGREED" + @Query("ToUs") toUs: String = "AGREED", ): FlightResponse } diff --git a/model/data/api/src/main/kotlin/dev/adriankuta/model/data/api/entities/AirportResponse.kt b/model/data/api/src/main/kotlin/dev/adriankuta/model/data/api/entities/AirportResponse.kt index 7b8f30e..0df8de4 100644 --- a/model/data/api/src/main/kotlin/dev/adriankuta/model/data/api/entities/AirportResponse.kt +++ b/model/data/api/src/main/kotlin/dev/adriankuta/model/data/api/entities/AirportResponse.kt @@ -14,38 +14,38 @@ data class AirportResponse( @Json(name = "macCity") val macCity: MacCity?, @Json(name = "region") val region: Region?, @Json(name = "country") val country: Country?, - @Json(name = "coordinates") val coordinates: Coordinates? + @Json(name = "coordinates") val coordinates: Coordinates?, ) { @JsonClass(generateAdapter = true) data class City( @Json(name = "code") val code: String?, - @Json(name = "name") val name: String? + @Json(name = "name") val name: String?, ) @JsonClass(generateAdapter = true) data class MacCity( @Json(name = "code") val code: String?, @Json(name = "macCode") val macCode: String?, - @Json(name = "name") val name: String? + @Json(name = "name") val name: String?, ) @JsonClass(generateAdapter = true) data class Region( @Json(name = "code") val code: String?, - @Json(name = "name") val name: String? + @Json(name = "name") val name: String?, ) @JsonClass(generateAdapter = true) data class Country( @Json(name = "code") val code: String?, @Json(name = "name") val name: String?, - @Json(name = "currency") val currencyCode: String? + @Json(name = "currency") val currencyCode: String?, ) @JsonClass(generateAdapter = true) data class Coordinates( @Json(name = "latitude") val latitude: Double?, - @Json(name = "longitude") val longitude: Double? + @Json(name = "longitude") val longitude: Double?, ) } diff --git a/model/data/api/src/main/kotlin/dev/adriankuta/model/data/api/entities/FlightResponse.kt b/model/data/api/src/main/kotlin/dev/adriankuta/model/data/api/entities/FlightResponse.kt index 1a9369b..1deb550 100644 --- a/model/data/api/src/main/kotlin/dev/adriankuta/model/data/api/entities/FlightResponse.kt +++ b/model/data/api/src/main/kotlin/dev/adriankuta/model/data/api/entities/FlightResponse.kt @@ -1,6 +1,5 @@ package dev.adriankuta.model.data.api.entities - import com.squareup.moshi.Json import com.squareup.moshi.JsonClass @@ -8,20 +7,20 @@ import com.squareup.moshi.JsonClass data class FlightResponse( @Json(name = "currency") val currency: String?, @Json(name = "currPrecision") val currPrecision: Int?, - @Json(name = "trips") val trips: List? + @Json(name = "trips") val trips: List?, ) @JsonClass(generateAdapter = true) data class Trip( @Json(name = "dates") val dates: List?, @Json(name = "origin") val origin: String?, - @Json(name = "destination") val destination: String? + @Json(name = "destination") val destination: String?, ) @JsonClass(generateAdapter = true) data class TripDate( @Json(name = "dateOut") val dateOut: String?, - @Json(name = "flights") val flights: List? + @Json(name = "flights") val flights: List?, ) @JsonClass(generateAdapter = true) @@ -37,14 +36,14 @@ data class TripFlight( @JsonClass(generateAdapter = true) data class RegularFare( - @Json(name = "fares") val fares: List? + @Json(name = "fares") val fares: List?, ) @JsonClass(generateAdapter = true) data class TripFare( @Json(name = "type") val type: String?, @Json(name = "amount") val amount: Double?, - @Json(name = "count") val count: Int? + @Json(name = "count") val count: Int?, ) @JsonClass(generateAdapter = true) @@ -53,5 +52,5 @@ data class Segment( @Json(name = "destination") val destination: String?, @Json(name = "flightNumber") val flightNumber: String?, @Json(name = "time") val dateTimes: List?, - @Json(name = "duration") val duration: String? -) \ No newline at end of file + @Json(name = "duration") val duration: String?, +) diff --git a/model/data/api/src/main/kotlin/dev/adriankuta/model/data/api/entities/RouteResponse.kt b/model/data/api/src/main/kotlin/dev/adriankuta/model/data/api/entities/RouteResponse.kt index 3d20b88..af61581 100644 --- a/model/data/api/src/main/kotlin/dev/adriankuta/model/data/api/entities/RouteResponse.kt +++ b/model/data/api/src/main/kotlin/dev/adriankuta/model/data/api/entities/RouteResponse.kt @@ -7,7 +7,7 @@ import com.squareup.moshi.JsonClass data class RouteResponse( @Json(name = "departureAirport") val departureAirport: Airport.Departure?, @Json(name = "arrivalAirport") val arrivalAirport: Airport.Arrival?, - @Json(name = "connectingAirport") val connectingAirport: Airport.Connecting? + @Json(name = "connectingAirport") val connectingAirport: Airport.Connecting?, ) { sealed interface Airport { @@ -32,19 +32,19 @@ data class RouteResponse( data class Arrival( override val code: String?, override val name: String?, - override val macCity: MacCity? + override val macCity: MacCity?, ) : Airport @JsonClass(generateAdapter = true) data class Connecting( override val code: String?, override val name: String?, - override val macCity: MacCity? + override val macCity: MacCity?, ) : Airport @JsonClass(generateAdapter = true) data class MacCity( - @Json(name = "macCode") val macCode: String? + @Json(name = "macCode") val macCode: String?, ) } } diff --git a/model/data/room/lint-baseline.xml b/model/data/room/lint-baseline.xml index 5e74404..7c6c706 100644 --- a/model/data/room/lint-baseline.xml +++ b/model/data/room/lint-baseline.xml @@ -5,7 +5,7 @@ id="Aligned16KB" message="The native library `arm64-v8a/libmockkjvmtiagent.so` (from `io.mockk:mockk-agent-android:1.14.2`) is not 16 KB aligned"> + file="$GRADLE_USER_HOME/caches/8.11.1/transforms/78a476c196dc0b141a854b3fe010ce3f/transformed/mockk-agent-android-1.14.2/jni/arm64-v8a/libmockkjvmtiagent.so"/> diff --git a/model/data/shared/lint-baseline.xml b/model/data/shared/lint-baseline.xml new file mode 100644 index 0000000..7c6c706 --- /dev/null +++ b/model/data/shared/lint-baseline.xml @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/model/data/shared/src/main/kotlin/dev/adriankuta/flights/model/data/shared/CacheImpl.kt b/model/data/shared/src/main/kotlin/dev/adriankuta/flights/model/data/shared/CacheImpl.kt index 6254b92..6b49967 100644 --- a/model/data/shared/src/main/kotlin/dev/adriankuta/flights/model/data/shared/CacheImpl.kt +++ b/model/data/shared/src/main/kotlin/dev/adriankuta/flights/model/data/shared/CacheImpl.kt @@ -2,13 +2,13 @@ package dev.adriankuta.flights.model.data.shared import dev.adriankuta.flights.model.datasource.shared.Cache -public data class CacheImpl(override val cacheKey: String?, override val data: T?) : +data class CacheImpl(override val cacheKey: String?, override val data: T?) : Cache { - public companion object { - public inline fun emptyCache(): CacheImpl = + companion object { + inline fun emptyCache(): CacheImpl = CacheImpl(null, null) - public inline fun Cache?.orEmpty(): Cache = + inline fun Cache?.orEmpty(): Cache = this ?: emptyCache() } -} \ No newline at end of file +} diff --git a/model/data/simple/lint-baseline.xml b/model/data/simple/lint-baseline.xml index 5e74404..7c6c706 100644 --- a/model/data/simple/lint-baseline.xml +++ b/model/data/simple/lint-baseline.xml @@ -5,7 +5,7 @@ id="Aligned16KB" message="The native library `arm64-v8a/libmockkjvmtiagent.so` (from `io.mockk:mockk-agent-android:1.14.2`) is not 16 KB aligned"> + file="$GRADLE_USER_HOME/caches/8.11.1/transforms/78a476c196dc0b141a854b3fe010ce3f/transformed/mockk-agent-android-1.14.2/jni/arm64-v8a/libmockkjvmtiagent.so"/> diff --git a/model/data/simple/src/main/assets/characters.json b/model/data/simple/src/main/assets/characters.json index 0da9f6b..c9eb8cf 100644 --- a/model/data/simple/src/main/assets/characters.json +++ b/model/data/simple/src/main/assets/characters.json @@ -2,56 +2,77 @@ "data": [ { "name": "Adam Małysz" - }, { + }, + { "name": "Harry Potter" - }, { + }, + { "name": "SpongeBob" - }, { + }, + { "name": "Miś uszatek" - }, { + }, + { "name": "Brzydkie kaczątko" - }, { + }, + { "name": "Papa Smerf" - }, { + }, + { "name": "Smerfetka" - }, { + }, + { "name": "Gargamel", "category": "Smerfy" - }, { + }, + { "name": "Ważniak", "category": "Smerfy" - }, { + }, + { "name": "Roszpunka" - }, { + }, + { "name": "Myszka Miki" - }, { + }, + { "name": "Król Lew" - }, { + }, + { "name": "Elsa", "category": "Kraina lodu" - }, { + }, + { "name": "Olaf", "category": "Kraina lodu" - }, { + }, + { "name": "Mała syrenka" - }, { + }, + { "name": "Kubuś Puchatek" - }, { + }, + { "name": "Prosiaczek", "category": "Kubuś Puchatek" - }, { + }, + { "name": "Kłapouchy", "category": "Kubuś Puchatek" - }, { + }, + { "name": "Królik", "category": "Kubuś Puchatek" - }, { + }, + { "name": "Maleństwo", "category": "Kubuś Puchatek" - }, { + }, + { "name": "Pan Sowa", "category": "Kubuś Puchatek" - }, { + }, + { "name": "Krzyś", "category": "Kubuś Puchatek" } diff --git a/model/data/simple/src/main/kotlin/dev/adriankuta/flights/model/data/simple/AirportsDatasourceImpl.kt b/model/data/simple/src/main/kotlin/dev/adriankuta/flights/model/data/simple/AirportsDatasourceImpl.kt index 6573603..0797ac8 100644 --- a/model/data/simple/src/main/kotlin/dev/adriankuta/flights/model/data/simple/AirportsDatasourceImpl.kt +++ b/model/data/simple/src/main/kotlin/dev/adriankuta/flights/model/data/simple/AirportsDatasourceImpl.kt @@ -18,11 +18,11 @@ internal class AirportsDatasourceImpl : AirportsDatasource { override suspend fun setAirportsInfo( airports: List, - cacheKey: String + cacheKey: String, ) { _airports.value = CacheImpl( cacheKey = cacheKey, - data = airports.map { it.toModel() } + data = airports.map { it.toModel() }, ) } } diff --git a/model/data/simple/src/main/kotlin/dev/adriankuta/flights/model/data/simple/di/AirportsDatasourceModule.kt b/model/data/simple/src/main/kotlin/dev/adriankuta/flights/model/data/simple/di/AirportsDatasourceModule.kt index 02846fc..c9c6599 100644 --- a/model/data/simple/src/main/kotlin/dev/adriankuta/flights/model/data/simple/di/AirportsDatasourceModule.kt +++ b/model/data/simple/src/main/kotlin/dev/adriankuta/flights/model/data/simple/di/AirportsDatasourceModule.kt @@ -27,4 +27,4 @@ internal class AirportsDatasourceImplModule { @Provides @Singleton fun provide(): AirportsDatasourceImpl = AirportsDatasourceImpl() -} \ No newline at end of file +} diff --git a/model/data/simple/src/main/kotlin/dev/adriankuta/flights/model/data/simple/mappers/AirportInfoModelMapper.kt b/model/data/simple/src/main/kotlin/dev/adriankuta/flights/model/data/simple/mappers/AirportInfoModelMapper.kt index 9466059..d331b6a 100644 --- a/model/data/simple/src/main/kotlin/dev/adriankuta/flights/model/data/simple/mappers/AirportInfoModelMapper.kt +++ b/model/data/simple/src/main/kotlin/dev/adriankuta/flights/model/data/simple/mappers/AirportInfoModelMapper.kt @@ -19,7 +19,7 @@ internal fun AirportResponse.toModel(): AirportInfoModel { countryName = country?.name.orEmpty(), countryCurrencyCode = country?.currencyCode.orEmpty(), latitude = coordinates?.latitude ?: 0.0, - longitude = coordinates?.longitude ?: 0.0 + longitude = coordinates?.longitude ?: 0.0, ) } @@ -38,5 +38,5 @@ private data class AirportInfoModelImpl( override val countryName: String, override val countryCurrencyCode: String, override val latitude: Double, - override val longitude: Double + override val longitude: Double, ) : AirportInfoModel diff --git a/model/datasource/airports/lint-baseline.xml b/model/datasource/airports/lint-baseline.xml new file mode 100644 index 0000000..7c6c706 --- /dev/null +++ b/model/datasource/airports/lint-baseline.xml @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/model/datasource/shared/lint-baseline.xml b/model/datasource/shared/lint-baseline.xml new file mode 100644 index 0000000..7c6c706 --- /dev/null +++ b/model/datasource/shared/lint-baseline.xml @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/model/datasource/shared/src/main/kotlin/dev/adriankuta/flights/model/datasource/shared/Cache.kt b/model/datasource/shared/src/main/kotlin/dev/adriankuta/flights/model/datasource/shared/Cache.kt index dae808e..3adb23d 100644 --- a/model/datasource/shared/src/main/kotlin/dev/adriankuta/flights/model/datasource/shared/Cache.kt +++ b/model/datasource/shared/src/main/kotlin/dev/adriankuta/flights/model/datasource/shared/Cache.kt @@ -1,6 +1,6 @@ -package dev.adriankuta.flights.model.datasource.shared; +package dev.adriankuta.flights.model.datasource.shared -public interface Cache { - public val cacheKey: String? - public val data: T? -} \ No newline at end of file +interface Cache { + val cacheKey: String? + val data: T? +} diff --git a/model/repository/lint-baseline.xml b/model/repository/lint-baseline.xml index 5e74404..7c6c706 100644 --- a/model/repository/lint-baseline.xml +++ b/model/repository/lint-baseline.xml @@ -5,7 +5,7 @@ id="Aligned16KB" message="The native library `arm64-v8a/libmockkjvmtiagent.so` (from `io.mockk:mockk-agent-android:1.14.2`) is not 16 KB aligned"> + file="$GRADLE_USER_HOME/caches/8.11.1/transforms/78a476c196dc0b141a854b3fe010ce3f/transformed/mockk-agent-android-1.14.2/jni/arm64-v8a/libmockkjvmtiagent.so"/> diff --git a/model/repository/src/main/kotlin/dev/adriankuta/flights/model/repository/di/ObserveAirportsUseCaseModule.kt b/model/repository/src/main/kotlin/dev/adriankuta/flights/model/repository/di/ObserveAirportsUseCaseModule.kt index 1d692bf..5c355f9 100644 --- a/model/repository/src/main/kotlin/dev/adriankuta/flights/model/repository/di/ObserveAirportsUseCaseModule.kt +++ b/model/repository/src/main/kotlin/dev/adriankuta/flights/model/repository/di/ObserveAirportsUseCaseModule.kt @@ -14,6 +14,6 @@ internal abstract class ObserveAirportsUseCaseModule { @Binds abstract fun bind( - observeAirportsUseCaseImpl: ObserveAirportsUseCaseImpl + observeAirportsUseCaseImpl: ObserveAirportsUseCaseImpl, ): ObserveAirportsUseCase } diff --git a/model/repository/src/main/kotlin/dev/adriankuta/flights/model/repository/mappers/AirportInfoDomainMapper.kt b/model/repository/src/main/kotlin/dev/adriankuta/flights/model/repository/mappers/AirportInfoDomainMapper.kt index 6a84520..1f5c9d5 100644 --- a/model/repository/src/main/kotlin/dev/adriankuta/flights/model/repository/mappers/AirportInfoDomainMapper.kt +++ b/model/repository/src/main/kotlin/dev/adriankuta/flights/model/repository/mappers/AirportInfoDomainMapper.kt @@ -17,23 +17,23 @@ internal fun AirportInfoModel.toDomain(): AirportInfo { timeZone = timeZone, city = City( code = cityCode, - name = cityName + name = cityName, ), macCity = MacCity( - macCode = macCode + macCode = macCode, ), region = Region( code = regionCode, - name = regionName + name = regionName, ), country = Country( code = countryCode, name = countryName, - currencyCode = countryCurrencyCode + currencyCode = countryCurrencyCode, ), coordinates = Coordinates( latitude = latitude, - longitude = longitude - ) + longitude = longitude, + ), ) } diff --git a/ui/designsystem/lint-baseline.xml b/ui/designsystem/lint-baseline.xml index cb01929..839274d 100644 --- a/ui/designsystem/lint-baseline.xml +++ b/ui/designsystem/lint-baseline.xml @@ -5,14 +5,14 @@ id="Aligned16KB" message="The native library `arm64-v8a/libmockkjvmtiagent.so` (from `io.mockk:mockk-agent-android:1.14.2`) is not 16 KB aligned"> + file="$GRADLE_USER_HOME/caches/8.11.1/transforms/78a476c196dc0b141a854b3fe010ce3f/transformed/mockk-agent-android-1.14.2/jni/arm64-v8a/libmockkjvmtiagent.so"/> + file="$GRADLE_USER_HOME/caches/8.11.1/transforms/78a476c196dc0b141a854b3fe010ce3f/transformed/mockk-agent-android-1.14.2/jni/arm64-v8a/libmockkjvmtiagent.so"/> + file="$GRADLE_USER_HOME/caches/8.11.1/transforms/78a476c196dc0b141a854b3fe010ce3f/transformed/mockk-agent-android-1.14.2/jni/arm64-v8a/libmockkjvmtiagent.so"/> + file="$GRADLE_USER_HOME/caches/8.11.1/transforms/78a476c196dc0b141a854b3fe010ce3f/transformed/mockk-agent-android-1.14.2/jni/arm64-v8a/libmockkjvmtiagent.so"/> diff --git a/ui/home/src/main/kotlin/dev/adriankuta/flights/ui/home/HomeScreenViewModel.kt b/ui/home/src/main/kotlin/dev/adriankuta/flights/ui/home/HomeScreenViewModel.kt index 4cdead2..e8b9748 100644 --- a/ui/home/src/main/kotlin/dev/adriankuta/flights/ui/home/HomeScreenViewModel.kt +++ b/ui/home/src/main/kotlin/dev/adriankuta/flights/ui/home/HomeScreenViewModel.kt @@ -15,11 +15,11 @@ import javax.inject.Inject @HiltViewModel class HomeScreenViewModel @Inject constructor( - private val observeAirportsUseCase: ObserveAirportsUseCase + private val observeAirportsUseCase: ObserveAirportsUseCase, ) : ViewModel() { internal val uiState = homeUiState( - useCase = observeAirportsUseCase + useCase = observeAirportsUseCase, ) .stateIn( scope = viewModelScope, @@ -29,9 +29,8 @@ class HomeScreenViewModel @Inject constructor( } private fun homeUiState( - useCase: ObserveAirportsUseCase + useCase: ObserveAirportsUseCase, ): Flow { - return useCase() .asResult() .map { result -> diff --git a/ui/sharedui/lint-baseline.xml b/ui/sharedui/lint-baseline.xml index 16c6906..1d4a503 100644 --- a/ui/sharedui/lint-baseline.xml +++ b/ui/sharedui/lint-baseline.xml @@ -5,14 +5,14 @@ id="Aligned16KB" message="The native library `arm64-v8a/libmockkjvmtiagent.so` (from `io.mockk:mockk-agent-android:1.14.2`) is not 16 KB aligned"> + file="$GRADLE_USER_HOME/caches/8.11.1/transforms/78a476c196dc0b141a854b3fe010ce3f/transformed/mockk-agent-android-1.14.2/jni/arm64-v8a/libmockkjvmtiagent.so"/> + file="$GRADLE_USER_HOME/caches/8.11.1/transforms/78a476c196dc0b141a854b3fe010ce3f/transformed/mockk-agent-android-1.14.2/jni/arm64-v8a/libmockkjvmtiagent.so"/>