From d7f5843b353c169a20faa1ae7fc5fe4d20bdd618 Mon Sep 17 00:00:00 2001 From: alab2296 Date: Thu, 12 Nov 2026 23:41:01 +0500 Subject: [PATCH] Allow dismissing outdated server version warning permanently Adds a preference to store the dismissed server version string. Before showing the warning, the current version is compared against the stored dismissed version. On dismiss, the version is saved so the warning does not reappear for the same server version. Fixes nextcloud#3855 Signed-off-by: alab2296 --- .../nextcloud/client/preferences/AppPreferences.java | 5 +++++ .../client/preferences/AppPreferencesImpl.java | 12 ++++++++++++ .../main/java/com/nextcloud/utils/SnackbarUtil.kt | 4 ++-- .../android/ui/activity/FileDisplayActivity.kt | 8 +++++++- 4 files changed, 26 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/nextcloud/client/preferences/AppPreferences.java b/app/src/main/java/com/nextcloud/client/preferences/AppPreferences.java index 4f4e85599480..8b295e467beb 100644 --- a/app/src/main/java/com/nextcloud/client/preferences/AppPreferences.java +++ b/app/src/main/java/com/nextcloud/client/preferences/AppPreferences.java @@ -400,4 +400,9 @@ default void onDarkThemeModeChanged(DarkMode mode) { boolean startAutoUploadOnStart(); void setLastAutoUploadOnStartTime(long timeInMillisecond); + + String getDismissedOutdatedServerVersion(); + + void setDismissedOutdatedServerVersion(String version); + } diff --git a/app/src/main/java/com/nextcloud/client/preferences/AppPreferencesImpl.java b/app/src/main/java/com/nextcloud/client/preferences/AppPreferencesImpl.java index 509e659bdf7a..ee77184faa8c 100644 --- a/app/src/main/java/com/nextcloud/client/preferences/AppPreferencesImpl.java +++ b/app/src/main/java/com/nextcloud/client/preferences/AppPreferencesImpl.java @@ -94,6 +94,7 @@ public final class AppPreferencesImpl implements AppPreferences { private static final String PREF__SELECTED_ACCOUNT_NAME = "select_oc_account"; private static final String PREF__MIGRATED_USER_ID = "migrated_user_id"; private static final String PREF__PHOTO_SEARCH_TIMESTAMP = "photo_search_timestamp"; + private static final String PREF__DISMISSED_OUTDATED_SERVER_VERSION = "dismissed_outdated_server_version"; private static final String PREF__PIN_BRUTE_FORCE_COUNT = "pin_brute_force_count"; private static final String PREF__UID_PID = "uid_pid"; @@ -877,4 +878,15 @@ public boolean startAutoUploadOnStart() { public void setLastAutoUploadOnStartTime(long timeInMillisecond) { preferences.edit().putLong(AUTO_PREF__LAST_AUTO_UPLOAD_ON_START, timeInMillisecond).apply(); } + + @Override + public String getDismissedOutdatedServerVersion() { + return preferences.getString(PREF__DISMISSED_OUTDATED_SERVER_VERSION, ""); + } + + @Override + public void setDismissedOutdatedServerVersion(String version) { + preferences.edit().putString(PREF__DISMISSED_OUTDATED_SERVER_VERSION, version).apply(); + } + } diff --git a/app/src/main/java/com/nextcloud/utils/SnackbarUtil.kt b/app/src/main/java/com/nextcloud/utils/SnackbarUtil.kt index a527af09ef42..e1298f40480d 100644 --- a/app/src/main/java/com/nextcloud/utils/SnackbarUtil.kt +++ b/app/src/main/java/com/nextcloud/utils/SnackbarUtil.kt @@ -55,9 +55,9 @@ object SnackbarUtil { ?.also { snackbar -> onMainThread(snackbar::show) } @JvmStatic - fun showServerOutdated(activity: Activity?, duration: Int) { + fun showServerOutdated(activity: Activity?, duration: Int, onDismiss: (() -> Unit)? = null) { create(activity.hostView(), R.string.outdated_server, duration) - ?.setAction(R.string.dismiss) { } + ?.setAction(R.string.dismiss) { onDismiss?.invoke() } ?.let { snackbar -> onMainThread(snackbar::show) } } diff --git a/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt b/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt index d3ae4fa89eee..542f27eb3ba1 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt +++ b/app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt @@ -490,7 +490,13 @@ class FileDisplayActivity : capability.hasValidSubscription.isTrue ) if (isOutdated) { - SnackbarUtil.showServerOutdated(this, Snackbar.LENGTH_LONG) + val serverVersion = currentUser.server.version.toString() + val dismissedVersion = preferences.getDismissedOutdatedServerVersion() + if (serverVersion != dismissedVersion) { + SnackbarUtil.showServerOutdated(this, Snackbar.LENGTH_LONG) { + preferences.setDismissedOutdatedServerVersion(serverVersion) + } + } } }