VersionChecker: fix message, add logging
This commit is contained in:
parent
921989be2b
commit
def6c51fa2
4 changed files with 28 additions and 22 deletions
|
@ -21,7 +21,7 @@ abstract class PluginsConstraintsModule {
|
|||
@Module
|
||||
interface Bindings {
|
||||
|
||||
@Binds fun bindProcessedDeviceStatusData(versionCheckerUtils: VersionCheckerUtilsImpl): VersionCheckerUtils
|
||||
@Binds fun bindVersionCheckerUtils(versionCheckerUtils: VersionCheckerUtilsImpl): VersionCheckerUtils
|
||||
@Binds fun bindBgQualityCheck(bgQualityCheck: BgQualityCheckPlugin): BgQualityCheck
|
||||
@Binds fun bindsConstraints(constraintsImpl: info.nightscout.plugins.constraints.ConstraintsImpl): Constraints
|
||||
}
|
||||
|
|
|
@ -44,7 +44,7 @@ class VersionCheckerPlugin @Inject constructor(
|
|||
|
||||
enum class GracePeriod(val warning: Long, val old: Long, val veryOld: Long) {
|
||||
RELEASE(30, 60, 90),
|
||||
RC(1, 7, 14)
|
||||
RC(2, 7, 14)
|
||||
}
|
||||
|
||||
private val gracePeriod: GracePeriod
|
||||
|
@ -63,7 +63,7 @@ class VersionCheckerPlugin @Inject constructor(
|
|||
override fun isClosedLoopAllowed(value: Constraint<Boolean>): Constraint<Boolean> {
|
||||
checkWarning()
|
||||
versionCheckerUtils.triggerCheckVersion()
|
||||
if (isOldVersion(gracePeriod.veryOld.daysToMillis()))
|
||||
if (lastCheckOlderThan(gracePeriod.veryOld.daysToMillis()))
|
||||
value.set(aapsLogger, false, rh.gs(R.string.very_old_version), this)
|
||||
val endDate = sp.getLong(rh.gs(info.nightscout.core.utils.R.string.key_app_expiration) + "_" + config.VERSION_NAME, 0)
|
||||
if (endDate != 0L && dateUtil.now() > endDate)
|
||||
|
@ -72,7 +72,7 @@ class VersionCheckerPlugin @Inject constructor(
|
|||
}
|
||||
|
||||
override fun applyMaxIOBConstraints(maxIob: Constraint<Double>): Constraint<Double> =
|
||||
if (isOldVersion(gracePeriod.old.daysToMillis()))
|
||||
if (lastCheckOlderThan(gracePeriod.old.daysToMillis()))
|
||||
maxIob.set(aapsLogger, 0.0, rh.gs(R.string.old_version), this)
|
||||
else
|
||||
maxIob
|
||||
|
@ -80,19 +80,19 @@ class VersionCheckerPlugin @Inject constructor(
|
|||
private fun checkWarning() {
|
||||
val now = dateUtil.now()
|
||||
|
||||
if (!sp.contains(R.string.key_last_versionchecker_plugin_warning)) {
|
||||
sp.putLong(R.string.key_last_versionchecker_plugin_warning, now)
|
||||
if (!sp.contains(R.string.key_last_versionchecker_plugin_warning_timestamp)) {
|
||||
sp.putLong(R.string.key_last_versionchecker_plugin_warning_timestamp, now)
|
||||
return
|
||||
}
|
||||
|
||||
if (isOldVersion(gracePeriod.warning.daysToMillis()) && shouldWarnAgain()) {
|
||||
if (lastCheckOlderThan(gracePeriod.warning.daysToMillis()) && shouldWarnAgain()) {
|
||||
// store last notification time
|
||||
sp.putLong(R.string.key_last_versionchecker_plugin_warning, now)
|
||||
sp.putLong(R.string.key_last_versionchecker_plugin_warning_timestamp, now)
|
||||
|
||||
//notify
|
||||
val message = rh.gs(
|
||||
R.string.new_version_warning,
|
||||
((now - sp.getLong(R.string.key_last_time_this_version_detected_as_ok, now)) / 1L.daysToMillis().toDouble()).roundToInt(),
|
||||
((now - sp.getLong(R.string.key_last_successful_version_check_timestamp, now)) / 1L.daysToMillis().toDouble()).roundToInt(),
|
||||
gracePeriod.old,
|
||||
gracePeriod.veryOld
|
||||
)
|
||||
|
@ -102,7 +102,7 @@ class VersionCheckerPlugin @Inject constructor(
|
|||
val endDate = sp.getLong(rh.gs(info.nightscout.core.utils.R.string.key_app_expiration) + "_" + config.VERSION_NAME, 0)
|
||||
if (endDate != 0L && dateUtil.now() > endDate && shouldWarnAgain()) {
|
||||
// store last notification time
|
||||
sp.putLong(R.string.key_last_versionchecker_plugin_warning, now)
|
||||
sp.putLong(R.string.key_last_versionchecker_plugin_warning_timestamp, now)
|
||||
|
||||
//notify
|
||||
uiInteraction.addNotification(Notification.VERSION_EXPIRE, rh.gs(R.string.application_expired), Notification.URGENT)
|
||||
|
@ -110,10 +110,10 @@ class VersionCheckerPlugin @Inject constructor(
|
|||
}
|
||||
|
||||
private fun shouldWarnAgain() =
|
||||
dateUtil.now() > sp.getLong(R.string.key_last_versionchecker_plugin_warning, 0) + WARN_EVERY
|
||||
dateUtil.now() > sp.getLong(R.string.key_last_versionchecker_plugin_warning_timestamp, 0) + WARN_EVERY
|
||||
|
||||
private fun isOldVersion(gracePeriod: Long): Boolean =
|
||||
dateUtil.now() > sp.getLong(R.string.key_last_time_this_version_detected_as_ok, 0) + gracePeriod
|
||||
private fun lastCheckOlderThan(gracePeriod: Long): Boolean =
|
||||
dateUtil.now() > sp.getLong(R.string.key_last_successful_version_check_timestamp, 0) + gracePeriod
|
||||
|
||||
private fun Long.daysToMillis() = TimeUnit.DAYS.toMillis(this)
|
||||
}
|
||||
|
|
|
@ -36,13 +36,13 @@ class VersionCheckerUtilsImpl @Inject constructor(
|
|||
|
||||
override fun triggerCheckVersion() {
|
||||
|
||||
if (!sp.contains(R.string.key_last_time_this_version_detected_as_ok)) {
|
||||
if (!sp.contains(R.string.key_last_successful_version_check_timestamp)) {
|
||||
// On a new installation, set it as 30 days old in order to warn that there is a new version.
|
||||
sp.putLong(R.string.key_last_time_this_version_detected_as_ok, dateUtil.now() - TimeUnit.DAYS.toMillis(30))
|
||||
setLastCheckTimestamp(dateUtil.now() - TimeUnit.DAYS.toMillis(30))
|
||||
}
|
||||
|
||||
// If we are good, only check once every day.
|
||||
if (dateUtil.now() > sp.getLong(R.string.key_last_time_this_version_detected_as_ok, 0) + CHECK_EVERY) {
|
||||
if (dateUtil.now() > sp.getLong(R.string.key_last_successful_version_check_timestamp, 0) + CHECK_EVERY) {
|
||||
checkVersion()
|
||||
}
|
||||
}
|
||||
|
@ -78,6 +78,7 @@ class VersionCheckerUtilsImpl @Inject constructor(
|
|||
val newVersionElements = newVersion.toNumberList()
|
||||
val currentVersionElements = currentVersion.toNumberList()
|
||||
|
||||
aapsLogger.debug(LTag.CORE, "Compare versions: $currentVersion $currentVersionElements, $newVersion $newVersionElements")
|
||||
if (newVersionElements.isNullOrEmpty()) {
|
||||
onVersionNotDetectable()
|
||||
return
|
||||
|
@ -106,15 +107,15 @@ class VersionCheckerUtilsImpl @Inject constructor(
|
|||
|
||||
private fun onOlderVersionDetected() {
|
||||
aapsLogger.debug(LTag.CORE, "Version newer than master. Are you developer?")
|
||||
sp.putLong(R.string.key_last_time_this_version_detected_as_ok, dateUtil.now())
|
||||
setLastCheckTimestamp(dateUtil.now())
|
||||
}
|
||||
|
||||
private fun onSameVersionDetected() {
|
||||
sp.putLong(R.string.key_last_time_this_version_detected_as_ok, dateUtil.now())
|
||||
setLastCheckTimestamp(dateUtil.now())
|
||||
}
|
||||
|
||||
private fun onVersionNotDetectable() {
|
||||
aapsLogger.debug(LTag.CORE, "fetch failed")
|
||||
aapsLogger.debug(LTag.CORE, "Fetch failed")
|
||||
}
|
||||
|
||||
private fun onNewVersionDetected(currentVersion: String, newVersion: String?) {
|
||||
|
@ -135,6 +136,11 @@ class VersionCheckerUtilsImpl @Inject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
private fun setLastCheckTimestamp(timestamp: Long) {
|
||||
aapsLogger.debug(LTag.CORE, "Setting key_last_successful_version_check_timestamp ${dateUtil.dateAndTimeAndSecondsString(timestamp)}")
|
||||
sp.putLong(R.string.key_last_successful_version_check_timestamp, timestamp)
|
||||
}
|
||||
|
||||
private fun String?.toNumberList() =
|
||||
this?.numericVersionPart().takeIf { !it.isNullOrBlank() }?.split(".")?.map { it.toInt() }
|
||||
|
||||
|
|
|
@ -20,11 +20,11 @@
|
|||
<string name="old_version">old version</string>
|
||||
<string name="very_old_version">very old version</string>
|
||||
<string name="application_expired">Application expired</string>
|
||||
<string name="new_version_warning">New version for at least %1$d days available! Fallback to LGS after %2$d days, loop will be disabled after %3$d days</string>
|
||||
<string name="key_last_time_this_version_detected_as_ok" translatable="false">last_time_this_version_detected</string>
|
||||
<string name="new_version_warning">New version has not been checked for at least %1$d days! Fallback to LGS after %2$d days, loop will be disabled after %3$d days. Restore internet connectivity!</string>
|
||||
<string name="key_last_successful_version_check_timestamp" translatable="false">last_successful_version_check_timestamp</string>
|
||||
<string name="key_last_versionchecker_warning" translatable="false">last_versionchecker_warning</string>
|
||||
<string name="key_last_expired_versionchecker_warning" translatable="false">last_expired_version_checker_warning</string>
|
||||
<string name="key_last_versionchecker_plugin_warning" translatable="false">last_versionchecker_plugin_waring</string>
|
||||
<string name="key_last_versionchecker_plugin_warning_timestamp" translatable="false">last_versionchecker_plugin_warning_timestamp</string>
|
||||
<string name="key_last_revoked_certs_check" translatable="false">last_revoked_certs_check</string>
|
||||
<string name="running_invalid_version">We have detected that you are running an invalid version. Loop disabled!</string>
|
||||
<string name="versionavailable">Version %1$s available</string>
|
||||
|
|
Loading…
Reference in a new issue