Skip to content

Commit

Permalink
Speculative fix for ArrayIndexOutOfBounds, also adding instant refres…
Browse files Browse the repository at this point in the history
…h at the end of polling a timeline history

Fixes #79
  • Loading branch information
MrApplejuice committed Sep 29, 2024
1 parent f62f8d4 commit 904a3bd
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ class DateTimeDeserializer : StdDeserializer<Date>(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}")
Expand All @@ -40,7 +40,7 @@ class AnyDateTimeDeserializer : StdDeserializer<Date>(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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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 <= ' ' })
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ suspend fun <T : Any> exponentialBackoff(
return block.invoke()
}
catch (e: RequestCodeFailure) {
println("XXX ${forceRetry400Counter} < ${forceRetry400}")
if ((e.code >= 400) and (e.code < 500)) {
if (forceRetry400Counter < forceRetry400) {
forceRetry400Counter++
Expand Down

0 comments on commit 904a3bd

Please sign in to comment.