diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/homeserver/HomeServerCapabilities.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/homeserver/HomeServerCapabilities.kt index a2ea5c4133..ecd03288fc 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/homeserver/HomeServerCapabilities.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/homeserver/HomeServerCapabilities.kt @@ -94,7 +94,7 @@ data class HomeServerCapabilities( /** * If set to true, the SDK will not use the network constraint when configuring Worker for the WorkManager, provided in Wellknown. */ - val disableNetworkConstraint: Boolean = false, + val disableNetworkConstraint: Boolean? = null, ) { enum class RoomCapabilitySupport { diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/migration/MigrateSessionTo054.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/migration/MigrateSessionTo054.kt index 0b58c8093d..19f65153cb 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/migration/MigrateSessionTo054.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/migration/MigrateSessionTo054.kt @@ -25,6 +25,7 @@ internal class MigrateSessionTo054(realm: DynamicRealm) : RealmMigrator(realm, 5 override fun doMigrate(realm: DynamicRealm) { realm.schema.get("HomeServerCapabilitiesEntity") ?.addField(HomeServerCapabilitiesEntityFields.DISABLE_NETWORK_CONSTRAINT, Boolean::class.java) + ?.setNullable(HomeServerCapabilitiesEntityFields.DISABLE_NETWORK_CONSTRAINT, true) ?.forceRefreshOfHomeServerCapabilities() } } diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/HomeServerCapabilitiesEntity.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/HomeServerCapabilitiesEntity.kt index a00dc29087..3891948418 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/HomeServerCapabilitiesEntity.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/HomeServerCapabilitiesEntity.kt @@ -37,7 +37,7 @@ internal open class HomeServerCapabilitiesEntity( var canRedactEventWithRelations: Boolean = false, var externalAccountManagementUrl: String? = null, var authenticationIssuer: String? = null, - var disableNetworkConstraint: Boolean = false, + var disableNetworkConstraint: Boolean? = null, ) : RealmObject() { companion object diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/workmanager/DefaultWorkManagerConfig.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/workmanager/DefaultWorkManagerConfig.kt index aa3fd718cd..159aefc6fd 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/workmanager/DefaultWorkManagerConfig.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/workmanager/DefaultWorkManagerConfig.kt @@ -17,19 +17,24 @@ package org.matrix.android.sdk.internal.session.workmanager import org.matrix.android.sdk.api.auth.data.Credentials -import org.matrix.android.sdk.api.extensions.orFalse import org.matrix.android.sdk.internal.session.homeserver.HomeServerCapabilitiesDataSource import javax.inject.Inject +@Suppress("RedundantIf") internal class DefaultWorkManagerConfig @Inject constructor( private val credentials: Credentials, private val homeServerCapabilitiesDataSource: HomeServerCapabilitiesDataSource, ) : WorkManagerConfig { override fun withNetworkConstraint(): Boolean { return if (credentials.discoveryInformation?.disableNetworkConstraint == true) { + // Boolean `io.element.disable_network_constraint` explicitly set to `true` in the login response + false + } else if (homeServerCapabilitiesDataSource.getHomeServerCapabilities()?.disableNetworkConstraint == true) { + // Boolean `io.element.disable_network_constraint` explicitly set to `true` in the .well-known file false } else { - homeServerCapabilitiesDataSource.getHomeServerCapabilities()?.disableNetworkConstraint.orFalse().not() + // Default, use the Network constraint + true } } }