Bimba.git

commit 3968ee81ac785d725183dc14828b427d38c0df1e

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