diff --git a/feature-date/src/main/java/com/anytypeio/anytype/feature_date/viewmodel/SearchParams.kt b/feature-date/src/main/java/com/anytypeio/anytype/feature_date/viewmodel/SearchParams.kt index d76706f06c..72e3a6bcab 100644 --- a/feature-date/src/main/java/com/anytypeio/anytype/feature_date/viewmodel/SearchParams.kt +++ b/feature-date/src/main/java/com/anytypeio/anytype/feature_date/viewmodel/SearchParams.kt @@ -9,6 +9,9 @@ import com.anytypeio.anytype.core_models.ObjectTypeUniqueKeys import com.anytypeio.anytype.core_models.Relation import com.anytypeio.anytype.core_models.RelationFormat import com.anytypeio.anytype.core_models.Relations +import com.anytypeio.anytype.core_models.Relations.LAST_MODIFIED_DATE +import com.anytypeio.anytype.core_models.Relations.RELATION_KEY +import com.anytypeio.anytype.core_models.Relations.TYPE import com.anytypeio.anytype.core_models.TimeInSeconds fun filtersAndSortsForSearch( @@ -21,8 +24,8 @@ fun filtersAndSortsForSearch( addAll(buildDeletedFilter()) add(buildSpaceIdFilter(spaces)) add(buildTemplateFilter()) - add( - buildFieldFilter( + addAll( + buildFieldFilters( dateObjectId = dateId, field = field, timestamp = timestamp @@ -45,31 +48,51 @@ private fun buildSorts( ) } -private fun buildFieldFilter( +private fun buildFieldFilters( dateObjectId: Id, field: ActiveField, timestamp: TimeInSeconds -): DVFilter { +): List { val fieldKey = field.key.key return when (field.format) { Relation.Format.DATE -> { - DVFilter( - relation = fieldKey, - condition = DVFilterCondition.EQUAL, - value = timestamp.toDouble(), - relationFormat = RelationFormat.DATE - ) + buildList { + add( + DVFilter( + relation = fieldKey, + condition = DVFilterCondition.EQUAL, + value = timestamp.toDouble(), + relationFormat = RelationFormat.DATE + ) + ) + if (fieldKey == LAST_MODIFIED_DATE) { + add( + DVFilter( + relation = Relations.CREATED_DATE, + condition = DVFilterCondition.NOT_EQUAL, + value = mapOf( + RELATION_KEY to fieldKey, + TYPE to VALUE_FROM_RELATION + ) + ) + ) + } + } } else -> { - DVFilter( - relation = fieldKey, - condition = DVFilterCondition.IN, - value = dateObjectId + listOf( + DVFilter( + relation = fieldKey, + condition = DVFilterCondition.IN, + value = dateObjectId + ) ) } } } +const val VALUE_FROM_RELATION = "valueFromRelation" + private fun buildTemplateFilter(): DVFilter = DVFilter( relation = Relations.TYPE_UNIQUE_KEY, condition = DVFilterCondition.NOT_EQUAL,