From 484f3a2a98adc2d10f322cd4d8408d7092d9fcd7 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Tue, 2 Jun 2020 19:28:56 +0200 Subject: [PATCH] invalidate cache including bg after bg change --- .../nightscout/androidaps/db/DatabaseHelper.java | 4 +++- .../iobCobCalculator/IobCobCalculatorPlugin.java | 15 +++++++++++---- .../events/EventNewHistoryBgData.kt | 5 +++++ 3 files changed, 19 insertions(+), 5 deletions(-) create mode 100644 app/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/events/EventNewHistoryBgData.kt diff --git a/app/src/main/java/info/nightscout/androidaps/db/DatabaseHelper.java b/app/src/main/java/info/nightscout/androidaps/db/DatabaseHelper.java index 4b8d637c47..4d4c52df43 100644 --- a/app/src/main/java/info/nightscout/androidaps/db/DatabaseHelper.java +++ b/app/src/main/java/info/nightscout/androidaps/db/DatabaseHelper.java @@ -52,6 +52,7 @@ import info.nightscout.androidaps.logging.AAPSLogger; import info.nightscout.androidaps.logging.LTag; import info.nightscout.androidaps.plugins.bus.RxBusWrapper; import info.nightscout.androidaps.plugins.general.nsclient.NSUpload; +import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventNewHistoryBgData; import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventNewHistoryData; import info.nightscout.androidaps.plugins.pump.insight.database.InsightBolusID; import info.nightscout.androidaps.plugins.pump.insight.database.InsightHistoryOffset; @@ -386,7 +387,8 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper { old.copyFrom(bgReading); getDaoBgReadings().update(old); aapsLogger.debug(LTag.DATABASE, "BG: Updating record from: " + from + " New data: " + old.toString()); - scheduleBgChange(bgReading); + rxBus.send(new EventNewHistoryBgData(old.date)); // trigger cache invalidation + scheduleBgChange(bgReading); // trigger new calculation return false; } } catch (SQLException e) { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/IobCobCalculatorPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/IobCobCalculatorPlugin.java index 2f49cd9971..205717dc59 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/IobCobCalculatorPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/IobCobCalculatorPlugin.java @@ -39,6 +39,7 @@ import info.nightscout.androidaps.logging.LTag; import info.nightscout.androidaps.plugins.bus.RxBusWrapper; import info.nightscout.androidaps.interfaces.ProfileFunction; import info.nightscout.androidaps.plugins.iob.iobCobCalculator.data.AutosensData; +import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventNewHistoryBgData; import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventNewHistoryData; import info.nightscout.androidaps.plugins.sensitivity.SensitivityAAPSPlugin; import info.nightscout.androidaps.plugins.sensitivity.SensitivityOref1Plugin; @@ -159,7 +160,7 @@ public class IobCobCalculatorPlugin extends PluginBase implements IobCobCalculat runCalculation("onNewProfile", System.currentTimeMillis(), false, true, event); }, fabricPrivacy::logException) ); - // EventNewBG + // EventNewBG .... cannot be used for invalidating because only event with last BG is fired disposable.add(rxBus .toObservable(EventNewBG.class) .observeOn(Schedulers.io()) @@ -203,7 +204,13 @@ public class IobCobCalculatorPlugin extends PluginBase implements IobCobCalculat disposable.add(rxBus .toObservable(EventNewHistoryData.class) .observeOn(Schedulers.io()) - .subscribe(this::newHistoryData, fabricPrivacy::logException) + .subscribe(event -> newHistoryData(event, false), fabricPrivacy::logException) + ); + // EventNewHistoryBgData + disposable.add(rxBus + .toObservable(EventNewHistoryBgData.class) + .observeOn(Schedulers.io()) + .subscribe(event -> newHistoryData(new EventNewHistoryData(event.getTimestamp()), true), fabricPrivacy::logException) ); } @@ -822,7 +829,7 @@ public class IobCobCalculatorPlugin extends PluginBase implements IobCobCalculat } // When historical data is changed (comming from NS etc) finished calculations after this date must be invalidated - private void newHistoryData(EventNewHistoryData ev) { + private void newHistoryData(EventNewHistoryData ev, boolean bgDataReload) { //log.debug("Locking onNewHistoryData"); stopCalculation("onEventNewHistoryData"); synchronized (dataLock) { @@ -862,7 +869,7 @@ public class IobCobCalculatorPlugin extends PluginBase implements IobCobCalculat } } } - runCalculation("onEventNewHistoryData", System.currentTimeMillis(), false, true, ev); + runCalculation("onEventNewHistoryData", System.currentTimeMillis(), bgDataReload, true, ev); //log.debug("Releasing onNewHistoryData"); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/events/EventNewHistoryBgData.kt b/app/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/events/EventNewHistoryBgData.kt new file mode 100644 index 0000000000..5f546c2d9f --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/events/EventNewHistoryBgData.kt @@ -0,0 +1,5 @@ +package info.nightscout.androidaps.plugins.iob.iobCobCalculator.events + +import info.nightscout.androidaps.events.Event + +class EventNewHistoryBgData(val timestamp: Long) : Event() \ No newline at end of file