Skip to content

Commit b0907de

Browse files
committed
Fix migration
1 parent ddd8244 commit b0907de

File tree

4 files changed

+17
-8
lines changed

4 files changed

+17
-8
lines changed

matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/RealmCryptoStore.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import io.realm.RealmConfiguration
2626
import io.realm.Sort
2727
import io.realm.kotlin.createObject
2828
import io.realm.kotlin.where
29-
import org.matrix.android.sdk.api.MatrixConfiguration
3029
import org.matrix.android.sdk.api.crypto.MXCRYPTO_ALGORITHM_MEGOLM
3130
import org.matrix.android.sdk.api.extensions.tryOrNull
3231
import org.matrix.android.sdk.api.logger.LoggerTag
@@ -112,7 +111,6 @@ internal class RealmCryptoStore @Inject constructor(
112111
private val crossSigningKeysMapper: CrossSigningKeysMapper,
113112
@UserId private val userId: String,
114113
@DeviceId private val deviceId: String?,
115-
private val matrixConfiguration: MatrixConfiguration,
116114
private val clock: Clock,
117115
) : IMXCryptoStore {
118116

matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/RealmCryptoStoreMigration.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ import org.matrix.android.sdk.internal.crypto.store.db.migration.MigrateCryptoTo
3535
import org.matrix.android.sdk.internal.crypto.store.db.migration.MigrateCryptoTo015
3636
import org.matrix.android.sdk.internal.crypto.store.db.migration.MigrateCryptoTo016
3737
import org.matrix.android.sdk.internal.crypto.store.db.migration.MigrateCryptoTo017
38-
import org.matrix.android.sdk.internal.crypto.store.db.migration.MigrateCryptoTo018
3938
import org.matrix.android.sdk.internal.util.time.Clock
4039
import timber.log.Timber
4140
import javax.inject.Inject
@@ -53,7 +52,7 @@ internal class RealmCryptoStoreMigration @Inject constructor(
5352
// 0, 1, 2: legacy Riot-Android
5453
// 3: migrate to RiotX schema
5554
// 4, 5, 6, 7, 8, 9: migrations from RiotX (which was previously 1, 2, 3, 4, 5, 6)
56-
val schemaVersion = 18L
55+
val schemaVersion = 17L
5756

5857
override fun migrate(realm: DynamicRealm, oldVersion: Long, newVersion: Long) {
5958
Timber.d("Migrating Realm Crypto from $oldVersion to $newVersion")
@@ -75,6 +74,5 @@ internal class RealmCryptoStoreMigration @Inject constructor(
7574
if (oldVersion < 15) MigrateCryptoTo015(realm).perform()
7675
if (oldVersion < 16) MigrateCryptoTo016(realm).perform()
7776
if (oldVersion < 17) MigrateCryptoTo017(realm).perform()
78-
if (oldVersion < 18) MigrateCryptoTo018(realm).perform()
7977
}
8078
}

matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/store/db/migration/MigrateCryptoTo017.kt

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import io.realm.DynamicRealm
2020
import org.matrix.android.sdk.api.extensions.tryOrNull
2121
import org.matrix.android.sdk.internal.crypto.model.InboundGroupSessionData
2222
import org.matrix.android.sdk.internal.crypto.store.db.deserializeFromRealm
23+
import org.matrix.android.sdk.internal.crypto.store.db.model.CryptoMetadataEntityFields
2324
import org.matrix.android.sdk.internal.crypto.store.db.model.CryptoRoomEntityFields
2425
import org.matrix.android.sdk.internal.crypto.store.db.model.OlmInboundGroupSessionEntityFields
2526
import org.matrix.android.sdk.internal.crypto.store.db.serializeForRealm
@@ -28,14 +29,25 @@ import org.matrix.android.sdk.internal.util.database.RealmMigrator
2829
import timber.log.Timber
2930

3031
/**
31-
* Version 17L enhance OlmInboundGroupSessionEntity to support shared history for MSC3061
32-
* Also migrates how megolm session are stored to avoid additional serialized frozen class
32+
* Version 17L enhance OlmInboundGroupSessionEntity to support shared history for MSC3061.
33+
* Also migrates how megolm session are stored to avoid additional serialized frozen class.
3334
*/
3435
internal class MigrateCryptoTo017(realm: DynamicRealm) : RealmMigrator(realm, 17) {
3536

3637
override fun doMigrate(realm: DynamicRealm) {
3738
realm.schema.get("CryptoRoomEntity")
38-
?.addField(CryptoRoomEntityFields.SHOULD_SHARE_HISTORY, Boolean::class.java)
39+
?.addField(CryptoRoomEntityFields.SHOULD_SHARE_HISTORY, Boolean::class.java)?.transform {
40+
// We don't have access to the session database to check for the state here and set the good value.
41+
// But for now as it's behind a lab flag, will set to false and force initial sync when enabled
42+
it.setBoolean(CryptoRoomEntityFields.SHOULD_SHARE_HISTORY, false)
43+
}
44+
45+
realm.schema.get("CryptoMetadataEntity")
46+
?.addField(CryptoMetadataEntityFields.ENABLE_KEY_FORWARDING_ON_INVITE, Boolean::class.java)
47+
?.transform { obj ->
48+
// default to false
49+
obj.setBoolean(CryptoMetadataEntityFields.ENABLE_KEY_FORWARDING_ON_INVITE, false)
50+
}
3951

4052
val moshiAdapter = MoshiProvider.providesMoshi().adapter(InboundGroupSessionData::class.java)
4153

vector/src/main/java/im/vector/app/features/settings/VectorSettingsLabsFragment.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ class VectorSettingsLabsFragment @Inject constructor(
6565

6666
pref.onPreferenceClickListener = Preference.OnPreferenceClickListener {
6767
session.cryptoService().enableShareKeyOnInvite(pref.isChecked)
68+
MainActivity.restartApp(requireActivity(), MainActivityArgs(clearCache = true))
6869
true
6970
}
7071
}

0 commit comments

Comments
 (0)