Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/jvmMain/kotlin/app/EventUIState.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package app

interface EventUIState {
fun onClickSearch(text: String)
}
36 changes: 36 additions & 0 deletions src/jvmMain/kotlin/app/WeatherUIState.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package app

import javax.swing.Icon

data class WeatherUIState(
val search: String = "",
val cloud: Int = 0,
val humidity: Int = 0,
val wind: Double = 0.0,
val chanceOfRain: Int = 0,
val weeklyForeCase: WeeklyForeCaseUIState = WeeklyForeCaseUIState(),
val temp: Double = 0.0,
val condition: ConditionUIState = ConditionUIState(),
val location: LocationUIState = LocationUIState()
)

data class WeeklyForeCaseUIState(
val foreCaseDay: List<ForeCaseDayUIState> = emptyList()
)

data class ForeCaseDayUIState(
val date: String = "",
val maxTemp: Double = 0.0,
val minTemp: Double = 0.0,
val icon: String = ""
)

data class ConditionUIState(
val text: String = "",
val icon: String = ""
)

data class LocationUIState(
val name: String = "",
val localTime: String = ""
)
23 changes: 23 additions & 0 deletions src/jvmMain/kotlin/app/WeatherUIStateMapper.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package app

import domain.entity.ConditionEntity
import domain.entity.WeatherEntity

fun WeatherEntity.toWeatherUIState(): WeatherUIState{

return WeatherUIState(
cloud = this.current?.cloud ?: 0,
humidity = this.current?.humidity ?: 0,
wind = this.current?.windKph ?: 0.0,
temp = this.current?.tempC ?:0.0,

)

}

fun ConditionEntity.toConditionUIStateMapper(): ConditionUIState{
return ConditionUIState(
text = this.text ?: "",
icon = this.icon ?: ""
)
}
114 changes: 92 additions & 22 deletions src/jvmMain/kotlin/data/remote/dto/WeatherDto.kt
Original file line number Diff line number Diff line change
@@ -1,31 +1,101 @@
package data.remote.dto

import com.google.gson.annotations.SerializedName

import kotlinx.serialization.SerialName


data class WeatherDto(
val current: CurrentDto?,
val location: LocationDto?
)
data class WeatherDTO(
@SerialName("query")
val query: Query
) {

data class Query(
@SerialName("custom_id")
val customId: String,
@SerialName("q")
val q: String,
@SerialName("location")
val location: Location,
@SerialName("current")
val current: Current
) {

data class ConditionDto(
val code: Int?,
val icon: String?,
val text: String?
)
data class Location(
@SerialName("name")
val name: String,
@SerialName("region")
val region: String,
@SerialName("country")
val country: String,
@SerialName("lat")
val lat: Double,
@SerialName("lon")
val lon: Double,
@SerialName("tz_id")
val tzId: String,
@SerialName("localtime_epoch")
val localtimeEpoch: Int,
@SerialName("localtime")
val localtime: String
)

data class Current(
@SerialName("last_updated_epoch")
val lastUpdatedEpoch: Int,
@SerialName("last_updated")
val lastUpdated: String,
@SerialName("temp_c")
val tempC: Double,
@SerialName("temp_f")
val tempF: Double,
@SerialName("is_day")
val isDay: Int,
@SerialName("condition")
val condition: Condition,
@SerialName("wind_mph")
val windMph: Double,
@SerialName("wind_kph")
val windKph: Double,
@SerialName("wind_degree")
val windDegree: Int,
@SerialName("wind_dir")
val windDir: String,
@SerialName("pressure_mb")
val pressureMb: Double,
@SerialName("pressure_in")
val pressureIn: Double,
@SerialName("precip_mm")
val precipMm: Double,
@SerialName("precip_in")
val precipIn: Double,
@SerialName("humidity")
val humidity: Int,
@SerialName("cloud")
val cloud: Int,
@SerialName("feelslike_c")
val feelslikeC: Double,
@SerialName("feelslike_f")
val feelslikeF: Double,
@SerialName("vis_km")
val visKm: Double,
@SerialName("vis_miles")
val visMiles: Double,
@SerialName("uv")
val uv: Double,
@SerialName("gust_mph")
val gustMph: Double,
@SerialName("gust_kph")
val gustKph: Double
) {

data class LocationDto(
val country: String?,
val lat: Double?,
val localtime: String?,
@SerializedName("localtime_epoch")
val localtimeEpoch: Int?,
val lon: Double?,
val name: String?,
val region: String?,
@SerializedName("tz_id")
val tzId: String?
)
data class Condition(
@SerialName("text")
val text: String,
@SerialName("icon")
val icon: String,
@SerialName("code")
val code: Int
)
}
}
}