Skip to content

Commit 842aeb7

Browse files
committed
Parse "io.element.disable_network_constraint" from .well-known file.
Migrate DB to 54.
1 parent 60940c0 commit 842aeb7

File tree

7 files changed

+48
-1
lines changed

7 files changed

+48
-1
lines changed

matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/data/WellKnown.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,10 @@ data class WellKnown(
6161
*/
6262
@Json(name = "org.matrix.msc2965.authentication")
6363
val unstableDelegatedAuthConfig: DelegatedAuthConfig? = null,
64+
65+
/**
66+
* If set to true, the SDK will not use the network constraint when configuring Worker for the WorkManager.
67+
*/
68+
@Json(name = "io.element.disable_network_constraint")
69+
val disableNetworkConstraint: Boolean? = null,
6470
)

matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/homeserver/HomeServerCapabilities.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,11 @@ data class HomeServerCapabilities(
9090
* Authentication issuer for use with MSC3824 delegated OIDC, provided in Wellknown.
9191
*/
9292
val authenticationIssuer: String? = null,
93+
94+
/**
95+
* If set to true, the SDK will not use the network constraint when configuring Worker for the WorkManager, provided in Wellknown.
96+
*/
97+
val disableNetworkConstraint: Boolean = false,
9398
) {
9499

95100
enum class RoomCapabilitySupport {

matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/RealmSessionStoreMigration.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ import org.matrix.android.sdk.internal.database.migration.MigrateSessionTo050
7070
import org.matrix.android.sdk.internal.database.migration.MigrateSessionTo051
7171
import org.matrix.android.sdk.internal.database.migration.MigrateSessionTo052
7272
import org.matrix.android.sdk.internal.database.migration.MigrateSessionTo053
73+
import org.matrix.android.sdk.internal.database.migration.MigrateSessionTo054
7374
import org.matrix.android.sdk.internal.util.Normalizer
7475
import org.matrix.android.sdk.internal.util.database.MatrixRealmMigration
7576
import javax.inject.Inject
@@ -78,7 +79,7 @@ internal class RealmSessionStoreMigration @Inject constructor(
7879
private val normalizer: Normalizer
7980
) : MatrixRealmMigration(
8081
dbName = "Session",
81-
schemaVersion = 53L,
82+
schemaVersion = 54L,
8283
) {
8384
/**
8485
* Forces all RealmSessionStoreMigration instances to be equal.
@@ -141,5 +142,6 @@ internal class RealmSessionStoreMigration @Inject constructor(
141142
if (oldVersion < 51) MigrateSessionTo051(realm).perform()
142143
if (oldVersion < 52) MigrateSessionTo052(realm).perform()
143144
if (oldVersion < 53) MigrateSessionTo053(realm).perform()
145+
if (oldVersion < 54) MigrateSessionTo054(realm).perform()
144146
}
145147
}

matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/mapper/HomeServerCapabilitiesMapper.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ internal object HomeServerCapabilitiesMapper {
5050
canRedactRelatedEvents = entity.canRedactEventWithRelations,
5151
externalAccountManagementUrl = entity.externalAccountManagementUrl,
5252
authenticationIssuer = entity.authenticationIssuer,
53+
disableNetworkConstraint = entity.disableNetworkConstraint,
5354
)
5455
}
5556

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/*
2+
* Copyright (c) 2023 The Matrix.org Foundation C.I.C.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package org.matrix.android.sdk.internal.database.migration
18+
19+
import io.realm.DynamicRealm
20+
import org.matrix.android.sdk.internal.database.model.HomeServerCapabilitiesEntityFields
21+
import org.matrix.android.sdk.internal.extensions.forceRefreshOfHomeServerCapabilities
22+
import org.matrix.android.sdk.internal.util.database.RealmMigrator
23+
24+
internal class MigrateSessionTo054(realm: DynamicRealm) : RealmMigrator(realm, 54) {
25+
override fun doMigrate(realm: DynamicRealm) {
26+
realm.schema.get("HomeServerCapabilitiesEntity")
27+
?.addField(HomeServerCapabilitiesEntityFields.DISABLE_NETWORK_CONSTRAINT, Boolean::class.java)
28+
?.forceRefreshOfHomeServerCapabilities()
29+
}
30+
}

matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/HomeServerCapabilitiesEntity.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ internal open class HomeServerCapabilitiesEntity(
3737
var canRedactEventWithRelations: Boolean = false,
3838
var externalAccountManagementUrl: String? = null,
3939
var authenticationIssuer: String? = null,
40+
var disableNetworkConstraint: Boolean = false,
4041
) : RealmObject() {
4142

4243
companion object

matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/homeserver/GetHomeServerCapabilitiesTask.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import com.zhuinden.monarchy.Monarchy
2020
import org.matrix.android.sdk.api.MatrixPatterns.getServerName
2121
import org.matrix.android.sdk.api.auth.data.HomeServerConnectionConfig
2222
import org.matrix.android.sdk.api.auth.wellknown.WellknownResult
23+
import org.matrix.android.sdk.api.extensions.orFalse
2324
import org.matrix.android.sdk.api.extensions.orTrue
2425
import org.matrix.android.sdk.api.session.homeserver.HomeServerCapabilities
2526
import org.matrix.android.sdk.internal.auth.version.Versions
@@ -167,6 +168,7 @@ internal class DefaultGetHomeServerCapabilitiesTask @Inject constructor(
167168
}
168169
homeServerCapabilitiesEntity.authenticationIssuer = getWellknownResult.wellKnown.unstableDelegatedAuthConfig?.issuer
169170
homeServerCapabilitiesEntity.externalAccountManagementUrl = getWellknownResult.wellKnown.unstableDelegatedAuthConfig?.accountManagementUrl
171+
homeServerCapabilitiesEntity.disableNetworkConstraint = getWellknownResult.wellKnown.disableNetworkConstraint.orFalse()
170172
}
171173

172174
homeServerCapabilitiesEntity.canLoginWithQrCode = canLoginWithQrCode(getCapabilitiesResult, getVersionResult)

0 commit comments

Comments
 (0)