refactor: prepend "Ptv" to ptv api structures

This commit is contained in:
LavaDesu 2025-04-29 20:40:45 +10:00
parent ea08db364e
commit 6a55c86e38
Signed by: cilly
GPG key ID: 6500251E087653C9
6 changed files with 30 additions and 30 deletions

View file

@ -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) {

View file

@ -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),

View file

@ -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()

View file

@ -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
} }

View file

@ -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 {

View file

@ -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,