Author: Adam Pioterek <adam.pioterek@protonmail.ch>
favourite timetable caching
app/src/main/java/ml/adamsprogs/bimba/models/Favourite.kt | 20 ++++----
diff --git a/app/src/main/java/ml/adamsprogs/bimba/models/Favourite.kt b/app/src/main/java/ml/adamsprogs/bimba/models/Favourite.kt index 559be852132e6749ac6680bd4896cf6cb88e192b..0ef50c67d45c3f821dd477926c556f6529dbf084 100644 --- a/app/src/main/java/ml/adamsprogs/bimba/models/Favourite.kt +++ b/app/src/main/java/ml/adamsprogs/bimba/models/Favourite.kt @@ -1,6 +1,5 @@ package ml.adamsprogs.bimba.models -import android.content.Context import android.os.Parcel import android.os.Parcelable import android.util.Log @@ -9,11 +8,9 @@ import kotlin.collections.ArrayList import kotlin.collections.HashMap class Favourite : Parcelable { - lateinit var name: String - lateinit var timetables: ArrayList<HashMap<String, String>> - lateinit var context: Context - - private constructor() + var name: String + var timetables: ArrayList<HashMap<String, String>> + private var oneDayDepartures:ArrayList<HashMap<String, ArrayList<Departure>>>? = null constructor(parcel: Parcel) { val array = ArrayList<String>() @@ -54,7 +51,6 @@ if (timetables.isEmpty()) return null val today: String val tomorrow: String - val oneDayDepartures = ArrayList<HashMap<String, ArrayList<Departure>>>() val twoDayDepartures = ArrayList<Departure>() val now = Calendar.getInstance() val departureTime = Calendar.getInstance() @@ -71,13 +67,17 @@ Calendar.SATURDAY -> tomorrow = "saturdays" else -> tomorrow = "workdays" } - timetables.mapTo(oneDayDepartures) { timetable.getStopDepartures(it["stop"] as String, it["line"])!! } - oneDayDepartures.forEach { + if (oneDayDepartures == null) { + oneDayDepartures = ArrayList<HashMap<String, ArrayList<Departure>>>() + timetables.mapTo(oneDayDepartures!!) { timetable.getStopDepartures(it["stop"] as String, it["line"])!! } + } + + oneDayDepartures!!.forEach { it[today]!!.forEach { twoDayDepartures.add(fromString(it.toString())) } } - oneDayDepartures.forEach { + oneDayDepartures!!.forEach { it[tomorrow]!!.forEach { val d = fromString(it.toString()) d.tomorrow = true