NSCv3: show correct version in About dialog

This commit is contained in:
Milos Kozak 2023-01-20 18:05:02 +01:00
parent 9769a01e6f
commit d67e13e105
5 changed files with 67 additions and 22 deletions

View file

@ -51,7 +51,6 @@ import info.nightscout.interfaces.aps.Loop
import info.nightscout.interfaces.constraints.Constraints import info.nightscout.interfaces.constraints.Constraints
import info.nightscout.interfaces.logging.UserEntryLogger import info.nightscout.interfaces.logging.UserEntryLogger
import info.nightscout.interfaces.maintenance.PrefFileListProvider import info.nightscout.interfaces.maintenance.PrefFileListProvider
import info.nightscout.interfaces.nsclient.NSSettingsStatus
import info.nightscout.interfaces.plugin.ActivePlugin import info.nightscout.interfaces.plugin.ActivePlugin
import info.nightscout.interfaces.plugin.PluginBase import info.nightscout.interfaces.plugin.PluginBase
import info.nightscout.interfaces.profile.ProfileFunction import info.nightscout.interfaces.profile.ProfileFunction
@ -62,7 +61,6 @@ import info.nightscout.interfaces.versionChecker.VersionCheckerUtils
import info.nightscout.plugins.constraints.signatureVerifier.SignatureVerifierPlugin import info.nightscout.plugins.constraints.signatureVerifier.SignatureVerifierPlugin
import info.nightscout.rx.AapsSchedulers import info.nightscout.rx.AapsSchedulers
import info.nightscout.rx.events.EventAppExit import info.nightscout.rx.events.EventAppExit
import info.nightscout.rx.events.EventInitializationChanged
import info.nightscout.rx.events.EventPreferenceChange import info.nightscout.rx.events.EventPreferenceChange
import info.nightscout.rx.events.EventRebuildTabs import info.nightscout.rx.events.EventRebuildTabs
import info.nightscout.rx.logging.LTag import info.nightscout.rx.logging.LTag
@ -88,7 +86,6 @@ class MainActivity : DaggerAppCompatActivityWithResult() {
@Inject lateinit var versionCheckerUtils: VersionCheckerUtils @Inject lateinit var versionCheckerUtils: VersionCheckerUtils
@Inject lateinit var smsCommunicator: SmsCommunicator @Inject lateinit var smsCommunicator: SmsCommunicator
@Inject lateinit var loop: Loop @Inject lateinit var loop: Loop
@Inject lateinit var nsSettingsStatus: NSSettingsStatus
@Inject lateinit var config: Config @Inject lateinit var config: Config
@Inject lateinit var activePlugin: ActivePlugin @Inject lateinit var activePlugin: ActivePlugin
@Inject lateinit var fabricPrivacy: FabricPrivacy @Inject lateinit var fabricPrivacy: FabricPrivacy
@ -347,7 +344,7 @@ class MainActivity : DaggerAppCompatActivityWithResult() {
R.id.nav_about -> { R.id.nav_about -> {
var message = "Build: ${BuildConfig.BUILDVERSION}\n" var message = "Build: ${BuildConfig.BUILDVERSION}\n"
message += "Flavor: ${BuildConfig.FLAVOR}${BuildConfig.BUILD_TYPE}\n" message += "Flavor: ${BuildConfig.FLAVOR}${BuildConfig.BUILD_TYPE}\n"
message += "${rh.gs(info.nightscout.configuration.R.string.configbuilder_nightscoutversion_label)} ${nsSettingsStatus.getVersion()}" message += "${rh.gs(info.nightscout.configuration.R.string.configbuilder_nightscoutversion_label)} ${activePlugin.activeNsClient?.detectedNsVersion() ?: rh.gs(info.nightscout.plugins.R.string.not_available_full)}"
if (config.isEngineeringMode()) message += "\n${rh.gs(info.nightscout.configuration.R.string.engineering_mode_enabled)}" if (config.isEngineeringMode()) message += "\n${rh.gs(info.nightscout.configuration.R.string.engineering_mode_enabled)}"
if (config.isUnfinishedMode()) message += "\nUnfinished mode enabled" if (config.isUnfinishedMode()) message += "\nUnfinished mode enabled"
if (!fabricPrivacy.fabricEnabled()) message += "\n${rh.gs(R.string.fabric_upload_disabled)}" if (!fabricPrivacy.fabricEnabled()) message += "\n${rh.gs(R.string.fabric_upload_disabled)}"

View file

@ -3,20 +3,44 @@ package info.nightscout.interfaces.sync
import android.text.Spanned import android.text.Spanned
import info.nightscout.interfaces.nsclient.NSAlarm import info.nightscout.interfaces.nsclient.NSAlarm
/**
* Plugin providing communication with Nightscout server
*/
interface NsClient : Sync { interface NsClient : Sync {
enum class Version {
NONE, V1, V3
}
val version: Version /**
* NS URL
*/
val address: String val address: String
/**
* Set plugin in paused state
*/
fun pause(newState: Boolean) fun pause(newState: Boolean)
/**
* Initiate new round of upload/download
*/
fun resend(reason: String) fun resend(reason: String)
/**
* @return List last of messages for fragment in HTML format
*/
fun textLog(): Spanned fun textLog(): Spanned
/**
* Clear list of stored messages displayed in fragment
*/
fun clearLog() fun clearLog()
/**
* Version of NS server
* @return Returns detected version of NS server
*/
fun detectedNsVersion(): String?
enum class Collection { ENTRIES, TREATMENTS, FOODS, PROFILE } enum class Collection { ENTRIES, TREATMENTS, FOODS, PROFILE }
/** /**
* NSC v3 does first load of all data * NSC v3 does first load of all data
* next loads are using srvModified property for sync * next loads are using srvModified property for sync
@ -34,6 +58,7 @@ interface NsClient : Sync {
* *
*/ */
fun updateLatestBgReceivedIfNewer(latestReceived: Long) fun updateLatestBgReceivedIfNewer(latestReceived: Long)
/** /**
* Update newest loaded timestamp for treatments collection (first load or NSCv1) * Update newest loaded timestamp for treatments collection (first load or NSCv1)
* Update newest srvModified (sync loads) * Update newest srvModified (sync loads)
@ -42,10 +67,37 @@ interface NsClient : Sync {
* *
*/ */
fun updateLatestTreatmentReceivedIfNewer(latestReceived: Long) fun updateLatestTreatmentReceivedIfNewer(latestReceived: Long)
/**
* Send alarm confirmation to NS
*
* @param originalAlarm alarm to be cleared
* @param silenceTimeInMilliseconds silence alarm for specified duration
*/
fun handleClearAlarm(originalAlarm: NSAlarm, silenceTimeInMilliseconds: Long) fun handleClearAlarm(originalAlarm: NSAlarm, silenceTimeInMilliseconds: Long)
/**
* Clear synchronization status
*
* Next synchronization will start from scratch
*/
fun resetToFullSync() fun resetToFullSync()
/**
* Upload new record to NS
*
* @param collection target ns collection
* @param dataPair data to upload (data.first) and id of changed record (data.second)
* @param progress progress of sync in format "number/number". Only for display in fragment
*/
fun nsAdd(collection: String, dataPair: DataSyncSelector.DataPair, progress: String) fun nsAdd(collection: String, dataPair: DataSyncSelector.DataPair, progress: String)
/**
* Upload updated record to NS
*
* @param collection target ns collection
* @param dataPair data to upload (data.first) and id of changed record (data.second)
* @param progress progress of sync in format "number/number". Only for display in fragment
*/
fun nsUpdate(collection: String, dataPair: DataSyncSelector.DataPair, progress: String) fun nsUpdate(collection: String, dataPair: DataSyncSelector.DataPair, progress: String)
} }

View file

@ -1,8 +1,6 @@
package info.nightscout.plugins.sync.nsShared package info.nightscout.plugins.sync.nsShared
import android.os.Bundle import android.os.Bundle
import android.os.Handler
import android.os.HandlerThread
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.Menu import android.view.Menu
import android.view.MenuInflater import android.view.MenuInflater
@ -22,7 +20,6 @@ import info.nightscout.interfaces.plugin.ActivePlugin
import info.nightscout.interfaces.plugin.PluginBase import info.nightscout.interfaces.plugin.PluginBase
import info.nightscout.interfaces.plugin.PluginFragment import info.nightscout.interfaces.plugin.PluginFragment
import info.nightscout.interfaces.sync.DataSyncSelector import info.nightscout.interfaces.sync.DataSyncSelector
import info.nightscout.interfaces.sync.NsClient
import info.nightscout.plugins.sync.R import info.nightscout.plugins.sync.R
import info.nightscout.plugins.sync.databinding.NsClientFragmentBinding import info.nightscout.plugins.sync.databinding.NsClientFragmentBinding
import info.nightscout.plugins.sync.nsShared.events.EventNSClientUpdateGUI import info.nightscout.plugins.sync.nsShared.events.EventNSClientUpdateGUI
@ -60,11 +57,9 @@ class NSClientFragment : DaggerFragment(), MenuProvider, PluginFragment {
override var plugin: PluginBase? = null override var plugin: PluginBase? = null
private val nsClientPlugin private val nsClientPlugin
get() = activePlugin.activeNsClient get() = activePlugin.activeNsClient
private val version: NsClient.Version get() = nsClientPlugin?.version ?: NsClient.Version.NONE
private val disposable = CompositeDisposable() private val disposable = CompositeDisposable()
private var handler = Handler(HandlerThread(this::class.simpleName + "Handler").also { it.start() }.looper)
private var _binding: NsClientFragmentBinding? = null private var _binding: NsClientFragmentBinding? = null
// This property is only valid between onCreateView and // This property is only valid between onCreateView and

View file

@ -18,6 +18,7 @@ import info.nightscout.core.validators.ValidatingEditTextPreference
import info.nightscout.interfaces.Config import info.nightscout.interfaces.Config
import info.nightscout.interfaces.Constants import info.nightscout.interfaces.Constants
import info.nightscout.interfaces.nsclient.NSAlarm import info.nightscout.interfaces.nsclient.NSAlarm
import info.nightscout.interfaces.nsclient.NSSettingsStatus
import info.nightscout.interfaces.plugin.ActivePlugin import info.nightscout.interfaces.plugin.ActivePlugin
import info.nightscout.interfaces.plugin.PluginBase import info.nightscout.interfaces.plugin.PluginBase
import info.nightscout.interfaces.plugin.PluginDescription import info.nightscout.interfaces.plugin.PluginDescription
@ -71,7 +72,8 @@ class NSClientPlugin @Inject constructor(
private val uiInteraction: UiInteraction, private val uiInteraction: UiInteraction,
private val activePlugin: ActivePlugin, private val activePlugin: ActivePlugin,
private val dateUtil: DateUtil, private val dateUtil: DateUtil,
private val profileFunction: ProfileFunction private val profileFunction: ProfileFunction,
private val nsSettingsStatus: NSSettingsStatus
) : NsClient, Sync, PluginBase( ) : NsClient, Sync, PluginBase(
PluginDescription() PluginDescription()
.mainType(PluginType.SYNC) .mainType(PluginType.SYNC)
@ -180,6 +182,8 @@ class NSClientPlugin @Inject constructor(
} }
} }
override fun detectedNsVersion(): String? = nsSettingsStatus.getVersion()
private fun addToLog(ev: EventNSClientNewLog) { private fun addToLog(ev: EventNSClientNewLog) {
synchronized(listLog) { synchronized(listLog) {
listLog.add(ev) listLog.add(ev)
@ -213,9 +217,6 @@ class NSClientPlugin @Inject constructor(
rxBus.send(EventPreferenceChange(rh.gs(R.string.key_ns_client_paused))) rxBus.send(EventPreferenceChange(rh.gs(R.string.key_ns_client_paused)))
} }
override val version: NsClient.Version
get() = NsClient.Version.V1
override val address: String get() = nsClientService?.nsURL ?: "" override val address: String get() = nsClientService?.nsURL ?: ""
override fun handleClearAlarm(originalAlarm: NSAlarm, silenceTimeInMilliseconds: Long) { override fun handleClearAlarm(originalAlarm: NSAlarm, silenceTimeInMilliseconds: Long) {

View file

@ -294,7 +294,7 @@ class NSClientV3Plugin @Inject constructor(
rxBus.send(EventPreferenceChange(rh.gs(R.string.key_ns_client_paused))) rxBus.send(EventPreferenceChange(rh.gs(R.string.key_ns_client_paused)))
} }
override val version: NsClient.Version get() = NsClient.Version.V3 override fun detectedNsVersion(): String? = nsAndroidClient?.lastStatus?.version
override val address: String get() = sp.getString(info.nightscout.core.utils.R.string.key_nsclientinternal_url, "") override val address: String get() = sp.getString(info.nightscout.core.utils.R.string.key_nsclientinternal_url, "")