NSCv3: resolve nullability
This commit is contained in:
parent
fee7059559
commit
4a1fc0f45c
6 changed files with 47 additions and 41 deletions
|
@ -111,14 +111,14 @@ class NSClientV3Plugin @Inject constructor(
|
||||||
when {
|
when {
|
||||||
sp.getBoolean(R.string.key_ns_client_paused, false) -> rh.gs(info.nightscout.core.ui.R.string.paused)
|
sp.getBoolean(R.string.key_ns_client_paused, false) -> rh.gs(info.nightscout.core.ui.R.string.paused)
|
||||||
isAllowed.not() -> blockingReason
|
isAllowed.not() -> blockingReason
|
||||||
nsAndroidClient.lastStatus == null -> rh.gs(R.string.not_connected)
|
nsAndroidClient?.lastStatus == null -> rh.gs(R.string.not_connected)
|
||||||
workIsRunning(arrayOf(JOB_NAME)) -> rh.gs(R.string.working)
|
workIsRunning(arrayOf(JOB_NAME)) -> rh.gs(R.string.working)
|
||||||
nsAndroidClient.lastStatus?.apiPermissions?.isFull() == true -> rh.gs(info.nightscout.shared.R.string.connected)
|
nsAndroidClient?.lastStatus?.apiPermissions?.isFull() == true -> rh.gs(info.nightscout.shared.R.string.connected)
|
||||||
nsAndroidClient.lastStatus?.apiPermissions?.isRead() == true -> rh.gs(R.string.read_only)
|
nsAndroidClient?.lastStatus?.apiPermissions?.isRead() == true -> rh.gs(R.string.read_only)
|
||||||
else -> rh.gs(info.nightscout.core.ui.R.string.unknown)
|
else -> rh.gs(info.nightscout.core.ui.R.string.unknown)
|
||||||
}
|
}
|
||||||
|
|
||||||
internal lateinit var nsAndroidClient: NSAndroidClient
|
internal var nsAndroidClient: NSAndroidClient? = null
|
||||||
|
|
||||||
private val isAllowed get() = nsClientReceiverDelegate.allowed
|
private val isAllowed get() = nsClientReceiverDelegate.allowed
|
||||||
private val blockingReason get() = nsClientReceiverDelegate.blockingReason
|
private val blockingReason get() = nsClientReceiverDelegate.blockingReason
|
||||||
|
@ -211,8 +211,8 @@ class NSClientV3Plugin @Inject constructor(
|
||||||
preferenceFragment.findPreference<SwitchPreference>(rh.gs(R.string.key_ns_receive_tbr_eb))?.isVisible = config.isEngineeringMode()
|
preferenceFragment.findPreference<SwitchPreference>(rh.gs(R.string.key_ns_receive_tbr_eb))?.isVisible = config.isEngineeringMode()
|
||||||
}
|
}
|
||||||
|
|
||||||
override val hasWritePermission: Boolean get() = nsAndroidClient.lastStatus?.apiPermissions?.isFull() ?: false
|
override val hasWritePermission: Boolean get() = nsAndroidClient?.lastStatus?.apiPermissions?.isFull() ?: false
|
||||||
override val connected: Boolean get() = nsAndroidClient.lastStatus != null
|
override val connected: Boolean get() = nsAndroidClient?.lastStatus != null
|
||||||
override fun clearLog() {
|
override fun clearLog() {
|
||||||
handler.post {
|
handler.post {
|
||||||
synchronized(listLog) { listLog.clear() }
|
synchronized(listLog) { listLog.clear() }
|
||||||
|
@ -314,8 +314,8 @@ class NSClientV3Plugin @Inject constructor(
|
||||||
private val gson: Gson = GsonBuilder().create()
|
private val gson: Gson = GsonBuilder().create()
|
||||||
private fun dbOperation(collection: String, dataPair: DataSyncSelector.DataPair, progress: String, operation: Operation) {
|
private fun dbOperation(collection: String, dataPair: DataSyncSelector.DataPair, progress: String, operation: Operation) {
|
||||||
val call = when (operation) {
|
val call = when (operation) {
|
||||||
Operation.CREATE -> nsAndroidClient::createTreatment
|
Operation.CREATE -> nsAndroidClient?.let { return@let it::createTreatment }
|
||||||
Operation.UPDATE -> nsAndroidClient::updateTreatment
|
Operation.UPDATE -> nsAndroidClient?.let { return@let it::updateTreatment }
|
||||||
}
|
}
|
||||||
when (dataPair) {
|
when (dataPair) {
|
||||||
is DataSyncSelector.PairBolus -> dataPair.value.toNSBolus()
|
is DataSyncSelector.PairBolus -> dataPair.value.toNSBolus()
|
||||||
|
@ -348,34 +348,35 @@ class NSClientV3Plugin @Inject constructor(
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
val result = call(data)
|
call?.let { it(data) }?.let { result ->
|
||||||
when (dataPair) {
|
when (dataPair) {
|
||||||
is DataSyncSelector.PairBolus -> {
|
is DataSyncSelector.PairBolus -> {
|
||||||
if (result.response == 201) { // created
|
if (result.response == 201) { // created
|
||||||
dataPair.value.interfaceIDs.nightscoutId = result.identifier
|
dataPair.value.interfaceIDs.nightscoutId = result.identifier
|
||||||
storeDataForDb.nsIdBoluses.add(dataPair.value)
|
storeDataForDb.nsIdBoluses.add(dataPair.value)
|
||||||
storeDataForDb.scheduleNsIdUpdate()
|
storeDataForDb.scheduleNsIdUpdate()
|
||||||
|
}
|
||||||
|
dataSyncSelector.confirmLastBolusIdIfGreater(dataPair.id)
|
||||||
}
|
}
|
||||||
dataSyncSelector.confirmLastBolusIdIfGreater(dataPair.id)
|
// is DataSyncSelector.PairCarbs -> dataPair.value.toJson(false, dateUtil)
|
||||||
}
|
// is DataSyncSelector.PairBolusCalculatorResult -> dataPair.value.toJson(false, dateUtil, profileFunction)
|
||||||
// is DataSyncSelector.PairCarbs -> dataPair.value.toJson(false, dateUtil)
|
// is DataSyncSelector.PairTemporaryTarget -> dataPair.value.toJson(false, profileFunction.getUnits(), dateUtil)
|
||||||
// is DataSyncSelector.PairBolusCalculatorResult -> dataPair.value.toJson(false, dateUtil, profileFunction)
|
// is DataSyncSelector.PairFood -> dataPair.value.toJson(false)
|
||||||
// is DataSyncSelector.PairTemporaryTarget -> dataPair.value.toJson(false, profileFunction.getUnits(), dateUtil)
|
// is DataSyncSelector.PairGlucoseValue -> dataPair.value.toJson(false, dateUtil)
|
||||||
// is DataSyncSelector.PairFood -> dataPair.value.toJson(false)
|
// is DataSyncSelector.PairTherapyEvent -> dataPair.value.toJson(false, dateUtil)
|
||||||
// is DataSyncSelector.PairGlucoseValue -> dataPair.value.toJson(false, dateUtil)
|
// is DataSyncSelector.PairTemporaryBasal -> dataPair.value.toJson(false, profileFunction.getProfile(dataPair.value.timestamp), dateUtil)
|
||||||
// is DataSyncSelector.PairTherapyEvent -> dataPair.value.toJson(false, dateUtil)
|
// is DataSyncSelector.PairExtendedBolus -> dataPair.value.toJson(false, profileFunction.getProfile(dataPair.value.timestamp), dateUtil)
|
||||||
// is DataSyncSelector.PairTemporaryBasal -> dataPair.value.toJson(false, profileFunction.getProfile(dataPair.value.timestamp), dateUtil)
|
// is DataSyncSelector.PairProfileSwitch -> dataPair.value.toJson(false, dateUtil)
|
||||||
// is DataSyncSelector.PairExtendedBolus -> dataPair.value.toJson(false, profileFunction.getProfile(dataPair.value.timestamp), dateUtil)
|
is DataSyncSelector.PairEffectiveProfileSwitch -> {
|
||||||
// is DataSyncSelector.PairProfileSwitch -> dataPair.value.toJson(false, dateUtil)
|
if (result.response == 201) { // created
|
||||||
is DataSyncSelector.PairEffectiveProfileSwitch -> {
|
dataPair.value.interfaceIDs.nightscoutId = result.identifier
|
||||||
if (result.response == 201) { // created
|
storeDataForDb.nsIdEffectiveProfileSwitches.add(dataPair.value)
|
||||||
dataPair.value.interfaceIDs.nightscoutId = result.identifier
|
storeDataForDb.scheduleNsIdUpdate()
|
||||||
storeDataForDb.nsIdEffectiveProfileSwitches.add(dataPair.value)
|
}
|
||||||
storeDataForDb.scheduleNsIdUpdate()
|
dataSyncSelector.confirmLastEffectiveProfileSwitchIdIfGreater(dataPair.id)
|
||||||
}
|
}
|
||||||
dataSyncSelector.confirmLastEffectiveProfileSwitchIdIfGreater(dataPair.id)
|
// is DataSyncSelector.PairOfflineEvent -> dataPair.value.toJson(false, dateUtil)
|
||||||
}
|
}
|
||||||
// is DataSyncSelector.PairOfflineEvent -> dataPair.value.toJson(false, dateUtil)
|
|
||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
aapsLogger.error(LTag.NSCLIENT, "Upload exception", e)
|
aapsLogger.error(LTag.NSCLIENT, "Upload exception", e)
|
||||||
|
@ -439,7 +440,7 @@ class NSClientV3Plugin @Inject constructor(
|
||||||
|
|
||||||
private val eventWorker = Executors.newSingleThreadScheduledExecutor()
|
private val eventWorker = Executors.newSingleThreadScheduledExecutor()
|
||||||
private var scheduledEventPost: ScheduledFuture<*>? = null
|
private var scheduledEventPost: ScheduledFuture<*>? = null
|
||||||
fun scheduleExecution() {
|
private fun scheduleExecution() {
|
||||||
class PostRunnable : Runnable {
|
class PostRunnable : Runnable {
|
||||||
|
|
||||||
override fun run() {
|
override fun run() {
|
||||||
|
|
|
@ -40,6 +40,7 @@ class LoadBgWorker(
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun doWorkAndLog(): Result {
|
override fun doWorkAndLog(): Result {
|
||||||
|
val nsAndroidClient = nsClientV3Plugin.nsAndroidClient ?: return Result.failure(workDataOf("Error" to "AndroidClient is null"))
|
||||||
var ret = Result.success()
|
var ret = Result.success()
|
||||||
val isFirstLoad = nsClientV3Plugin.isFirstLoad(NsClient.Collection.ENTRIES)
|
val isFirstLoad = nsClientV3Plugin.isFirstLoad(NsClient.Collection.ENTRIES)
|
||||||
val lastLoaded =
|
val lastLoaded =
|
||||||
|
@ -50,9 +51,9 @@ class LoadBgWorker(
|
||||||
try {
|
try {
|
||||||
val sgvs: List<NSSgvV3>
|
val sgvs: List<NSSgvV3>
|
||||||
val response: NSAndroidClient.ReadResponse<List<NSSgvV3>>?
|
val response: NSAndroidClient.ReadResponse<List<NSSgvV3>>?
|
||||||
if (isFirstLoad) sgvs = nsClientV3Plugin.nsAndroidClient.getSgvsNewerThan(lastLoaded, 500)
|
if (isFirstLoad) sgvs = nsAndroidClient.getSgvsNewerThan(lastLoaded, 500)
|
||||||
else {
|
else {
|
||||||
response = nsClientV3Plugin.nsAndroidClient.getSgvsModifiedSince(lastLoaded, 500)
|
response = nsAndroidClient.getSgvsModifiedSince(lastLoaded, 500)
|
||||||
sgvs = response.values
|
sgvs = response.values
|
||||||
nsClientV3Plugin.lastLoadedSrvModified.collections.entries = response.lastServerModified
|
nsClientV3Plugin.lastLoadedSrvModified.collections.entries = response.lastServerModified
|
||||||
nsClientV3Plugin.storeLastFetched()
|
nsClientV3Plugin.storeLastFetched()
|
||||||
|
|
|
@ -30,12 +30,13 @@ class LoadDeviceStatusWorker(
|
||||||
@Inject lateinit var nsDeviceStatusHandler: NSDeviceStatusHandler
|
@Inject lateinit var nsDeviceStatusHandler: NSDeviceStatusHandler
|
||||||
|
|
||||||
override fun doWorkAndLog(): Result {
|
override fun doWorkAndLog(): Result {
|
||||||
|
val nsAndroidClient = nsClientV3Plugin.nsAndroidClient ?: return Result.failure(workDataOf("Error" to "AndroidClient is null"))
|
||||||
var ret = Result.success()
|
var ret = Result.success()
|
||||||
|
|
||||||
runBlocking {
|
runBlocking {
|
||||||
try {
|
try {
|
||||||
val from = dateUtil.now() - T.mins(7).msecs()
|
val from = dateUtil.now() - T.mins(7).msecs()
|
||||||
val deviceStatuses = nsClientV3Plugin.nsAndroidClient.getDeviceStatusModifiedSince(from)
|
val deviceStatuses = nsAndroidClient.getDeviceStatusModifiedSince(from)
|
||||||
aapsLogger.debug("DEVICESTATUSES: $deviceStatuses")
|
aapsLogger.debug("DEVICESTATUSES: $deviceStatuses")
|
||||||
if (deviceStatuses.isNotEmpty()) {
|
if (deviceStatuses.isNotEmpty()) {
|
||||||
rxBus.send(EventNSClientNewLog("RCV", "${deviceStatuses.size} DSs from ${dateUtil.dateAndTimeAndSecondsString(from)}"))
|
rxBus.send(EventNSClientNewLog("RCV", "${deviceStatuses.size} DSs from ${dateUtil.dateAndTimeAndSecondsString(from)}"))
|
||||||
|
|
|
@ -15,11 +15,12 @@ class LoadLastModificationWorker(
|
||||||
@Inject lateinit var nsClientV3Plugin: NSClientV3Plugin
|
@Inject lateinit var nsClientV3Plugin: NSClientV3Plugin
|
||||||
|
|
||||||
override fun doWorkAndLog(): Result {
|
override fun doWorkAndLog(): Result {
|
||||||
|
val nsAndroidClient = nsClientV3Plugin.nsAndroidClient ?: return Result.failure(workDataOf("Error" to "AndroidClient is null"))
|
||||||
var ret = Result.success()
|
var ret = Result.success()
|
||||||
|
|
||||||
runBlocking {
|
runBlocking {
|
||||||
try {
|
try {
|
||||||
val lm = nsClientV3Plugin.nsAndroidClient.getLastModified()
|
val lm = nsAndroidClient.getLastModified()
|
||||||
nsClientV3Plugin.newestDataOnServer = lm
|
nsClientV3Plugin.newestDataOnServer = lm
|
||||||
aapsLogger.debug("LAST MODIFIED: ${nsClientV3Plugin.newestDataOnServer}")
|
aapsLogger.debug("LAST MODIFIED: ${nsClientV3Plugin.newestDataOnServer}")
|
||||||
} catch (error: Exception) {
|
} catch (error: Exception) {
|
||||||
|
|
|
@ -15,11 +15,12 @@ class LoadStatusWorker(
|
||||||
@Inject lateinit var nsClientV3Plugin: NSClientV3Plugin
|
@Inject lateinit var nsClientV3Plugin: NSClientV3Plugin
|
||||||
|
|
||||||
override fun doWorkAndLog(): Result {
|
override fun doWorkAndLog(): Result {
|
||||||
|
val nsAndroidClient = nsClientV3Plugin.nsAndroidClient ?: return Result.failure(workDataOf("Error" to "AndroidClient is null"))
|
||||||
var ret = Result.success()
|
var ret = Result.success()
|
||||||
|
|
||||||
runBlocking {
|
runBlocking {
|
||||||
try {
|
try {
|
||||||
val status = nsClientV3Plugin.nsAndroidClient.getStatus()
|
val status = nsAndroidClient.getStatus()
|
||||||
aapsLogger.debug("STATUS: $status")
|
aapsLogger.debug("STATUS: $status")
|
||||||
} catch (error: Exception) {
|
} catch (error: Exception) {
|
||||||
aapsLogger.error("Error: ", error)
|
aapsLogger.error("Error: ", error)
|
||||||
|
|
|
@ -33,6 +33,7 @@ class LoadTreatmentsWorker(
|
||||||
@Inject lateinit var storeDataForDb: StoreDataForDb
|
@Inject lateinit var storeDataForDb: StoreDataForDb
|
||||||
|
|
||||||
override fun doWorkAndLog(): Result {
|
override fun doWorkAndLog(): Result {
|
||||||
|
val nsAndroidClient = nsClientV3Plugin.nsAndroidClient ?: return Result.failure(workDataOf("Error" to "AndroidClient is null"))
|
||||||
var ret = Result.success()
|
var ret = Result.success()
|
||||||
|
|
||||||
val isFirstLoad = nsClientV3Plugin.isFirstLoad(NsClient.Collection.TREATMENTS)
|
val isFirstLoad = nsClientV3Plugin.isFirstLoad(NsClient.Collection.TREATMENTS)
|
||||||
|
@ -45,11 +46,11 @@ class LoadTreatmentsWorker(
|
||||||
val treatments: List<NSTreatment>
|
val treatments: List<NSTreatment>
|
||||||
val response: NSAndroidClient.ReadResponse<List<NSTreatment>>?
|
val response: NSAndroidClient.ReadResponse<List<NSTreatment>>?
|
||||||
if (isFirstLoad) {
|
if (isFirstLoad) {
|
||||||
treatments = nsClientV3Plugin.nsAndroidClient.getTreatmentsNewerThan(lastLoaded, 500)
|
treatments = nsAndroidClient.getTreatmentsNewerThan(lastLoaded, 500)
|
||||||
response = NSAndroidClient.ReadResponse(0, treatments)
|
response = NSAndroidClient.ReadResponse(0, treatments)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
response = nsClientV3Plugin.nsAndroidClient.getTreatmentsModifiedSince(lastLoaded, 500)
|
response = nsAndroidClient.getTreatmentsModifiedSince(lastLoaded, 500)
|
||||||
treatments = response.values
|
treatments = response.values
|
||||||
nsClientV3Plugin.lastLoadedSrvModified.collections.treatments = response.lastServerModified
|
nsClientV3Plugin.lastLoadedSrvModified.collections.treatments = response.lastServerModified
|
||||||
nsClientV3Plugin.storeLastFetched()
|
nsClientV3Plugin.storeLastFetched()
|
||||||
|
|
Loading…
Reference in a new issue