resolve canulaUsage main thread blocking
This commit is contained in:
parent
3e9699f57c
commit
aee226ffa4
2 changed files with 19 additions and 9 deletions
|
@ -1,5 +1,8 @@
|
||||||
package info.nightscout.plugins.ui
|
package info.nightscout.plugins.ui
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint
|
||||||
|
import android.os.Handler
|
||||||
|
import android.os.HandlerThread
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import androidx.annotation.StringRes
|
import androidx.annotation.StringRes
|
||||||
import info.nightscout.database.ValueWrapper
|
import info.nightscout.database.ValueWrapper
|
||||||
|
@ -13,6 +16,7 @@ import info.nightscout.interfaces.stats.TddCalculator
|
||||||
import info.nightscout.interfaces.utils.DecimalFormatter
|
import info.nightscout.interfaces.utils.DecimalFormatter
|
||||||
import info.nightscout.plugins.R
|
import info.nightscout.plugins.R
|
||||||
import info.nightscout.plugins.sync.nsclient.extensions.age
|
import info.nightscout.plugins.sync.nsclient.extensions.age
|
||||||
|
import info.nightscout.shared.extensions.runOnUiThread
|
||||||
import info.nightscout.shared.interfaces.ResourceHelper
|
import info.nightscout.shared.interfaces.ResourceHelper
|
||||||
import info.nightscout.shared.sharedPreferences.SP
|
import info.nightscout.shared.sharedPreferences.SP
|
||||||
import info.nightscout.shared.utils.DateUtil
|
import info.nightscout.shared.utils.DateUtil
|
||||||
|
@ -30,6 +34,7 @@ class StatusLightHandler @Inject constructor(
|
||||||
private val repository: AppRepository,
|
private val repository: AppRepository,
|
||||||
private val tddCalculator: TddCalculator
|
private val tddCalculator: TddCalculator
|
||||||
) {
|
) {
|
||||||
|
private var handler = Handler(HandlerThread(this::class.simpleName + "Handler").also { it.start() }.looper)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* applies the extended statusLight subview on the overview fragment
|
* applies the extended statusLight subview on the overview fragment
|
||||||
|
@ -66,7 +71,7 @@ class StatusLightHandler @Inject constructor(
|
||||||
pump.pumpDescription.maxResorvoirReading.toDouble()
|
pump.pumpDescription.maxResorvoirReading.toDouble()
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
handleUsage(cannulaUsage, TherapyEvent.Type.CANNULA_CHANGE, insulinUnit)
|
if (cannulaUsage != null) handleUsage(cannulaUsage, insulinUnit)
|
||||||
handleLevel(reservoirLevel, R.string.key_statuslights_res_critical, 10.0, R.string.key_statuslights_res_warning, 80.0, pump.reservoirLevel, insulinUnit)
|
handleLevel(reservoirLevel, R.string.key_statuslights_res_critical, 10.0, R.string.key_statuslights_res_warning, 80.0, pump.reservoirLevel, insulinUnit)
|
||||||
}
|
}
|
||||||
if (!config.NSCLIENT) {
|
if (!config.NSCLIENT) {
|
||||||
|
@ -103,6 +108,7 @@ class StatusLightHandler @Inject constructor(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressLint("SetTextI18n")
|
||||||
private fun handleLevel(view: TextView?, criticalSetting: Int, criticalDefaultValue: Double, warnSetting: Int, warnDefaultValue: Double, level: Double, units: String) {
|
private fun handleLevel(view: TextView?, criticalSetting: Int, criticalDefaultValue: Double, warnSetting: Int, warnDefaultValue: Double, level: Double, units: String) {
|
||||||
val resUrgent = sp.getDouble(criticalSetting, criticalDefaultValue)
|
val resUrgent = sp.getDouble(criticalSetting, criticalDefaultValue)
|
||||||
val resWarn = sp.getDouble(warnSetting, warnDefaultValue)
|
val resWarn = sp.getDouble(warnSetting, warnDefaultValue)
|
||||||
|
@ -124,13 +130,17 @@ class StatusLightHandler @Inject constructor(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun handleUsage(view: TextView?, type: TherapyEvent.Type, units: String) {
|
private fun handleUsage(view: TextView?, units: String) {
|
||||||
val therapyEvent = repository.getLastTherapyRecordUpToNow(type).blockingGet()
|
handler.post {
|
||||||
|
val therapyEvent = repository.getLastTherapyRecordUpToNow(TherapyEvent.Type.CANNULA_CHANGE).blockingGet()
|
||||||
var usage = 0.0
|
var usage = 0.0
|
||||||
if (therapyEvent is ValueWrapper.Existing) {
|
if (therapyEvent is ValueWrapper.Existing) {
|
||||||
val tdd = tddCalculator.calculate(therapyEvent.value.timestamp, dateUtil.now())
|
val tdd = tddCalculator.calculate(therapyEvent.value.timestamp, dateUtil.now())
|
||||||
usage = tdd.totalAmount
|
usage = tdd.totalAmount
|
||||||
}
|
}
|
||||||
|
runOnUiThread {
|
||||||
view?.text = DecimalFormatter.to0Decimal(usage, units)
|
view?.text = DecimalFormatter.to0Decimal(usage, units)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -205,7 +205,7 @@
|
||||||
android:paddingStart="4dp"
|
android:paddingStart="4dp"
|
||||||
android:paddingEnd="0dp"
|
android:paddingEnd="0dp"
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
tools:text="22U" />
|
tools:text="..." />
|
||||||
|
|
||||||
</TableRow>
|
</TableRow>
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue