diff --git a/build.gradle b/build.gradle index 31416a0440..fd2fc340a4 100644 --- a/build.gradle +++ b/build.gradle @@ -156,6 +156,11 @@ project(":library:diff-match-patch") { } } +// Global configuration across all modules +ext { + isPresenceSyncEnabled = true +} + //project(":matrix-sdk-android") { // sonarqube { // properties { diff --git a/changelog.d/5563.misc b/changelog.d/5563.misc new file mode 100644 index 0000000000..c0867365f6 --- /dev/null +++ b/changelog.d/5563.misc @@ -0,0 +1 @@ +Add a presence sync enabling build config diff --git a/matrix-sdk-android/build.gradle b/matrix-sdk-android/build.gradle index 2b2c38e22a..9ec3962650 100644 --- a/matrix-sdk-android/build.gradle +++ b/matrix-sdk-android/build.gradle @@ -37,6 +37,7 @@ android { buildConfigField "String", "GIT_SDK_REVISION_UNIX_DATE", "\"${gitRevisionUnixDate()}\"" buildConfigField "String", "GIT_SDK_REVISION_DATE", "\"${gitRevisionDate()}\"" + buildConfigField "Boolean", "PRESENCE_SYNC_ENABLED", "${isPresenceSyncEnabled}" defaultConfig { consumerProguardFiles 'proguard-rules.pro' } diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/sync/handler/PresenceSyncHandler.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/sync/handler/PresenceSyncHandler.kt index fe173a35c3..1ba9552500 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/sync/handler/PresenceSyncHandler.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/sync/handler/PresenceSyncHandler.kt @@ -17,6 +17,7 @@ package org.matrix.android.sdk.internal.session.sync.handler import io.realm.Realm +import org.matrix.android.sdk.BuildConfig import org.matrix.android.sdk.api.session.events.model.EventType import org.matrix.android.sdk.api.session.events.model.getPresenceContent import org.matrix.android.sdk.api.session.sync.model.PresenceSyncResponse @@ -30,24 +31,26 @@ import javax.inject.Inject internal class PresenceSyncHandler @Inject constructor() { fun handle(realm: Realm, presenceSyncResponse: PresenceSyncResponse?) { - presenceSyncResponse?.events - ?.filter { event -> event.type == EventType.PRESENCE } - ?.forEach { event -> - val content = event.getPresenceContent() ?: return@forEach - val userId = event.senderId ?: return@forEach - val userPresenceEntity = UserPresenceEntity( - userId = userId, - lastActiveAgo = content.lastActiveAgo, - statusMessage = content.statusMessage, - isCurrentlyActive = content.isCurrentlyActive, - avatarUrl = content.avatarUrl, - displayName = content.displayName - ).also { - it.presence = content.presence - } + if (BuildConfig.PRESENCE_SYNC_ENABLED) { + presenceSyncResponse?.events + ?.filter { event -> event.type == EventType.PRESENCE } + ?.forEach { event -> + val content = event.getPresenceContent() ?: return@forEach + val userId = event.senderId ?: return@forEach + val userPresenceEntity = UserPresenceEntity( + userId = userId, + lastActiveAgo = content.lastActiveAgo, + statusMessage = content.statusMessage, + isCurrentlyActive = content.isCurrentlyActive, + avatarUrl = content.avatarUrl, + displayName = content.displayName + ).also { + it.presence = content.presence + } - storePresenceToDB(realm, userPresenceEntity) - } + storePresenceToDB(realm, userPresenceEntity) + } + } } /** diff --git a/vector/build.gradle b/vector/build.gradle index 2d9c097da8..0b78973457 100644 --- a/vector/build.gradle +++ b/vector/build.gradle @@ -151,6 +151,7 @@ android { buildConfigField "Boolean", "enableLocationSharing", "true" buildConfigField "String", "mapTilerKey", "\"fU3vlMsMn4Jb6dnEIFsx\"" + buildConfigField "Boolean", "PRESENCE_SYNC_ENABLED", "${isPresenceSyncEnabled}" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/vector/src/main/java/im/vector/app/core/ui/views/PresenceStateImageView.kt b/vector/src/main/java/im/vector/app/core/ui/views/PresenceStateImageView.kt index 301f8afdc9..d2c379de40 100644 --- a/vector/src/main/java/im/vector/app/core/ui/views/PresenceStateImageView.kt +++ b/vector/src/main/java/im/vector/app/core/ui/views/PresenceStateImageView.kt @@ -20,6 +20,7 @@ import android.content.Context import android.util.AttributeSet import androidx.appcompat.widget.AppCompatImageView import androidx.core.view.isVisible +import im.vector.app.BuildConfig import im.vector.app.R import org.matrix.android.sdk.api.session.presence.model.PresenceEnum import org.matrix.android.sdk.api.session.presence.model.UserPresence @@ -34,7 +35,7 @@ class PresenceStateImageView @JvmOverloads constructor( ) : AppCompatImageView(context, attrs, defStyleAttr) { fun render(showPresence: Boolean = true, userPresence: UserPresence?) { - isVisible = showPresence && userPresence != null + isVisible = showPresence && userPresence != null && BuildConfig.PRESENCE_SYNC_ENABLED when (userPresence?.presence) { PresenceEnum.ONLINE -> {