1
0
Fork 0
mirror of https://github.com/anyproto/anytype-kotlin.git synced 2025-06-08 05:47:05 +09:00

DROID-1750 Library | Tech | Assert unique keys in debug mode (#402)

This commit is contained in:
Evgenii Kozlov 2023-09-26 20:45:09 +02:00 committed by uburoiubu
parent abb5b23911
commit 4afbe579c4
No known key found for this signature in database
GPG key ID: C8FB80E0A595FBB6
2 changed files with 15 additions and 0 deletions

View file

@ -136,4 +136,9 @@ fun <T> MutableList<T>.moveOnTop(
val (first, last) = partition(predicate)
clear()
addAll(first + last)
}
inline fun <T, R> Iterable<T>.allUniqueBy(transform: (T) -> R): Boolean {
val hashset = hashSetOf<R>()
return this.all { hashset.add(transform(it)) }
}

View file

@ -11,12 +11,14 @@ import com.anytypeio.anytype.analytics.base.sendEvent
import com.anytypeio.anytype.analytics.props.Props
import com.anytypeio.anytype.core_models.Id
import com.anytypeio.anytype.core_models.Relations
import com.anytypeio.anytype.core_utils.ext.allUniqueBy
import com.anytypeio.anytype.core_utils.ext.orNull
import com.anytypeio.anytype.domain.base.fold
import com.anytypeio.anytype.domain.`object`.SetObjectDetails
import com.anytypeio.anytype.domain.page.CreateObject
import com.anytypeio.anytype.domain.workspace.AddObjectToWorkspace
import com.anytypeio.anytype.domain.workspace.RemoveObjectsFromWorkspace
import com.anytypeio.anytype.presentation.BuildConfig
import com.anytypeio.anytype.presentation.library.delegates.LibraryRelationsDelegate
import com.anytypeio.anytype.presentation.library.delegates.LibraryTypesDelegate
import com.anytypeio.anytype.presentation.library.delegates.MyRelationsDelegate
@ -285,6 +287,10 @@ class LibraryViewModel(
libTypes: LibraryScreenState.Tabs.TabData,
myTypes: LibraryScreenState.Tabs.TabData
): LibraryScreenState.Tabs.TabData {
if (BuildConfig.DEBUG) {
assert(libTypes.items.allUniqueBy { it.id })
assert(myTypes.items.allUniqueBy { it.id })
}
return libTypes.copy(
items = libTypes.items.map { libType ->
if (libType is LibraryView.LibraryTypeView) {
@ -310,6 +316,10 @@ class LibraryViewModel(
libRelations: LibraryScreenState.Tabs.TabData,
myRelations: LibraryScreenState.Tabs.TabData
): LibraryScreenState.Tabs.TabData {
if (BuildConfig.DEBUG) {
assert(libRelations.items.allUniqueBy { it.id })
assert(myRelations.items.allUniqueBy { it.id })
}
return libRelations.copy(
items = libRelations.items.map { libRelation ->
if (libRelation is LibraryView.LibraryRelationView) {