Skip to content

Commit c02f3fd

Browse files
committed
AGP update, dependencies update, handle nullable values from the api
1 parent 5132ca5 commit c02f3fd

31 files changed

+1137
-974
lines changed

app/build.gradle.kts

+4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
plugins {
22
alias(libs.plugins.android.application)
33
alias(libs.plugins.jetbrains.kotlin)
4+
alias(libs.plugins.compose.compiler)
45
alias(libs.plugins.devtools.ksp)
56
}
67

@@ -77,6 +78,9 @@ dependencies {
7778
// Retrofit
7879
implementation(libs.retrofit)
7980
implementation(libs.converter.moshi)
81+
implementation(libs.moshi)
82+
implementation(libs.moshi.kotlin)
83+
ksp(libs.moshi.kotlin.codegen)
8084

8185
// Navigation
8286
implementation(libs.androidx.navigation.compose)
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,75 @@
11
package com.personal.weathering.aq.data.models
22

33
import com.squareup.moshi.Json
4+
import com.squareup.moshi.JsonClass
45

6+
@JsonClass(generateAdapter = true)
57
data class AqDto(
6-
@field:Json(name = "current")
8+
@Json(name = "current")
79
val currentAq: CurrentAqDto,
8-
@field:Json(name = "hourly")
10+
@Json(name = "hourly")
911
val hourlyAq: HourlyAqDto
1012
)
1113

14+
@JsonClass(generateAdapter = true)
1215
data class CurrentAqDto(
1316
val time: String,
14-
@field:Json(name = "european_aqi")
17+
@Json(name = "european_aqi")
1518
val euAqi: Int,
16-
@field:Json(name = "us_aqi")
19+
@Json(name = "us_aqi")
1720
val usAqi: Int,
18-
@field:Json(name = "pm10")
21+
@Json(name = "pm10")
1922
val particulateMatter10: Double,
20-
@field:Json(name = "pm2_5")
23+
@Json(name = "pm2_5")
2124
val particulateMatter25: Double,
22-
@field:Json(name = "carbon_monoxide")
25+
@Json(name = "carbon_monoxide")
2326
val carbonMonoxide: Double,
24-
@field:Json(name = "nitrogen_dioxide")
27+
@Json(name = "nitrogen_dioxide")
2528
val nitrogenDioxide: Double,
26-
@field:Json(name = "sulphur_dioxide")
29+
@Json(name = "sulphur_dioxide")
2730
val sulphurDioxide: Double,
2831
val ozone: Double
2932
)
3033

34+
@JsonClass(generateAdapter = true)
3135
data class HourlyAqDto(
3236
val time: List<String>,
33-
@field:Json(name = "european_aqi")
37+
@Json(name = "european_aqi")
3438
val euAqies: List<Int>,
35-
@field:Json(name = "us_aqi")
39+
@Json(name = "us_aqi")
3640
val usAqies: List<Int>,
37-
@field:Json(name = "pm10")
41+
@Json(name = "pm10")
3842
val particulateMatters10: List<Double>,
39-
@field:Json(name = "pm2_5")
43+
@Json(name = "pm2_5")
4044
val particulateMatters25: List<Double>,
41-
@field:Json(name = "carbon_monoxide")
45+
@Json(name = "carbon_monoxide")
4246
val carbonMonoxides: List<Double>,
43-
@field:Json(name = "nitrogen_dioxide")
47+
@Json(name = "nitrogen_dioxide")
4448
val nitrogenDioxides: List<Double>,
45-
@field:Json(name = "sulphur_dioxide")
49+
@Json(name = "sulphur_dioxide")
4650
val sulphurDioxides: List<Double>,
47-
@field:Json(name = "ozone")
51+
@Json(name = "ozone")
4852
val ozones: List<Double>,
49-
@field:Json(name = "us_aqi_pm10")
53+
@Json(name = "us_aqi_pm10")
5054
val usAqiParticulateMatters10: List<Int>,
51-
@field:Json(name = "us_aqi_pm2_5")
55+
@Json(name = "us_aqi_pm2_5")
5256
val usAqiParticulateMatters25: List<Int>,
53-
@field:Json(name = "us_aqi_carbon_monoxide")
57+
@Json(name = "us_aqi_carbon_monoxide")
5458
val usAqiCarbonMonoxides: List<Int>,
55-
@field:Json(name = "us_aqi_nitrogen_dioxide")
59+
@Json(name = "us_aqi_nitrogen_dioxide")
5660
val usAqiNitrogenDioxides: List<Int>,
57-
@field:Json(name = "us_aqi_sulphur_dioxide")
61+
@Json(name = "us_aqi_sulphur_dioxide")
5862
val usAqiSulphurDioxides: List<Int>,
59-
@field:Json(name = "us_aqi_ozone")
63+
@Json(name = "us_aqi_ozone")
6064
val usAqiOzones: List<Int>,
61-
@field:Json(name = "european_aqi_pm10")
65+
@Json(name = "european_aqi_pm10")
6266
val euAqiParticulateMatters10: List<Int>,
63-
@field:Json(name = "european_aqi_pm2_5")
67+
@Json(name = "european_aqi_pm2_5")
6468
val euAqiParticulateMatters25: List<Int>,
65-
@field:Json(name = "european_aqi_nitrogen_dioxide")
69+
@Json(name = "european_aqi_nitrogen_dioxide")
6670
val euAqiNitrogenDioxides: List<Int>,
67-
@field:Json(name = "european_aqi_sulphur_dioxide")
71+
@Json(name = "european_aqi_sulphur_dioxide")
6872
val euAqiSulphurDioxides: List<Int>,
69-
@field:Json(name = "european_aqi_ozone")
73+
@Json(name = "european_aqi_ozone")
7074
val euAqiOzones: List<Int>
7175
)
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,26 @@
11
package com.personal.weathering.core.data.models
22

33
import com.squareup.moshi.Json
4+
import com.squareup.moshi.JsonClass
45

6+
@JsonClass(generateAdapter = true)
57
data class GeocodingDto(
6-
@field:Json(name = "address")
8+
@Json(name = "address")
79
val address: AddressDto?,
8-
@field:Json(name = "error")
9-
val error: String
10+
@Json(name = "error")
11+
val error: String?
1012
)
1113

14+
@JsonClass(generateAdapter = true)
1215
data class AddressDto(
13-
@field:Json(name = "city")
16+
@Json(name = "city")
1417
val city: String?,
15-
@field:Json(name = "town")
18+
@Json(name = "town")
1619
val town: String?,
17-
@field:Json(name = "village")
20+
@Json(name = "village")
1821
val village: String?,
19-
@field:Json(name = "hamlet")
22+
@Json(name = "hamlet")
2023
val hamlet: String?,
21-
@field:Json(name = "municipality")
24+
@Json(name = "municipality")
2225
val municipality: String?
2326
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.personal.weathering.core.util
2+
3+
import java.time.LocalDate
4+
import java.time.LocalDateTime
5+
import java.time.format.DateTimeFormatter
6+
7+
fun convertStringToDateTime(dateString: String?): LocalDateTime? {
8+
return try {
9+
dateString?.let { string ->
10+
LocalDateTime.parse(string, DateTimeFormatter.ISO_DATE_TIME)
11+
}
12+
} catch (e: Exception) {
13+
null
14+
}
15+
}
16+
17+
fun convertStringToDate(dateString: String?): LocalDate? {
18+
return try {
19+
dateString?.let { string ->
20+
LocalDate.parse(string, DateTimeFormatter.ISO_DATE)
21+
}
22+
} catch (e: Exception) {
23+
null
24+
}
25+
}
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,28 @@
11
package com.personal.weathering.search.data.models
22

33
import com.squareup.moshi.Json
4+
import com.squareup.moshi.JsonClass
45

6+
@JsonClass(generateAdapter = true)
57
data class SearchDto(
6-
@field:Json(name = "results")
8+
@Json(name = "results")
79
val searchResults: List<SearchResultDto>?
810
)
911

12+
@JsonClass(generateAdapter = true)
1013
data class SearchResultDto(
11-
@field:Json(name = "id")
14+
@Json(name = "id")
1215
val id: Int,
13-
@field:Json(name = "name")
16+
@Json(name = "name")
1417
val name: String,
15-
@field:Json(name = "latitude")
18+
@Json(name = "latitude")
1619
val lat: Double,
17-
@field:Json(name = "longitude")
20+
@Json(name = "longitude")
1821
val lon: Double,
19-
@field:Json(name = "country")
22+
@Json(name = "country")
2023
val country: String?,
21-
@field:Json(name = "country_code")
24+
@Json(name = "country_code")
2225
val countryCode: String?,
23-
@field:Json(name = "admin1")
26+
@Json(name = "admin1")
2427
val adminLevel: String?,
2528
)

0 commit comments

Comments
 (0)