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()