diff --git a/app/src/main/java/eu/pkgsoftware/babybuddywidgets/JacksonSerializers.kt b/app/src/main/java/eu/pkgsoftware/babybuddywidgets/JacksonSerializers.kt index e85dae9..3f09178 100644 --- a/app/src/main/java/eu/pkgsoftware/babybuddywidgets/JacksonSerializers.kt +++ b/app/src/main/java/eu/pkgsoftware/babybuddywidgets/JacksonSerializers.kt @@ -18,7 +18,7 @@ class DateTimeDeserializer : StdDeserializer(Date::class.java) { override fun deserialize(p: JsonParser, ctxt: DeserializationContext?): Date { p.text?.let { parseNullOrDate(it, DATE_TIME_FORMAT_STRING)?.let { - return serverTimeToClientTime(it) + return it } } throw IOException("Invalid date string ${p.text}") @@ -40,7 +40,7 @@ class AnyDateTimeDeserializer : StdDeserializer(Date::class.java) { override fun deserialize(p: JsonParser, ctxt: DeserializationContext?): Date { p.text?.let { parseNullOrDate(it, DATE_TIME_FORMAT_STRING)?.let { - return serverTimeToClientTime(it) + return it } parseNullOrDate(it, DATE_ONLY_FORMAT_STRING)?.let { return it diff --git a/app/src/main/java/eu/pkgsoftware/babybuddywidgets/history/ChildEventHistoryLoader.kt b/app/src/main/java/eu/pkgsoftware/babybuddywidgets/history/ChildEventHistoryLoader.kt index d9252f6..4ec20ce 100644 --- a/app/src/main/java/eu/pkgsoftware/babybuddywidgets/history/ChildEventHistoryLoader.kt +++ b/app/src/main/java/eu/pkgsoftware/babybuddywidgets/history/ChildEventHistoryLoader.kt @@ -14,7 +14,6 @@ import eu.pkgsoftware.babybuddywidgets.logic.EndAwareContinuousListIntegrator import eu.pkgsoftware.babybuddywidgets.networking.RequestCodeFailure import eu.pkgsoftware.babybuddywidgets.networking.babybuddy.ConnectingDialogInterface import eu.pkgsoftware.babybuddywidgets.networking.babybuddy.InterruptedException -import eu.pkgsoftware.babybuddywidgets.networking.babybuddy.PaginatedResult import eu.pkgsoftware.babybuddywidgets.networking.babybuddy.exponentialBackoff import eu.pkgsoftware.babybuddywidgets.networking.babybuddy.models.ChangeEntry import eu.pkgsoftware.babybuddywidgets.networking.babybuddy.models.SleepEntry @@ -288,18 +287,27 @@ class ChildEventHistoryLoader( fun updateTop() { var i = 0 + val liItems = listIntegrator.items listIntegrator.top = null for (item in currentList) { if (visibilityCheck.checkPartiallyVisible(item.view)) { - listIntegrator.top = listIntegrator.items[i] + listIntegrator.top = liItems[i] break } i++ } - for (cls in IMPLEMENTED_EVENT_CLASSES) { queryOffsets[cls] = listIntegrator.suggestClassQueryOffset(classActivityName(cls)) } + val visibleCount = listIntegrator.computeValidCount() + if (i >= visibleCount - 20) { + val numberItems = IMPLEMENTED_EVENT_CLASSES.map { listIntegrator.getItemsCount(classActivityName(it)) }.sum() + if (numberItems > liItems.size) { + if (fetchJob?.isActive != true) { + forceRefresh() + } + } + } } fun forceRefresh() { diff --git a/app/src/main/java/eu/pkgsoftware/babybuddywidgets/history/TimelineEntry.kt b/app/src/main/java/eu/pkgsoftware/babybuddywidgets/history/TimelineEntry.kt index 0f98c73..74145a1 100644 --- a/app/src/main/java/eu/pkgsoftware/babybuddywidgets/history/TimelineEntry.kt +++ b/app/src/main/java/eu/pkgsoftware/babybuddywidgets/history/TimelineEntry.kt @@ -14,6 +14,7 @@ import eu.pkgsoftware.babybuddywidgets.networking.RequestCodeFailure import eu.pkgsoftware.babybuddywidgets.networking.babybuddy.models.ChangeEntry import eu.pkgsoftware.babybuddywidgets.networking.babybuddy.models.FeedingEntry import eu.pkgsoftware.babybuddywidgets.networking.babybuddy.models.TimeEntry +import eu.pkgsoftware.babybuddywidgets.networking.babybuddy.serverTimeToClientTime import kotlinx.coroutines.launch import java.io.IOException import java.net.MalformedURLException @@ -83,15 +84,19 @@ class TimelineEntry(private val fragment: BaseFragment, private var _entry: Time } private fun defaultPhraseFields(phrase: Phrase): Phrase { - val start_time = TIME_FORMAT.format(entry!!.start) - val end_time = TIME_FORMAT.format(entry!!.end) + val local_start_time = serverTimeToClientTime(entry!!.start) + val local_end_time = serverTimeToClientTime(entry!!.end) + + val start_time = TIME_FORMAT.format(local_start_time) + val end_time = TIME_FORMAT.format(local_end_time) val opt_time_range = if (start_time == end_time) start_time else "$start_time - $end_time" + return phrase .putOptional("type", entry!!.appType) - .putOptional("start_date", DATE_FORMAT.format(entry!!.start)) - .putOptional("start_time", TIME_FORMAT.format(entry!!.start)) - .putOptional("end_date", DATE_FORMAT.format(entry!!.end)) - .putOptional("end_time", TIME_FORMAT.format(entry!!.end)) + .putOptional("start_date", DATE_FORMAT.format(local_start_time)) + .putOptional("start_time", TIME_FORMAT.format(local_start_time)) + .putOptional("end_date", DATE_FORMAT.format(local_end_time)) + .putOptional("end_time", TIME_FORMAT.format(local_end_time)) .putOptional("opt_time_range", opt_time_range) .putOptional("notes", entry!!.notes.trim { it <= ' ' }) } diff --git a/app/src/main/java/eu/pkgsoftware/babybuddywidgets/networking/babybuddy/RetryLogic.kt b/app/src/main/java/eu/pkgsoftware/babybuddywidgets/networking/babybuddy/RetryLogic.kt index e64fbc1..82caab7 100644 --- a/app/src/main/java/eu/pkgsoftware/babybuddywidgets/networking/babybuddy/RetryLogic.kt +++ b/app/src/main/java/eu/pkgsoftware/babybuddywidgets/networking/babybuddy/RetryLogic.kt @@ -32,7 +32,6 @@ suspend fun exponentialBackoff( return block.invoke() } catch (e: RequestCodeFailure) { - println("XXX ${forceRetry400Counter} < ${forceRetry400}") if ((e.code >= 400) and (e.code < 500)) { if (forceRetry400Counter < forceRetry400) { forceRetry400Counter++