Fix / migration recover room type
This commit is contained in:
parent
70476b912f
commit
32605be6e8
|
@ -19,7 +19,10 @@ package org.matrix.android.sdk.internal.database
|
||||||
import io.realm.DynamicRealm
|
import io.realm.DynamicRealm
|
||||||
import io.realm.FieldAttribute
|
import io.realm.FieldAttribute
|
||||||
import io.realm.RealmMigration
|
import io.realm.RealmMigration
|
||||||
|
import org.matrix.android.sdk.api.session.events.model.EventType
|
||||||
|
import org.matrix.android.sdk.api.session.room.model.create.RoomCreateContent
|
||||||
import org.matrix.android.sdk.api.session.room.model.tag.RoomTag
|
import org.matrix.android.sdk.api.session.room.model.tag.RoomTag
|
||||||
|
import org.matrix.android.sdk.internal.database.model.CurrentStateEventEntityFields
|
||||||
import org.matrix.android.sdk.internal.database.model.EditAggregatedSummaryEntityFields
|
import org.matrix.android.sdk.internal.database.model.EditAggregatedSummaryEntityFields
|
||||||
import org.matrix.android.sdk.internal.database.model.EditionOfEventFields
|
import org.matrix.android.sdk.internal.database.model.EditionOfEventFields
|
||||||
import org.matrix.android.sdk.internal.database.model.EventEntityFields
|
import org.matrix.android.sdk.internal.database.model.EventEntityFields
|
||||||
|
@ -33,6 +36,7 @@ import org.matrix.android.sdk.internal.database.model.RoomTagEntityFields
|
||||||
import org.matrix.android.sdk.internal.database.model.TimelineEventEntityFields
|
import org.matrix.android.sdk.internal.database.model.TimelineEventEntityFields
|
||||||
import org.matrix.android.sdk.internal.database.model.SpaceChildSummaryEntityFields
|
import org.matrix.android.sdk.internal.database.model.SpaceChildSummaryEntityFields
|
||||||
import org.matrix.android.sdk.internal.database.model.SpaceParentSummaryEntityFields
|
import org.matrix.android.sdk.internal.database.model.SpaceParentSummaryEntityFields
|
||||||
|
import org.matrix.android.sdk.internal.di.MoshiProvider
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@ -177,7 +181,6 @@ class RealmSessionStoreMigration @Inject constructor() : RealmMigration {
|
||||||
?.addIndex(RoomSummaryEntityFields.IS_SERVER_NOTICE)
|
?.addIndex(RoomSummaryEntityFields.IS_SERVER_NOTICE)
|
||||||
|
|
||||||
?.transform { obj ->
|
?.transform { obj ->
|
||||||
|
|
||||||
val isFavorite = obj.getList(RoomSummaryEntityFields.TAGS.`$`).any {
|
val isFavorite = obj.getList(RoomSummaryEntityFields.TAGS.`$`).any {
|
||||||
it.getString(RoomTagEntityFields.TAG_NAME) == RoomTag.ROOM_TAG_FAVOURITE
|
it.getString(RoomTagEntityFields.TAG_NAME) == RoomTag.ROOM_TAG_FAVOURITE
|
||||||
}
|
}
|
||||||
|
@ -215,13 +218,24 @@ class RealmSessionStoreMigration @Inject constructor() : RealmMigration {
|
||||||
?.addRealmObjectField(SpaceParentSummaryEntityFields.PARENT_SUMMARY_ENTITY.`$`, realm.schema.get("RoomSummaryEntity")!!)
|
?.addRealmObjectField(SpaceParentSummaryEntityFields.PARENT_SUMMARY_ENTITY.`$`, realm.schema.get("RoomSummaryEntity")!!)
|
||||||
?.addRealmListField(SpaceParentSummaryEntityFields.VIA_SERVERS.`$`, String::class.java)
|
?.addRealmListField(SpaceParentSummaryEntityFields.VIA_SERVERS.`$`, String::class.java)
|
||||||
|
|
||||||
|
val creationContentAdapter = MoshiProvider.providesMoshi().adapter(RoomCreateContent::class.java)
|
||||||
realm.schema.get("RoomSummaryEntity")
|
realm.schema.get("RoomSummaryEntity")
|
||||||
?.addField(RoomSummaryEntityFields.ROOM_TYPE, String::class.java)
|
?.addField(RoomSummaryEntityFields.ROOM_TYPE, String::class.java)
|
||||||
?.addField(RoomSummaryEntityFields.FLATTEN_PARENT_IDS, String::class.java)
|
?.addField(RoomSummaryEntityFields.FLATTEN_PARENT_IDS, String::class.java)
|
||||||
?.addField(RoomSummaryEntityFields.GROUP_IDS, String::class.java)
|
?.addField(RoomSummaryEntityFields.GROUP_IDS, String::class.java)
|
||||||
?.transform { obj ->
|
?.transform { obj ->
|
||||||
// Should I put messaging type here?
|
|
||||||
obj.setString(RoomSummaryEntityFields.ROOM_TYPE, null)
|
val creationEvent = realm.where("CurrentStateEventEntity")
|
||||||
|
.equalTo(CurrentStateEventEntityFields.ROOM_ID, obj.getString(RoomSummaryEntityFields.ROOM_ID))
|
||||||
|
.equalTo(CurrentStateEventEntityFields.TYPE, EventType.STATE_ROOM_CREATE)
|
||||||
|
.findFirst()
|
||||||
|
|
||||||
|
val roomType = creationEvent?.getObject(CurrentStateEventEntityFields.ROOT.`$`)
|
||||||
|
?.getString(EventEntityFields.CONTENT)?.let {
|
||||||
|
creationContentAdapter.fromJson(it)?.type
|
||||||
|
}
|
||||||
|
|
||||||
|
obj.setString(RoomSummaryEntityFields.ROOM_TYPE, roomType)
|
||||||
}
|
}
|
||||||
?.addRealmListField(RoomSummaryEntityFields.PARENTS.`$`, realm.schema.get("SpaceParentSummaryEntity")!!)
|
?.addRealmListField(RoomSummaryEntityFields.PARENTS.`$`, realm.schema.get("SpaceParentSummaryEntity")!!)
|
||||||
?.addRealmListField(RoomSummaryEntityFields.CHILDREN.`$`, realm.schema.get("SpaceChildSummaryEntity")!!)
|
?.addRealmListField(RoomSummaryEntityFields.CHILDREN.`$`, realm.schema.get("SpaceChildSummaryEntity")!!)
|
||||||
|
|
Loading…
Reference in New Issue