From 94a0283eb64039ec49daea3afe68e364a082b044 Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Sat, 3 Apr 2021 22:51:34 +0200 Subject: [PATCH] callback if carbs are added to db but not pump --- .../androidaps/queue/CommandQueue.kt | 39 ++++++++++++------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/queue/CommandQueue.kt b/app/src/main/java/info/nightscout/androidaps/queue/CommandQueue.kt index 70b56e858d..1a9b4f96c2 100644 --- a/app/src/main/java/info/nightscout/androidaps/queue/CommandQueue.kt +++ b/app/src/main/java/info/nightscout/androidaps/queue/CommandQueue.kt @@ -41,6 +41,7 @@ import info.nightscout.androidaps.utils.rx.AapsSchedulers import info.nightscout.androidaps.utils.sharedPreferences.SP import io.reactivex.disposables.CompositeDisposable import io.reactivex.rxkotlin.plusAssign +import io.reactivex.rxkotlin.subscribeBy import java.util.* import javax.inject.Inject import javax.inject.Singleton @@ -196,21 +197,29 @@ open class CommandQueue @Inject constructor( // Check if pump store carbs // If not, it's not necessary add command to the queue and initiate connection // Assuming carbs in the future and carbs with duration are NOT stores anyway - if (detailedBolusInfo.carbs > 0) - if (!activePlugin.get().activePump.pumpDescription.storesCarbInfo - || detailedBolusInfo.carbsDuration != 0L - || detailedBolusInfo.carbsTimestamp ?: detailedBolusInfo.timestamp > dateUtil._now() - ) { - disposable += repository.runTransactionForResult(detailedBolusInfo.insertCarbsTransaction()) - .subscribe( - { result -> result.inserted.forEach { aapsLogger.debug(LTag.DATABASE, "Inserted carbs $it") } }, - { aapsLogger.error(LTag.DATABASE, "Error while saving carbs", it) } - ) - // Do not process carbs anymore - detailedBolusInfo.carbs = 0.0 - // if no insulin just exit - if (detailedBolusInfo.insulin == 0.0) return true - } + if ((detailedBolusInfo.carbs > 0) && + (!activePlugin.get().activePump.pumpDescription.storesCarbInfo || + detailedBolusInfo.carbsDuration != 0L || + (detailedBolusInfo.carbsTimestamp ?: detailedBolusInfo.timestamp) > dateUtil._now()) + ) { + disposable += repository.runTransactionForResult(detailedBolusInfo.insertCarbsTransaction()) + .subscribeBy( + onSuccess = { result -> + result.inserted.forEach { aapsLogger.debug(LTag.DATABASE, "Inserted carbs $it") } + callback?.result(PumpEnactResult(injector).enacted(false).success(true))?.run() + + }, + onError = { + aapsLogger.error(LTag.DATABASE, "Error while saving carbs", it) + callback?.result(PumpEnactResult(injector).enacted(false).success(false))?.run() + } + ) + // Do not process carbs anymore + detailedBolusInfo.carbs = 0.0 + // if no insulin just exit + if (detailedBolusInfo.insulin == 0.0) return true + + } var type = if (detailedBolusInfo.bolusType == DetailedBolusInfo.BolusType.SMB) CommandType.SMB_BOLUS else CommandType.BOLUS if (type == CommandType.SMB_BOLUS) { if (isRunning(CommandType.BOLUS) || isRunning(CommandType.SMB_BOLUS) || bolusInQueue()) {