refactor: move route into its own package
This commit is contained in:
parent
4cd160cc47
commit
2551f67323
5 changed files with 45 additions and 41 deletions
|
|
@ -1,4 +1,4 @@
|
|||
package moe.lava.banksia.api.ptv
|
||||
package moe.lava.banksia.api.ptv.structures
|
||||
|
||||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.runtime.Composable
|
||||
|
|
@ -21,19 +21,16 @@ import androidx.compose.material3.Text
|
|||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateListOf
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.saveable.rememberSaveable
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.unit.dp
|
||||
import moe.lava.banksia.api.ptv.ComposableIcon
|
||||
import moe.lava.banksia.api.ptv.PtvService
|
||||
import moe.lava.banksia.api.ptv.Route
|
||||
|
||||
import moe.lava.banksia.api.ptv.structures.ComposableIcon
|
||||
import moe.lava.banksia.api.ptv.structures.Route
|
||||
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
|
|
|
|||
|
|
@ -15,40 +15,14 @@ import kotlinx.serialization.SerialName
|
|||
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.log
|
||||
import okio.ByteString.Companion.encodeUtf8
|
||||
|
||||
// Ordinals used for sorting in searcher
|
||||
enum class GtfsSubType(val value: Int) {
|
||||
MetroTrain(2),
|
||||
MetroTram(3),
|
||||
MetroBus(4),
|
||||
RegionalTrain(1),
|
||||
RegionalCoach(5),
|
||||
RegionalBus(6),
|
||||
SkyBus(11),
|
||||
Interstate(10),
|
||||
}
|
||||
|
||||
object Responses {
|
||||
@Serializable
|
||||
data class Route(
|
||||
@SerialName("route_type") val routeType: RouteType,
|
||||
@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,
|
||||
) {
|
||||
fun gtfsSubType(): GtfsSubType? {
|
||||
GtfsSubType.entries.forEach {
|
||||
if (routeGtfsId.startsWith(it.value.toString()))
|
||||
return it
|
||||
data class Route(val routes: List<moe.lava.banksia.api.ptv.structures.Route>)
|
||||
}
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
@Serializable
|
||||
data class RouteResponse(val routes: List<Route>)
|
||||
|
||||
class PtvService {
|
||||
private val client = HttpClient() {
|
||||
|
|
@ -74,7 +48,7 @@ class PtvService {
|
|||
}
|
||||
|
||||
suspend fun routes(): List<Route> {
|
||||
val response: RouteResponse = client.get("routes").body()
|
||||
val response: Responses.Route = client.get("routes").body()
|
||||
return response.routes
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,34 @@
|
|||
package moe.lava.banksia.api.ptv.structures
|
||||
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
// Ordinals used for sorting in searcher
|
||||
enum class GtfsSubType(val value: Int) {
|
||||
MetroTrain(2),
|
||||
MetroTram(3),
|
||||
MetroBus(4),
|
||||
RegionalTrain(1),
|
||||
RegionalCoach(5),
|
||||
RegionalBus(6),
|
||||
SkyBus(11),
|
||||
Interstate(10),
|
||||
}
|
||||
|
||||
@Serializable
|
||||
data class Route(
|
||||
@SerialName("route_type") val routeType: RouteType,
|
||||
@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,
|
||||
) {
|
||||
fun gtfsSubType(): GtfsSubType? {
|
||||
GtfsSubType.entries.forEach {
|
||||
if (routeGtfsId.startsWith(it.value.toString()))
|
||||
return it
|
||||
}
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package moe.lava.banksia.api.ptv
|
||||
package moe.lava.banksia.api.ptv.structures
|
||||
|
||||
import kotlinx.serialization.KSerializer
|
||||
import kotlinx.serialization.Serializable
|
||||
|
|
@ -9,7 +9,8 @@ import kotlinx.serialization.encoding.Decoder
|
|||
import kotlinx.serialization.encoding.Encoder
|
||||
|
||||
private object RouteTypeSerializer : KSerializer<RouteType> {
|
||||
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor(RouteType::class.qualifiedName!!,
|
||||
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor(
|
||||
RouteType::class.qualifiedName!!,
|
||||
PrimitiveKind.INT)
|
||||
|
||||
override fun serialize(encoder: Encoder, value: RouteType) {
|
||||
|
|
@ -20,8 +21,6 @@ private object RouteTypeSerializer : KSerializer<RouteType> {
|
|||
val index = decoder.decodeInt()
|
||||
return RouteType.entries[index]
|
||||
}
|
||||
|
||||
override fun toString(): String = "EnumOrdinalSerializer<${descriptor.serialName}>"
|
||||
}
|
||||
|
||||
@Serializable(with = RouteTypeSerializer::class)
|
||||
Loading…
Add table
Add a link
Reference in a new issue