From 3dadebe505d52a86ab1b1c71d3969ac35a77cf2e Mon Sep 17 00:00:00 2001
From: Nikita Fedrunov <66663241+fedrunov@users.noreply.github.com>
Date: Tue, 13 Dec 2022 14:02:45 +0100
Subject: [PATCH] threads are enabled by default end forced to enabled for
existing users (#7775)
---
changelog.d/5503.misc | 1 +
.../android/sdk/api/MatrixConfiguration.kt | 2 +-
.../src/main/res/values/config-settings.xml | 2 +-
.../features/home/HomeActivityViewModel.kt | 6 ++++++
.../features/settings/VectorPreferences.kt | 19 +++++++++++++++++++
.../labs/VectorSettingsLabsFragment.kt | 1 +
6 files changed, 29 insertions(+), 2 deletions(-)
create mode 100644 changelog.d/5503.misc
diff --git a/changelog.d/5503.misc b/changelog.d/5503.misc
new file mode 100644
index 0000000000..66deb33684
--- /dev/null
+++ b/changelog.d/5503.misc
@@ -0,0 +1 @@
+[Threads] - Threads Labs Flag is enabled by default and forced to be enabled for existing users, but sill can be disabled manually
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/MatrixConfiguration.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/MatrixConfiguration.kt
index 00d74ab446..8c2296accb 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/MatrixConfiguration.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/MatrixConfiguration.kt
@@ -66,7 +66,7 @@ data class MatrixConfiguration(
/**
* Thread messages default enable/disabled value.
*/
- val threadMessagesEnabledDefault: Boolean = false,
+ val threadMessagesEnabledDefault: Boolean = true,
/**
* List of network interceptors, they will be added when building an OkHttp client.
*/
diff --git a/vector-config/src/main/res/values/config-settings.xml b/vector-config/src/main/res/values/config-settings.xml
index ad9c16c214..a8695eed44 100755
--- a/vector-config/src/main/res/values/config-settings.xml
+++ b/vector-config/src/main/res/values/config-settings.xml
@@ -39,7 +39,7 @@
true
true
- false
+ true
true
false
true
diff --git a/vector/src/main/java/im/vector/app/features/home/HomeActivityViewModel.kt b/vector/src/main/java/im/vector/app/features/home/HomeActivityViewModel.kt
index a54ce2cff3..8f16121a30 100644
--- a/vector/src/main/java/im/vector/app/features/home/HomeActivityViewModel.kt
+++ b/vector/src/main/java/im/vector/app/features/home/HomeActivityViewModel.kt
@@ -254,6 +254,12 @@ class HomeActivityViewModel @AssistedInject constructor(
// }
when {
+ !vectorPreferences.areThreadMessagesEnabled() && !vectorPreferences.wasThreadFlagChangedManually() -> {
+ vectorPreferences.setThreadMessagesEnabled()
+ lightweightSettingsStorage.setThreadMessagesEnabled(vectorPreferences.areThreadMessagesEnabled())
+ // Clear Cache
+ _viewEvents.post(HomeActivityViewEvents.MigrateThreads(checkSession = false))
+ }
// Notify users
vectorPreferences.shouldNotifyUserAboutThreads() && vectorPreferences.areThreadMessagesEnabled() -> {
Timber.i("----> Notify users about threads")
diff --git a/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt b/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt
index d46b819cce..2d5fb351f9 100755
--- a/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt
+++ b/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt
@@ -239,6 +239,7 @@ class VectorPreferences @Inject constructor(
// This key will be used to identify clients with the new thread support enabled m.thread
const val SETTINGS_LABS_ENABLE_THREAD_MESSAGES = "SETTINGS_LABS_ENABLE_THREAD_MESSAGES_FINAL"
+ const val SETTINGS_LABS_THREAD_MESSAGES_CHANGED_BY_USER = "SETTINGS_LABS_THREAD_MESSAGES_CHANGED_BY_USER"
const val SETTINGS_THREAD_MESSAGES_SYNCED = "SETTINGS_THREAD_MESSAGES_SYNCED"
// This key will be used to enable user for displaying live user info or not.
@@ -1129,6 +1130,24 @@ class VectorPreferences @Inject constructor(
.apply()
}
+ /**
+ * Indicates whether or not user changed threads flag manually. We need this to not force flag to be enabled on app start.
+ * Should be removed when Threads flag will be removed
+ */
+ fun wasThreadFlagChangedManually(): Boolean {
+ return defaultPrefs.getBoolean(SETTINGS_LABS_THREAD_MESSAGES_CHANGED_BY_USER, false)
+ }
+
+ /**
+ * Sets the flag to indicate that user changed threads flag (e.g. disabled them).
+ */
+ fun setThreadFlagChangedManually() {
+ defaultPrefs
+ .edit()
+ .putBoolean(SETTINGS_LABS_THREAD_MESSAGES_CHANGED_BY_USER, true)
+ .apply()
+ }
+
/**
* Indicates whether or not the user will be notified about the new thread support.
* We should notify the user only if he had old thread support enabled.
diff --git a/vector/src/main/java/im/vector/app/features/settings/labs/VectorSettingsLabsFragment.kt b/vector/src/main/java/im/vector/app/features/settings/labs/VectorSettingsLabsFragment.kt
index c10411301f..189d55d990 100644
--- a/vector/src/main/java/im/vector/app/features/settings/labs/VectorSettingsLabsFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/settings/labs/VectorSettingsLabsFragment.kt
@@ -141,6 +141,7 @@ class VectorSettingsLabsFragment :
*/
private fun onThreadsPreferenceClicked() {
// We should migrate threads only if threads are disabled
+ vectorPreferences.setThreadFlagChangedManually()
vectorPreferences.setShouldMigrateThreads(!vectorPreferences.areThreadMessagesEnabled())
lightweightSettingsStorage.setThreadMessagesEnabled(vectorPreferences.areThreadMessagesEnabled())
displayLoadingView()