mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2025-02-18 13:00:18 +03:00
Delete messages from just ignored users from our database (#1899)
This commit is contained in:
parent
ff28cb4349
commit
6ed1516d90
1 changed files with 15 additions and 1 deletions
|
@ -39,6 +39,8 @@ import org.matrix.android.sdk.internal.database.model.IgnoredUserEntity
|
||||||
import org.matrix.android.sdk.internal.database.model.PushRulesEntity
|
import org.matrix.android.sdk.internal.database.model.PushRulesEntity
|
||||||
import org.matrix.android.sdk.internal.database.model.RoomSummaryEntity
|
import org.matrix.android.sdk.internal.database.model.RoomSummaryEntity
|
||||||
import org.matrix.android.sdk.internal.database.model.RoomSummaryEntityFields
|
import org.matrix.android.sdk.internal.database.model.RoomSummaryEntityFields
|
||||||
|
import org.matrix.android.sdk.internal.database.model.TimelineEventEntity
|
||||||
|
import org.matrix.android.sdk.internal.database.model.TimelineEventEntityFields
|
||||||
import org.matrix.android.sdk.internal.database.model.UserAccountDataEntity
|
import org.matrix.android.sdk.internal.database.model.UserAccountDataEntity
|
||||||
import org.matrix.android.sdk.internal.database.model.UserAccountDataEntityFields
|
import org.matrix.android.sdk.internal.database.model.UserAccountDataEntityFields
|
||||||
import org.matrix.android.sdk.internal.database.model.deleteOnCascade
|
import org.matrix.android.sdk.internal.database.model.deleteOnCascade
|
||||||
|
@ -189,7 +191,19 @@ internal class UserAccountDataSyncHandler @Inject constructor(
|
||||||
.deleteAllFromRealm()
|
.deleteAllFromRealm()
|
||||||
// And save the new received list
|
// And save the new received list
|
||||||
userIds.forEach { realm.createObject(IgnoredUserEntity::class.java).apply { userId = it } }
|
userIds.forEach { realm.createObject(IgnoredUserEntity::class.java).apply { userId = it } }
|
||||||
// TODO If not initial sync, we should execute a init sync
|
|
||||||
|
// Delete all the TimelineEvents for all the ignored users
|
||||||
|
// See https://spec.matrix.org/latest/client-server-api/#client-behaviour-22 :
|
||||||
|
// "Once ignored, the client will no longer receive events sent by that user, with the exception of state events"
|
||||||
|
// So just delete all non-state events from our local storage.
|
||||||
|
realm.where(TimelineEventEntity::class.java)
|
||||||
|
.`in`(TimelineEventEntityFields.ROOT.SENDER, userIds.toTypedArray())
|
||||||
|
.isNull(TimelineEventEntityFields.ROOT.STATE_KEY)
|
||||||
|
.findAll()
|
||||||
|
.also { Timber.d("Deleting ${it.size} TimelineEventEntity from ignored users") }
|
||||||
|
.forEach {
|
||||||
|
it.deleteOnCascade(true)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun handleBreadcrumbs(realm: Realm, event: UserAccountDataEvent) {
|
private fun handleBreadcrumbs(realm: Realm, event: UserAccountDataEvent) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue