refactor(ui): split into shared, maps, and main modules

This commit is contained in:
Cilly Leang 2026-03-26 02:55:46 +11:00
parent aab03ced07
commit a79c95829e
Signed by: cilly
GPG key ID: 6500251E087653C9
43 changed files with 539 additions and 378 deletions

View file

@ -20,7 +20,6 @@ kotlin {
freeCompilerArgs.add("-opt-in=kotlin.time.ExperimentalTime")
}
iosX64()
iosArm64()
iosSimulatorArm64()

View file

@ -0,0 +1,44 @@
package moe.lava.banksia.client.data.stoptime
import moe.lava.banksia.data.ptv.PtvService
import moe.lava.banksia.model.RouteType
import moe.lava.banksia.model.StopTime
class StopTimePtvDataSource(
private val ptvService: PtvService,
) {
suspend fun getForStop(type: RouteType, stopId: String): List<StopTime> {
return listOf()
// val res = ptvService.departures(type, stopId)
// // Map<
// // Pair<DirectionId, RouteId>,
// // Pair<DirectionName, List<DepartureTimes>>
// // >
// val timetable = HashMap<Pair<Int, Int>, Pair<String, MutableList<String>>>()
// res.departures.forEach { dep ->
// val key = Pair(dep.directionId, dep.routeId)
// val direction = ptvService.direction(dep.directionId, dep.routeId)
// val route = res.routes[dep.routeId.toString()]
// val prefix = route?.let { if (it.routeNumber == "") "" else "${it.routeNumber} - " } ?: ""
// val element = timetable.getOrPut(key) { Pair(prefix + direction.directionName, mutableListOf()) }.second
// if (element.size >= 5)
// return@forEach
//
// val date = Instant.parse(dep.estimatedDepartureUtc ?: dep.scheduledDepartureUtc)
// val min = (date - Clock.System.now()).inWholeMinutes
// if (min <= -5)
// return@forEach
// if (min >= 65)
// element.add("${((min + 30.0) / 60.0).toInt()}hr")
// else
// element.add("${min}mn")
// }
//
// val departures = timetable.values.sortedBy { it.first }.map { (name, list) ->
// if (list.isEmpty())
// InfoPanelState.Stop.Departure(name, "No departures")
// else
// InfoPanelState.Stop.Departure(name, list.joinToString(" | "))
// }
}
}

View file

@ -12,8 +12,10 @@ import moe.lava.banksia.client.data.route.RouteLocalDataSource
import moe.lava.banksia.client.data.route.RouteRemoteDataSource
import moe.lava.banksia.client.data.stop.StopLocalDataSource
import moe.lava.banksia.client.data.stop.StopRemoteDataSource
import moe.lava.banksia.client.data.stoptime.StopTimePtvDataSource
import moe.lava.banksia.client.repository.RouteRepository
import moe.lava.banksia.client.repository.StopRepository
import moe.lava.banksia.client.repository.StopTimeRepository
import moe.lava.banksia.data.ptv.PtvService
import moe.lava.banksia.util.log
import org.koin.core.module.dsl.singleOf
@ -46,8 +48,10 @@ val ClientModule = module {
singleOf(::RouteRemoteDataSource)
singleOf(::StopLocalDataSource)
singleOf(::StopRemoteDataSource)
singleOf(::StopTimePtvDataSource)
// Repositories
singleOf(::RouteRepository)
singleOf(::StopRepository)
singleOf(::StopTimeRepository)
}

View file

@ -0,0 +1,13 @@
package moe.lava.banksia.client.repository
import moe.lava.banksia.client.data.stoptime.StopTimePtvDataSource
import moe.lava.banksia.model.StopTime
class StopTimeRepository(
private val ptv: StopTimePtvDataSource,
) {
// TODO
suspend fun getForStop(id: String): List<StopTime> {
return listOf()
}
}