From 454a919eda03638b041f9074da6979e56a7d78b9 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 9 Apr 2019 10:02:43 +0200 Subject: [PATCH] Check at most once every 24h hours for new update --- .../java/org/linphone/LinphoneActivity.java | 26 ++++++++++++------- .../settings/LinphonePreferences.java | 8 ++++++ .../res/values/non_localizable_custom.xml | 1 + 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/org/linphone/LinphoneActivity.java b/app/src/main/java/org/linphone/LinphoneActivity.java index 5418acbc7..c58b3df65 100644 --- a/app/src/main/java/org/linphone/LinphoneActivity.java +++ b/app/src/main/java/org/linphone/LinphoneActivity.java @@ -368,11 +368,7 @@ public class LinphoneActivity extends LinphoneGenericActivity } } else { if (getResources().getBoolean(R.bool.check_for_update_when_app_starts)) { - String url = LinphonePreferences.instance().getCheckReleaseUrl(); - if (url != null && !url.isEmpty()) { - LinphoneManager.getLcIfManagerNotDestroyedOrNull() - .checkForUpdate(BuildConfig.VERSION_NAME); - } + checkForUpdate(); } } @@ -620,11 +616,7 @@ public class LinphoneActivity extends LinphoneGenericActivity // If permission was asked we wait here for the results so dialogs won't conflict if (getResources().getBoolean(R.bool.check_for_update_when_app_starts)) { - String url = LinphonePreferences.instance().getCheckReleaseUrl(); - if (url != null && !url.isEmpty()) { - LinphoneManager.getLcIfManagerNotDestroyedOrNull() - .checkForUpdate(BuildConfig.VERSION_NAME); - } + checkForUpdate(); } if (permissions.length <= 0) return; @@ -669,6 +661,20 @@ public class LinphoneActivity extends LinphoneGenericActivity } } + private void checkForUpdate() { + String url = LinphonePreferences.instance().getCheckReleaseUrl(); + if (url != null && !url.isEmpty()) { + int lastTimestamp = LinphonePreferences.instance().getLastCheckReleaseTimestamp(); + int currentTimeStamp = (int) System.currentTimeMillis(); + int interval = getResources().getInteger(R.integer.time_between_update_check); // 24h + if (lastTimestamp == 0 || currentTimeStamp - lastTimestamp >= interval) { + LinphoneManager.getLcIfManagerNotDestroyedOrNull() + .checkForUpdate(BuildConfig.VERSION_NAME); + LinphonePreferences.instance().setLastCheckReleaseTimestamp(currentTimeStamp); + } + } + } + private void initButtons() { mTabBar = findViewById(R.id.footer); mTopBar = findViewById(R.id.top_bar); diff --git a/app/src/main/java/org/linphone/settings/LinphonePreferences.java b/app/src/main/java/org/linphone/settings/LinphonePreferences.java index 37d8678cb..ff0075e2e 100644 --- a/app/src/main/java/org/linphone/settings/LinphonePreferences.java +++ b/app/src/main/java/org/linphone/settings/LinphonePreferences.java @@ -962,6 +962,14 @@ public class LinphonePreferences { return getConfig().getString("misc", "version_check_url_root", null); } + public int getLastCheckReleaseTimestamp() { + return getConfig().getInt("app", "version_check_url_last_timestamp", 0); + } + + public void setLastCheckReleaseTimestamp(int timestamp) { + getConfig().setInt("app", "version_check_url_last_timestamp", timestamp); + } + public boolean isOverlayEnabled() { return getConfig().getBool("app", "display_overlay", false); } diff --git a/app/src/main/res/values/non_localizable_custom.xml b/app/src/main/res/values/non_localizable_custom.xml index d0503dd40..f430df0ce 100644 --- a/app/src/main/res/values/non_localizable_custom.xml +++ b/app/src/main/res/values/non_localizable_custom.xml @@ -130,6 +130,7 @@ true true true + 86400000 1000 7000