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.launch
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.native.BanksiaTheme
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>() }
LaunchedEffect(route) {

View file

@ -25,25 +25,25 @@ data class RouteTypeProperties(
val background: DrawableResource,
val icon: DrawableResource,
)
fun RouteType.getProperties(): RouteTypeProperties {
fun PtvRouteType.getProperties(): RouteTypeProperties {
val colour = when (this) {
RouteType.TRAIN -> Color(0xFF0072CE)
RouteType.TRAM -> Color(0xFF78BE20)
RouteType.BUS, RouteType.NIGHT_BUS -> Color(0xFFFF8200)
RouteType.VLINE -> Color(0xFF8F1A95)
PtvRouteType.TRAIN -> Color(0xFF0072CE)
PtvRouteType.TRAM -> Color(0xFF78BE20)
PtvRouteType.BUS, PtvRouteType.NIGHT_BUS -> Color(0xFFFF8200)
PtvRouteType.VLINE -> Color(0xFF8F1A95)
}
val (drawable, background, icon) = when (this) {
RouteType.TRAM -> Triple(
PtvRouteType.TRAM -> Triple(
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)
RouteType.BUS, RouteType.NIGHT_BUS -> Triple(
PtvRouteType.BUS, PtvRouteType.NIGHT_BUS -> Triple(
Res.drawable.bus, Res.drawable.bus_background, Res.drawable.bus_icon)
}
return RouteTypeProperties(colour, drawable, background, icon)
}
@Composable
fun RouteType.ComposableIcon() {
fun PtvRouteType.ComposableIcon() {
val properties = this.getProperties()
Image(
painter = painterResource(properties.icon),

View file

@ -30,7 +30,7 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
import moe.lava.banksia.api.ptv.PtvService
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)
@Composable
@ -40,7 +40,7 @@ fun Searcher(
onExpandedChange: (Boolean) -> Unit,
text: String,
onTextChange: (String) -> Unit,
onRouteChange: (Route) -> Unit,
onRouteChange: (PtvRoute) -> Unit,
) {
val animatedPadding by animateDpAsState(
if (expanded) {
@ -50,7 +50,7 @@ fun Searcher(
},
label = "padding"
)
var routes by remember { mutableStateOf(listOf<Route>()) }
var routes by remember { mutableStateOf(listOf<PtvRoute>()) }
Box(modifier = Modifier.fillMaxSize()) {
LaunchedEffect(Unit) {
val localRoutes = ptvService.routes()

View file

@ -13,15 +13,15 @@ import io.ktor.serialization.kotlinx.json.json
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
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 okio.ByteString.Companion.encodeUtf8
object Responses {
@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
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 {
@ -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") {
url {
appendPathSegments(id.toString())
@ -57,7 +57,7 @@ class PtvService {
return response.route
}
suspend fun routes(): List<Route> {
suspend fun routes(): List<PtvRoute> {
val response: Responses.Routes = client.get("routes").body()
return response.routes
}

View file

@ -16,7 +16,7 @@ enum class GtfsSubType(val value: Int) {
}
@Serializable
data class Geopath(
data class PtvGeopath(
@SerialName("direction_id") val directionId: Int,
@SerialName("valid_from") val validFrom: String,
@SerialName("valid_to") val validTo: String,
@ -24,13 +24,13 @@ data class Geopath(
)
@Serializable
data class Route(
@SerialName("route_type") val routeType: RouteType,
data class PtvRoute(
@SerialName("route_type") val routeType: PtvRouteType,
@SerialName("route_id") val routeId: Int,
@SerialName("route_number") val routeNumber: String,
@SerialName("route_name") val routeName: String,
@SerialName("route_gtfs_id") val routeGtfsId: String,
@SerialName("geopath") val geopath: List<Geopath>,
@SerialName("geopath") val geopath: List<PtvGeopath>,
) {
fun gtfsSubType(): GtfsSubType? {
GtfsSubType.entries.forEach {

View file

@ -8,23 +8,23 @@ import kotlinx.serialization.descriptors.SerialDescriptor
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
private object RouteTypeSerializer : KSerializer<RouteType> {
private object PtvRouteTypeSerialiser : KSerializer<PtvRouteType> {
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor(
RouteType::class.qualifiedName!!,
PtvRouteType::class.qualifiedName!!,
PrimitiveKind.INT)
override fun serialize(encoder: Encoder, value: RouteType) {
override fun serialize(encoder: Encoder, value: PtvRouteType) {
encoder.encodeInt(value.ordinal)
}
override fun deserialize(decoder: Decoder): RouteType {
override fun deserialize(decoder: Decoder): PtvRouteType {
val index = decoder.decodeInt()
return RouteType.entries[index]
return PtvRouteType.entries[index]
}
}
@Serializable(with = RouteTypeSerializer::class)
enum class RouteType {
@Serializable(with = PtvRouteTypeSerialiser::class)
enum class PtvRouteType {
TRAIN,
TRAM,
BUS,