NSC: optimize devicestatus precessing

This commit is contained in:
Milos Kozak 2023-10-14 13:53:28 +02:00
parent 57afaafa5b
commit eb9fa1a25b
3 changed files with 24 additions and 6 deletions

View file

@ -14,6 +14,7 @@ import app.aaps.activities.PreferencesActivity
import app.aaps.core.interfaces.notifications.Notification import app.aaps.core.interfaces.notifications.Notification
import app.aaps.core.interfaces.nsclient.NSAlarm import app.aaps.core.interfaces.nsclient.NSAlarm
import app.aaps.core.interfaces.rx.bus.RxBus import app.aaps.core.interfaces.rx.bus.RxBus
import app.aaps.core.interfaces.rx.events.EventDismissNotification
import app.aaps.core.interfaces.ui.UiInteraction import app.aaps.core.interfaces.ui.UiInteraction
import app.aaps.core.main.events.EventNewNotification import app.aaps.core.main.events.EventNewNotification
import app.aaps.core.ui.toast.ToastUtils import app.aaps.core.ui.toast.ToastUtils
@ -169,6 +170,10 @@ class UiInteractionImpl @Inject constructor(
} }
} }
override fun dismissNotification(id: Int) {
rxBus.send(EventDismissNotification(id))
}
override fun addNotification(id: Int, text: String, level: Int) { override fun addNotification(id: Int, text: String, level: Int) {
rxBus.send(EventNewNotification(Notification(id, text, level))) rxBus.send(EventNewNotification(Notification(id, text, level)))
} }

View file

@ -68,6 +68,7 @@ interface UiInteraction {
fun runCareDialog(fragmentManager: FragmentManager, options: EventType, @StringRes event: Int) fun runCareDialog(fragmentManager: FragmentManager, options: EventType, @StringRes event: Int)
fun dismissNotification(id: Int)
fun addNotification(id: Int, text: String, level: Int) fun addNotification(id: Int, text: String, level: Int)
fun addNotificationValidFor(id: Int, text: String, level: Int, validMinutes: Int) fun addNotificationValidFor(id: Int, text: String, level: Int, validMinutes: Int)
fun addNotificationWithSound(id: Int, text: String, level: Int, @RawRes soundId: Int?) fun addNotificationWithSound(id: Int, text: String, level: Int, @RawRes soundId: Int?)

View file

@ -2,13 +2,18 @@ package app.aaps.plugins.sync.nsclient.data
import app.aaps.annotations.OpenForTesting import app.aaps.annotations.OpenForTesting
import app.aaps.core.interfaces.configuration.Config import app.aaps.core.interfaces.configuration.Config
import app.aaps.core.interfaces.notifications.Notification
import app.aaps.core.interfaces.nsclient.ProcessedDeviceStatusData import app.aaps.core.interfaces.nsclient.ProcessedDeviceStatusData
import app.aaps.core.interfaces.resources.ResourceHelper
import app.aaps.core.interfaces.sharedPreferences.SP import app.aaps.core.interfaces.sharedPreferences.SP
import app.aaps.core.interfaces.ui.UiInteraction
import app.aaps.core.interfaces.utils.DateUtil import app.aaps.core.interfaces.utils.DateUtil
import app.aaps.core.interfaces.utils.T
import app.aaps.core.nssdk.interfaces.RunningConfiguration import app.aaps.core.nssdk.interfaces.RunningConfiguration
import app.aaps.core.nssdk.localmodel.devicestatus.NSDeviceStatus import app.aaps.core.nssdk.localmodel.devicestatus.NSDeviceStatus
import app.aaps.core.utils.HtmlHelper import app.aaps.core.utils.HtmlHelper
import app.aaps.core.utils.JsonHelper import app.aaps.core.utils.JsonHelper
import app.aaps.plugins.sync.R
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
@ -72,23 +77,30 @@ class NSDeviceStatusHandler @Inject constructor(
private val config: Config, private val config: Config,
private val dateUtil: DateUtil, private val dateUtil: DateUtil,
private val runningConfiguration: RunningConfiguration, private val runningConfiguration: RunningConfiguration,
private val processedDeviceStatusData: ProcessedDeviceStatusData private val processedDeviceStatusData: ProcessedDeviceStatusData,
private val uiInteraction: UiInteraction,
private val rh: ResourceHelper
) { ) {
fun handleNewData(deviceStatuses: Array<NSDeviceStatus>) { fun handleNewData(deviceStatuses: Array<NSDeviceStatus>) {
var configurationDetected = false var configurationDetected = false
for (i in deviceStatuses.size - 1 downTo 0) { for (i in deviceStatuses.size - 1 downTo 0) {
val nsDeviceStatus = deviceStatuses[i] val nsDeviceStatus = deviceStatuses[i]
if (config.NSCLIENT) {
updatePumpData(nsDeviceStatus) updatePumpData(nsDeviceStatus)
updateDeviceData(nsDeviceStatus) updateDeviceData(nsDeviceStatus)
updateOpenApsData(nsDeviceStatus) updateOpenApsData(nsDeviceStatus)
updateUploaderData(nsDeviceStatus) updateUploaderData(nsDeviceStatus)
nsDeviceStatus.pump?.let { sp.putBoolean(app.aaps.core.utils.R.string.key_objectives_pump_status_is_available_in_ns, true) } // Objective 0 }
if (config.NSCLIENT && !configurationDetected) if (config.NSCLIENT && !configurationDetected)
nsDeviceStatus.configuration?.let { nsDeviceStatus.configuration?.let {
// copy configuration of Insulin and Sensitivity from main AAPS // copy configuration of Insulin and Sensitivity from main AAPS
runningConfiguration.apply(it) runningConfiguration.apply(it)
configurationDetected = true // pick only newest configurationDetected = true // pick only newest
}
if (config.APS) {
nsDeviceStatus.pump?.let { sp.putBoolean(app.aaps.core.utils.R.string.key_objectives_pump_status_is_available_in_ns, true) } // Objective 0
} }
} }
} }