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
|
|
|
}
|
|
|
|
}
|