AndroidAPS/app/src/main/java/info/nightscout/androidaps/db/CompatDBHelper.kt

90 lines
4.3 KiB
Kotlin
Raw Normal View History

2021-02-06 00:30:27 +01:00
package info.nightscout.androidaps.db
import info.nightscout.androidaps.database.AppRepository
2021-03-25 17:48:07 +01:00
import info.nightscout.androidaps.database.entities.*
2021-04-01 23:46:21 +02:00
import info.nightscout.androidaps.database.entities.ExtendedBolus
import info.nightscout.androidaps.database.entities.TemporaryBasal
import info.nightscout.androidaps.events.*
2021-02-06 00:30:27 +01:00
import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag
2021-10-15 14:56:22 +02:00
import info.nightscout.androidaps.plugins.bus.RxBus
2021-02-06 00:30:27 +01:00
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventNewHistoryData
import io.reactivex.disposables.Disposable
import javax.inject.Inject
import javax.inject.Singleton
@Singleton
class CompatDBHelper @Inject constructor(
val aapsLogger: AAPSLogger,
val repository: AppRepository,
2021-10-15 14:56:22 +02:00
val rxBus: RxBus
2021-02-06 00:30:27 +01:00
) {
fun dbChangeDisposable(): Disposable = repository
.changeObservable()
.doOnSubscribe {
rxBus.send(EventNewBG(null))
}
.subscribe {
2021-04-12 14:31:15 +02:00
/**
* GlucoseValues can come in batch
* oldest one should be used for invalidation, newest one for for triggering Loop.
* Thus we need to collect both
*
*/
2021-04-29 20:42:45 +02:00
var newestGlucoseValue: GlucoseValue? = null
2021-04-12 14:31:15 +02:00
it.filterIsInstance<GlucoseValue>().lastOrNull()?.let { gv ->
aapsLogger.debug(LTag.DATABASE, "Firing EventNewBg")
rxBus.send(EventNewBG(gv))
newestGlucoseValue = gv
}
it.filterIsInstance<GlucoseValue>().map { gv -> gv.timestamp }.minOrNull()?.let { timestamp ->
2021-02-06 00:30:27 +01:00
aapsLogger.debug(LTag.DATABASE, "Firing EventNewHistoryData")
2021-04-12 14:31:15 +02:00
rxBus.send(EventNewHistoryData(timestamp, true, newestGlucoseValue))
2021-02-06 00:30:27 +01:00
}
2021-04-12 14:31:15 +02:00
it.filterIsInstance<Carbs>().map { t -> t.timestamp }.minOrNull()?.let { timestamp ->
aapsLogger.debug(LTag.DATABASE, "Firing EventTreatmentChange")
rxBus.send(EventTreatmentChange())
rxBus.send(EventNewHistoryData(timestamp, false))
}
it.filterIsInstance<Bolus>().map { t -> t.timestamp }.minOrNull()?.let { timestamp ->
aapsLogger.debug(LTag.DATABASE, "Firing EventTreatmentChange")
rxBus.send(EventTreatmentChange())
rxBus.send(EventNewHistoryData(timestamp, false))
}
it.filterIsInstance<TemporaryBasal>().map { t -> t.timestamp }.minOrNull()?.let { timestamp ->
aapsLogger.debug(LTag.DATABASE, "Firing EventTempBasalChange")
rxBus.send(EventTempBasalChange())
rxBus.send(EventNewHistoryData(timestamp, false))
}
it.filterIsInstance<ExtendedBolus>().map { t -> t.timestamp }.minOrNull()?.let { timestamp ->
aapsLogger.debug(LTag.DATABASE, "Firing EventExtendedBolusChange")
rxBus.send(EventExtendedBolusChange())
rxBus.send(EventNewHistoryData(timestamp, false))
2021-02-06 00:30:27 +01:00
}
it.filterIsInstance<TemporaryTarget>().firstOrNull()?.let {
aapsLogger.debug(LTag.DATABASE, "Firing EventTempTargetChange")
rxBus.send(EventTempTargetChange())
}
2021-03-08 20:10:02 +01:00
it.filterIsInstance<TherapyEvent>().firstOrNull()?.let {
aapsLogger.debug(LTag.DATABASE, "Firing EventTherapyEventChange")
rxBus.send(EventTherapyEventChange())
}
2021-03-19 18:49:34 +01:00
it.filterIsInstance<Food>().firstOrNull()?.let {
aapsLogger.debug(LTag.DATABASE, "Firing EventFoodDatabaseChanged")
rxBus.send(EventFoodDatabaseChanged())
}
2021-04-29 20:42:45 +02:00
it.filterIsInstance<ProfileSwitch>().firstOrNull()?.let {
2021-05-17 21:05:24 +02:00
aapsLogger.debug(LTag.DATABASE, "Firing EventProfileSwitchChanged")
2021-04-29 20:42:45 +02:00
rxBus.send(EventProfileSwitchChanged())
}
2021-10-10 23:26:50 +02:00
it.filterIsInstance<EffectiveProfileSwitch>().firstOrNull()?.let { eps ->
2021-05-17 21:05:24 +02:00
aapsLogger.debug(LTag.DATABASE, "Firing EventProfileSwitchChanged")
2021-10-10 23:26:50 +02:00
rxBus.send(EventEffectiveProfileSwitchChanged(eps))
2021-04-29 20:42:45 +02:00
}
2021-05-28 16:06:44 +02:00
it.filterIsInstance<OfflineEvent>().firstOrNull()?.let {
aapsLogger.debug(LTag.DATABASE, "Firing EventOfflineChange")
rxBus.send(EventOfflineChange())
}
2021-02-06 00:30:27 +01:00
}
}