Skip to content

Commit

Permalink
[PBE-5891] Remove NotInFilterObject (#5394)
Browse files Browse the repository at this point in the history
* Update CHANGELOG.md

* Remove `Not In` Filter that is not supported on backend anymore

* Update CHANGELOG.md

---------

Co-authored-by: Aleksandar Apostolov <[email protected]>
  • Loading branch information
JcMinarro and aleksandar-apostolov authored Oct 1, 2024
1 parent c74a9d2 commit 7bfe302
Show file tree
Hide file tree
Showing 12 changed files with 5 additions and 302 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,10 @@
### ✅ Added

### ⚠️ Changed
- Deprecate `NotInFilterObject` because it is not supported backend-side anymore. [#5393](https://github.com/GetStream/stream-chat-android/pull/5393)

### ❌ Removed
- Remove `NotInFilterObject` because it is not supported backend-side anymore. [#5394](https://github.com/GetStream/stream-chat-android/pull/5394)

## stream-chat-android-client
### 🐞 Fixed
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ import io.getstream.chat.android.models.NeutralFilterObject
import io.getstream.chat.android.models.NorFilterObject
import io.getstream.chat.android.models.NotEqualsFilterObject
import io.getstream.chat.android.models.NotExistsFilterObject
import io.getstream.chat.android.models.NotInFilterObject
import io.getstream.chat.android.models.OrFilterObject

@Suppress("ComplexMethod")
Expand All @@ -50,7 +49,6 @@ internal fun FilterObject.toMap(): Map<String, Any> = when (this) {
is LessThanFilterObject -> mapOf(this.fieldName to mapOf(KEY_LESS_THAN to this.value))
is LessThanOrEqualsFilterObject -> mapOf(this.fieldName to mapOf(KEY_LESS_THAN_OR_EQUALS to this.value))
is InFilterObject -> mapOf(this.fieldName to mapOf(KEY_IN to this.values))
is NotInFilterObject -> mapOf(this.fieldName to mapOf(KEY_NOT_IN to this.values))
is AutocompleteFilterObject -> mapOf(this.fieldName to mapOf(KEY_AUTOCOMPLETE to this.value))
is DistinctFilterObject -> mapOf(KEY_DISTINCT to true, KEY_MEMBERS to this.memberIds)
is NeutralFilterObject -> emptyMap<String, String>()
Expand All @@ -67,7 +65,6 @@ private const val KEY_GREATER_THAN_OR_EQUALS: String = "\$gte"
private const val KEY_LESS_THAN: String = "\$lt"
private const val KEY_LESS_THAN_OR_EQUALS: String = "\$lte"
private const val KEY_IN: String = "\$in"
private const val KEY_NOT_IN: String = "\$nin"
private const val KEY_AUTOCOMPLETE: String = "\$autocomplete"
private const val KEY_DISTINCT: String = "distinct"
private const val KEY_MEMBERS: String = "members"
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ internal class FilterObjectTests {
@Test
fun `Two filters with different types Should not be equal`() {
val filterObject1 = Filters.`in`("members", listOf("userId1"))
val filterObject2 = Filters.nin("members", listOf("userId1"))
val filterObject2 = Filters.ne("members", listOf("userId1"))

filterObject1 `should not be equal to` filterObject2
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -198,30 +198,6 @@ internal class FilterObjectTypeAdapterTest {
)
}
},
randomString().let { fieldName ->
List(positiveRandomInt(20)) { randomString() }.let { values ->
Arguments.of(
Filters.nin(fieldName, values),
"{\"$fieldName\":{\"\$nin\":[\"${values.toSet().joinToString(separator = "\",\"")}\"]}}",
)
}
},
randomString().let { fieldName ->
List(positiveRandomInt(20)) { randomInt() }.let { values ->
Arguments.of(
Filters.nin(fieldName, values),
"{\"$fieldName\":{\"\$nin\":[${values.toSet().joinToString(separator = ",")}]}}",
)
}
},
randomString().let { fieldName ->
List(positiveRandomInt(20)) { randomBoolean() }.let { values ->
Arguments.of(
Filters.nin(fieldName, values),
"{\"$fieldName\":{\"\$nin\":[${values.toSet().joinToString(separator = ",")}]}}",
)
}
},
randomString().let { fieldName ->
List(positiveRandomInt(20)) { randomInt() }.let { values ->
Arguments.of(
Expand Down
15 changes: 0 additions & 15 deletions stream-chat-android-core/api/stream-chat-android-core.api
Original file line number Diff line number Diff line change
Expand Up @@ -866,9 +866,6 @@ public final class io/getstream/chat/android/models/Filters {
public static final fun lessThanEquals (Ljava/lang/String;Ljava/lang/Object;)Lio/getstream/chat/android/models/FilterObject;
public static final fun ne (Ljava/lang/String;Ljava/lang/Object;)Lio/getstream/chat/android/models/FilterObject;
public static final fun neutral ()Lio/getstream/chat/android/models/FilterObject;
public static final fun nin (Ljava/lang/String;Ljava/util/List;)Lio/getstream/chat/android/models/FilterObject;
public static final fun nin (Ljava/lang/String;[Ljava/lang/Number;)Lio/getstream/chat/android/models/FilterObject;
public static final fun nin (Ljava/lang/String;[Ljava/lang/String;)Lio/getstream/chat/android/models/FilterObject;
public static final fun nor ([Lio/getstream/chat/android/models/FilterObject;)Lio/getstream/chat/android/models/FilterObject;
public static final fun notExists (Ljava/lang/String;)Lio/getstream/chat/android/models/FilterObject;
public static final fun or ([Lio/getstream/chat/android/models/FilterObject;)Lio/getstream/chat/android/models/FilterObject;
Expand Down Expand Up @@ -1344,18 +1341,6 @@ public final class io/getstream/chat/android/models/NotExistsFilterObject : io/g
public fun toString ()Ljava/lang/String;
}

public final class io/getstream/chat/android/models/NotInFilterObject : io/getstream/chat/android/models/FilterObject {
public final fun component1 ()Ljava/lang/String;
public final fun component2 ()Ljava/util/Set;
public final fun copy (Ljava/lang/String;Ljava/util/Set;)Lio/getstream/chat/android/models/NotInFilterObject;
public static synthetic fun copy$default (Lio/getstream/chat/android/models/NotInFilterObject;Ljava/lang/String;Ljava/util/Set;ILjava/lang/Object;)Lio/getstream/chat/android/models/NotInFilterObject;
public fun equals (Ljava/lang/Object;)Z
public final fun getFieldName ()Ljava/lang/String;
public final fun getValues ()Ljava/util/Set;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}

public final class io/getstream/chat/android/models/Option {
public fun <init> (Ljava/lang/String;Ljava/lang/String;)V
public final fun component1 ()Ljava/lang/String;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,6 @@ package io.getstream.chat.android.models
*/
public sealed class FilterObject

@Deprecated(
message = "This filter will stop to be supported in the future.",
level = DeprecationLevel.WARNING,
)
public data class NotInFilterObject internal constructor(val fieldName: String, val values: Set<Any>) : FilterObject()

public data class AndFilterObject internal constructor(val filterObjects: Set<FilterObject>) : FilterObject()
public data class OrFilterObject internal constructor(val filterObjects: Set<FilterObject>) : FilterObject()
public data class NorFilterObject internal constructor(val filterObjects: Set<FilterObject>) : FilterObject()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,29 +83,6 @@ public object Filters {
@JvmStatic
public fun `in`(fieldName: String, vararg values: Number): FilterObject = InFilterObject(fieldName, values.toSet())

@JvmStatic
@Deprecated(
message = "This filter will stop to be supported in the future.",
level = DeprecationLevel.WARNING,
)
public fun nin(fieldName: String, vararg values: String): FilterObject =
NotInFilterObject(fieldName, values.toSet())

@JvmStatic
@Deprecated(
message = "This filter will stop to be supported in the future.",
level = DeprecationLevel.WARNING,
)
public fun nin(fieldName: String, values: List<Any>): FilterObject = NotInFilterObject(fieldName, values.toSet())

@JvmStatic
@Deprecated(
message = "This filter will stop to be supported in the future.",
level = DeprecationLevel.WARNING,
)
public fun nin(fieldName: String, vararg values: Number): FilterObject =
NotInFilterObject(fieldName, values.toSet())

@JvmStatic
public fun autocomplete(fieldName: String, value: String): FilterObject = AutocompleteFilterObject(fieldName, value)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ import io.getstream.chat.android.models.NeutralFilterObject
import io.getstream.chat.android.models.NorFilterObject
import io.getstream.chat.android.models.NotEqualsFilterObject
import io.getstream.chat.android.models.NotExistsFilterObject
import io.getstream.chat.android.models.NotInFilterObject
import io.getstream.chat.android.models.OrFilterObject
import java.lang.IllegalArgumentException

Expand Down Expand Up @@ -84,7 +83,6 @@ private fun Map.Entry<String, Any>.toFilterObject(): FilterObject = when (this.k
KEY_LESS_THAN -> Filters.lessThan(this.key, it.value)
KEY_LESS_THAN_OR_EQUALS -> Filters.lessThanEquals(this.key, it.value)
KEY_IN -> Filters.`in`(this.key, (it.value as List<Any>))
KEY_NOT_IN -> Filters.nin(this.key, (it.value as List<Any>))
KEY_AUTOCOMPLETE -> Filters.autocomplete(this.key, it.value as String)
else -> throw IllegalArgumentException("FilterObject can be create with this map `$this`")
}
Expand All @@ -105,7 +103,6 @@ private fun FilterObject.toMap(): Map<String, Any> = when (this) {
is LessThanFilterObject -> mapOf(this.fieldName to mapOf(KEY_LESS_THAN to this.value))
is LessThanOrEqualsFilterObject -> mapOf(this.fieldName to mapOf(KEY_LESS_THAN_OR_EQUALS to this.value))
is InFilterObject -> mapOf(this.fieldName to mapOf(KEY_IN to this.values))
is NotInFilterObject -> mapOf(this.fieldName to mapOf(KEY_NOT_IN to this.values))
is AutocompleteFilterObject -> mapOf(this.fieldName to mapOf(KEY_AUTOCOMPLETE to this.value))
is DistinctFilterObject -> mapOf(KEY_DISTINCT to true, KEY_MEMBERS to this.memberIds)
is NeutralFilterObject -> emptyMap<String, String>()
Expand All @@ -123,7 +120,6 @@ private const val KEY_GREATER_THAN_OR_EQUALS: String = "\$gte"
private const val KEY_LESS_THAN: String = "\$lt"
private const val KEY_LESS_THAN_OR_EQUALS: String = "\$lte"
private const val KEY_IN: String = "\$in"
private const val KEY_NOT_IN: String = "\$nin"
private const val KEY_AUTOCOMPLETE: String = "\$autocomplete"
private const val KEY_DISTINCT: String = "distinct"
private const val KEY_MEMBERS: String = "members"
Original file line number Diff line number Diff line change
Expand Up @@ -206,30 +206,6 @@ internal class FilterObjectConverterTest {
)
}
},
randomString().let { fieldName ->
List(positiveRandomInt(20)) { randomString() }.distinct().let { values ->
Arguments.of(
Filters.`nin`(fieldName, values),
"{\"$fieldName\":{\"\$nin\":[\"${values.joinToString(separator = "\",\"")}\"]}}",
)
}
},
randomString().let { fieldName ->
List(positiveRandomInt(20)) { randomInt() }.distinct().let { values ->
Arguments.of(
Filters.`nin`(fieldName, values),
"{\"$fieldName\":{\"\$nin\":[${values.joinToString(separator = ",")}]}}",
)
}
},
randomString().let { fieldName ->
List(positiveRandomInt(20)) { randomBoolean() }.distinct().let { values ->
Arguments.of(
Filters.`nin`(fieldName, values),
"{\"$fieldName\":{\"\$nin\":[${values.joinToString(separator = ",")}]}}",
)
}
},
randomString().let { fieldName ->
List(positiveRandomInt(20)) { randomInt() }.distinct().let { values ->
Arguments.of(
Expand Down Expand Up @@ -425,30 +401,6 @@ internal class FilterObjectConverterTest {
)
}
},
randomString().let { fieldName ->
List(positiveRandomInt(20)) { randomString() }.distinct().let { values ->
Arguments.of(
"{\"$fieldName\":{\"\$nin\":[\"${values.joinToString(separator = "\",\"")}\"]}}",
Filters.`nin`(fieldName, values),
)
}
},
randomString().let { fieldName ->
List(positiveRandomInt(20)) { randomInt().toDouble() }.distinct().let { values ->
Arguments.of(
"{\"$fieldName\":{\"\$nin\":[${values.joinToString(separator = ",")}]}}",
Filters.`nin`(fieldName, values),
)
}
},
randomString().let { fieldName ->
List(positiveRandomInt(20)) { randomBoolean() }.distinct().let { values ->
Arguments.of(
"{\"$fieldName\":{\"\$nin\":[${values.joinToString(separator = ",")}]}}",
Filters.`nin`(fieldName, values),
)
}
},
randomString().let { fieldName ->
List(positiveRandomInt(20)) { randomInt().toDouble() }.distinct().let { values ->
Arguments.of(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ import io.getstream.chat.android.models.NeutralFilterObject
import io.getstream.chat.android.models.NorFilterObject
import io.getstream.chat.android.models.NotEqualsFilterObject
import io.getstream.chat.android.models.NotExistsFilterObject
import io.getstream.chat.android.models.NotInFilterObject
import io.getstream.chat.android.models.OrFilterObject
import java.lang.ClassCastException
import kotlin.reflect.KClass
Expand Down Expand Up @@ -81,17 +80,6 @@ internal fun <T : CustomObject> FilterObject.filter(t: T): Boolean = try {
}
}
}
is NotInFilterObject -> when (fieldName) {
MEMBERS_FIELD_NAME -> values.none(t.getMembersId()::contains)
else -> {
val fieldValue = t.getMemberPropertyOrExtra(fieldName, Any::class)
if (fieldValue is List<*>) {
values.none(fieldValue::contains)
} else {
!values.contains(fieldValue)
}
}
}
is DistinctFilterObject -> (t as? Channel)?.let { channel ->
channel.id.startsWith("!members") &&
channel.members.size == memberIds.size &&
Expand Down
Loading

0 comments on commit 7bfe302

Please sign in to comment.