mirror of
https://github.com/element-hq/element-android
synced 2024-11-27 20:06:51 +03:00
Update after PR review.
This commit is contained in:
parent
98df2d82db
commit
a0025bc99b
2 changed files with 44 additions and 6 deletions
|
@ -20,6 +20,7 @@ import io.realm.RealmList
|
||||||
import io.realm.RealmObject
|
import io.realm.RealmObject
|
||||||
import io.realm.RealmObjectSchema
|
import io.realm.RealmObjectSchema
|
||||||
import org.matrix.android.sdk.internal.database.model.HomeServerCapabilitiesEntityFields
|
import org.matrix.android.sdk.internal.database.model.HomeServerCapabilitiesEntityFields
|
||||||
|
import org.matrix.android.sdk.internal.util.fatalError
|
||||||
|
|
||||||
internal fun RealmObject.assertIsManaged() {
|
internal fun RealmObject.assertIsManaged() {
|
||||||
check(isManaged) { "${javaClass.simpleName} entity should be managed to use this function" }
|
check(isManaged) { "${javaClass.simpleName} entity should be managed to use this function" }
|
||||||
|
@ -27,14 +28,19 @@ internal fun RealmObject.assertIsManaged() {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clear a RealmList by deleting all its items calling the provided lambda.
|
* Clear a RealmList by deleting all its items calling the provided lambda.
|
||||||
|
* The lambda is supposed to delete the item, which means that after this operation, the list will be empty.
|
||||||
*/
|
*/
|
||||||
internal fun <T> RealmList<T>.clearWith(delete: (T) -> Unit) {
|
internal fun <T> RealmList<T>.clearWith(delete: (T) -> Unit) {
|
||||||
while (!isEmpty()) {
|
map { item ->
|
||||||
val previousSize = size
|
// Create a lambda for all items of the list
|
||||||
first()?.let { delete.invoke(it) }
|
{ delete(item) }
|
||||||
if (previousSize != size + 1) {
|
}.forEach { lambda ->
|
||||||
error("`clearWith` MUST delete all elements of the RealmList")
|
// Then invoke all the lambda
|
||||||
}
|
lambda.invoke()
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isEmpty()) {
|
||||||
|
fatalError("`clearWith` MUST delete all elements of the RealmList")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2022 The Matrix.org Foundation C.I.C.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.matrix.android.sdk.internal.util
|
||||||
|
|
||||||
|
import org.matrix.android.sdk.BuildConfig
|
||||||
|
import timber.log.Timber
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Throws in debug, only log in production.
|
||||||
|
* As this method does not always throw, next statement should be a return.
|
||||||
|
*/
|
||||||
|
internal fun fatalError(message: String) {
|
||||||
|
if (BuildConfig.DEBUG) {
|
||||||
|
error(message)
|
||||||
|
} else {
|
||||||
|
Timber.e(message)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue