refactor: prepend "Ptv" to ptv api structures
This commit is contained in:
parent
ea08db364e
commit
6a55c86e38
6 changed files with 30 additions and 30 deletions
|
|
@ -36,7 +36,7 @@ import dev.icerock.moko.geo.compose.rememberLocationTrackerFactory
|
||||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import moe.lava.banksia.api.ptv.PtvService
|
import moe.lava.banksia.api.ptv.PtvService
|
||||||
import moe.lava.banksia.api.ptv.structures.Route
|
import moe.lava.banksia.api.ptv.structures.PtvRoute
|
||||||
import moe.lava.banksia.api.ptv.structures.getProperties
|
import moe.lava.banksia.api.ptv.structures.getProperties
|
||||||
import moe.lava.banksia.native.BanksiaTheme
|
import moe.lava.banksia.native.BanksiaTheme
|
||||||
import moe.lava.banksia.native.maps.Maps
|
import moe.lava.banksia.native.maps.Maps
|
||||||
|
|
@ -113,7 +113,7 @@ fun App() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var route by remember { mutableStateOf<Route?>(null) }
|
var route by remember { mutableStateOf<PtvRoute?>(null) }
|
||||||
val polylines = remember { mutableStateListOf<Polyline>() }
|
val polylines = remember { mutableStateListOf<Polyline>() }
|
||||||
|
|
||||||
LaunchedEffect(route) {
|
LaunchedEffect(route) {
|
||||||
|
|
|
||||||
|
|
@ -25,25 +25,25 @@ data class RouteTypeProperties(
|
||||||
val background: DrawableResource,
|
val background: DrawableResource,
|
||||||
val icon: DrawableResource,
|
val icon: DrawableResource,
|
||||||
)
|
)
|
||||||
fun RouteType.getProperties(): RouteTypeProperties {
|
fun PtvRouteType.getProperties(): RouteTypeProperties {
|
||||||
val colour = when (this) {
|
val colour = when (this) {
|
||||||
RouteType.TRAIN -> Color(0xFF0072CE)
|
PtvRouteType.TRAIN -> Color(0xFF0072CE)
|
||||||
RouteType.TRAM -> Color(0xFF78BE20)
|
PtvRouteType.TRAM -> Color(0xFF78BE20)
|
||||||
RouteType.BUS, RouteType.NIGHT_BUS -> Color(0xFFFF8200)
|
PtvRouteType.BUS, PtvRouteType.NIGHT_BUS -> Color(0xFFFF8200)
|
||||||
RouteType.VLINE -> Color(0xFF8F1A95)
|
PtvRouteType.VLINE -> Color(0xFF8F1A95)
|
||||||
}
|
}
|
||||||
val (drawable, background, icon) = when (this) {
|
val (drawable, background, icon) = when (this) {
|
||||||
RouteType.TRAM -> Triple(
|
PtvRouteType.TRAM -> Triple(
|
||||||
Res.drawable.tram, Res.drawable.tram_background, Res.drawable.tram_icon)
|
Res.drawable.tram, Res.drawable.tram_background, Res.drawable.tram_icon)
|
||||||
RouteType.TRAIN, RouteType.VLINE -> Triple(
|
PtvRouteType.TRAIN, PtvRouteType.VLINE -> Triple(
|
||||||
Res.drawable.train, Res.drawable.train_background, Res.drawable.train_icon)
|
Res.drawable.train, Res.drawable.train_background, Res.drawable.train_icon)
|
||||||
RouteType.BUS, RouteType.NIGHT_BUS -> Triple(
|
PtvRouteType.BUS, PtvRouteType.NIGHT_BUS -> Triple(
|
||||||
Res.drawable.bus, Res.drawable.bus_background, Res.drawable.bus_icon)
|
Res.drawable.bus, Res.drawable.bus_background, Res.drawable.bus_icon)
|
||||||
}
|
}
|
||||||
return RouteTypeProperties(colour, drawable, background, icon)
|
return RouteTypeProperties(colour, drawable, background, icon)
|
||||||
}
|
}
|
||||||
@Composable
|
@Composable
|
||||||
fun RouteType.ComposableIcon() {
|
fun PtvRouteType.ComposableIcon() {
|
||||||
val properties = this.getProperties()
|
val properties = this.getProperties()
|
||||||
Image(
|
Image(
|
||||||
painter = painterResource(properties.icon),
|
painter = painterResource(properties.icon),
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import moe.lava.banksia.api.ptv.PtvService
|
import moe.lava.banksia.api.ptv.PtvService
|
||||||
import moe.lava.banksia.api.ptv.structures.ComposableIcon
|
import moe.lava.banksia.api.ptv.structures.ComposableIcon
|
||||||
import moe.lava.banksia.api.ptv.structures.Route
|
import moe.lava.banksia.api.ptv.structures.PtvRoute
|
||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -40,7 +40,7 @@ fun Searcher(
|
||||||
onExpandedChange: (Boolean) -> Unit,
|
onExpandedChange: (Boolean) -> Unit,
|
||||||
text: String,
|
text: String,
|
||||||
onTextChange: (String) -> Unit,
|
onTextChange: (String) -> Unit,
|
||||||
onRouteChange: (Route) -> Unit,
|
onRouteChange: (PtvRoute) -> Unit,
|
||||||
) {
|
) {
|
||||||
val animatedPadding by animateDpAsState(
|
val animatedPadding by animateDpAsState(
|
||||||
if (expanded) {
|
if (expanded) {
|
||||||
|
|
@ -50,7 +50,7 @@ fun Searcher(
|
||||||
},
|
},
|
||||||
label = "padding"
|
label = "padding"
|
||||||
)
|
)
|
||||||
var routes by remember { mutableStateOf(listOf<Route>()) }
|
var routes by remember { mutableStateOf(listOf<PtvRoute>()) }
|
||||||
Box(modifier = Modifier.fillMaxSize()) {
|
Box(modifier = Modifier.fillMaxSize()) {
|
||||||
LaunchedEffect(Unit) {
|
LaunchedEffect(Unit) {
|
||||||
val localRoutes = ptvService.routes()
|
val localRoutes = ptvService.routes()
|
||||||
|
|
|
||||||
|
|
@ -13,15 +13,15 @@ import io.ktor.serialization.kotlinx.json.json
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
import kotlinx.serialization.json.Json
|
import kotlinx.serialization.json.Json
|
||||||
import moe.lava.banksia.Constants
|
import moe.lava.banksia.Constants
|
||||||
import moe.lava.banksia.api.ptv.structures.Route
|
import moe.lava.banksia.api.ptv.structures.PtvRoute
|
||||||
import moe.lava.banksia.log
|
import moe.lava.banksia.log
|
||||||
import okio.ByteString.Companion.encodeUtf8
|
import okio.ByteString.Companion.encodeUtf8
|
||||||
|
|
||||||
object Responses {
|
object Responses {
|
||||||
@Serializable
|
@Serializable
|
||||||
data class Route(val route: moe.lava.banksia.api.ptv.structures.Route)
|
data class Route(val route: moe.lava.banksia.api.ptv.structures.PtvRoute)
|
||||||
@Serializable
|
@Serializable
|
||||||
data class Routes(val routes: List<moe.lava.banksia.api.ptv.structures.Route>)
|
data class Routes(val routes: List<moe.lava.banksia.api.ptv.structures.PtvRoute>)
|
||||||
}
|
}
|
||||||
|
|
||||||
class PtvService {
|
class PtvService {
|
||||||
|
|
@ -47,7 +47,7 @@ class PtvService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun route(id: Int, includeGeopath: Boolean = false): Route {
|
suspend fun route(id: Int, includeGeopath: Boolean = false): PtvRoute {
|
||||||
val response: Responses.Route = client.get("routes") {
|
val response: Responses.Route = client.get("routes") {
|
||||||
url {
|
url {
|
||||||
appendPathSegments(id.toString())
|
appendPathSegments(id.toString())
|
||||||
|
|
@ -57,7 +57,7 @@ class PtvService {
|
||||||
return response.route
|
return response.route
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun routes(): List<Route> {
|
suspend fun routes(): List<PtvRoute> {
|
||||||
val response: Responses.Routes = client.get("routes").body()
|
val response: Responses.Routes = client.get("routes").body()
|
||||||
return response.routes
|
return response.routes
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ enum class GtfsSubType(val value: Int) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class Geopath(
|
data class PtvGeopath(
|
||||||
@SerialName("direction_id") val directionId: Int,
|
@SerialName("direction_id") val directionId: Int,
|
||||||
@SerialName("valid_from") val validFrom: String,
|
@SerialName("valid_from") val validFrom: String,
|
||||||
@SerialName("valid_to") val validTo: String,
|
@SerialName("valid_to") val validTo: String,
|
||||||
|
|
@ -24,13 +24,13 @@ data class Geopath(
|
||||||
)
|
)
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class Route(
|
data class PtvRoute(
|
||||||
@SerialName("route_type") val routeType: RouteType,
|
@SerialName("route_type") val routeType: PtvRouteType,
|
||||||
@SerialName("route_id") val routeId: Int,
|
@SerialName("route_id") val routeId: Int,
|
||||||
@SerialName("route_number") val routeNumber: String,
|
@SerialName("route_number") val routeNumber: String,
|
||||||
@SerialName("route_name") val routeName: String,
|
@SerialName("route_name") val routeName: String,
|
||||||
@SerialName("route_gtfs_id") val routeGtfsId: String,
|
@SerialName("route_gtfs_id") val routeGtfsId: String,
|
||||||
@SerialName("geopath") val geopath: List<Geopath>,
|
@SerialName("geopath") val geopath: List<PtvGeopath>,
|
||||||
) {
|
) {
|
||||||
fun gtfsSubType(): GtfsSubType? {
|
fun gtfsSubType(): GtfsSubType? {
|
||||||
GtfsSubType.entries.forEach {
|
GtfsSubType.entries.forEach {
|
||||||
|
|
@ -8,23 +8,23 @@ import kotlinx.serialization.descriptors.SerialDescriptor
|
||||||
import kotlinx.serialization.encoding.Decoder
|
import kotlinx.serialization.encoding.Decoder
|
||||||
import kotlinx.serialization.encoding.Encoder
|
import kotlinx.serialization.encoding.Encoder
|
||||||
|
|
||||||
private object RouteTypeSerializer : KSerializer<RouteType> {
|
private object PtvRouteTypeSerialiser : KSerializer<PtvRouteType> {
|
||||||
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor(
|
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor(
|
||||||
RouteType::class.qualifiedName!!,
|
PtvRouteType::class.qualifiedName!!,
|
||||||
PrimitiveKind.INT)
|
PrimitiveKind.INT)
|
||||||
|
|
||||||
override fun serialize(encoder: Encoder, value: RouteType) {
|
override fun serialize(encoder: Encoder, value: PtvRouteType) {
|
||||||
encoder.encodeInt(value.ordinal)
|
encoder.encodeInt(value.ordinal)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun deserialize(decoder: Decoder): RouteType {
|
override fun deserialize(decoder: Decoder): PtvRouteType {
|
||||||
val index = decoder.decodeInt()
|
val index = decoder.decodeInt()
|
||||||
return RouteType.entries[index]
|
return PtvRouteType.entries[index]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Serializable(with = RouteTypeSerializer::class)
|
@Serializable(with = PtvRouteTypeSerialiser::class)
|
||||||
enum class RouteType {
|
enum class PtvRouteType {
|
||||||
TRAIN,
|
TRAIN,
|
||||||
TRAM,
|
TRAM,
|
||||||
BUS,
|
BUS,
|
||||||
Loading…
Add table
Add a link
Reference in a new issue