MoonShot
MoonShot copied to clipboard
Notifications are broken
Problem
// JustBeforeLaunchAlarmReceiver
repository.getNextLaunch()
.first()
.invoke()
.takeIf { it != null && it.tentativeMaxPrecision == DatePrecision.hour }
?: run {
log("Could not get next launch from database. Not scheduling notification")
return
}
Broadcast receivers for Launch alarms use the first item received in the Flow<Resource<Launch> or Flow<Resource<List<Launch>> for showing the notifications. This first item is always Resource.Loading.
Hence the invoke() operator always produces null and notifications are never scheduled.
Solution
Change the call from first() to last().
Fixed in version 0.9.5.
Notifications are flaky and unreliable in the current version. Reopening this issue.