operator can be null in certain cases

This commit is contained in:
Salvatore Giordano
2021-05-17 12:27:22 +02:00
parent 2263dc097b
commit 6088c0bd99
@@ -87,8 +87,8 @@ extension FilterOperatorX on FilterOperator {
/// See <a href="https://getstream.io/chat/docs/query_channels/?language=dart" target="_top">Query Channels Documentation</a> /// See <a href="https://getstream.io/chat/docs/query_channels/?language=dart" target="_top">Query Channels Documentation</a>
class Filter extends Equatable { class Filter extends Equatable {
const Filter.__({ const Filter.__({
required this.operator,
required this.value, required this.value,
this.operator,
this.key, this.key,
}); });
@@ -159,13 +159,13 @@ class Filter extends Equatable {
/// Creates a custom [Filter] if there isn't one already available. /// Creates a custom [Filter] if there isn't one already available.
const factory Filter.custom({ const factory Filter.custom({
required String operator,
required Object value, required Object value,
String? operator,
String? key, String? key,
}) = Filter.__; }) = Filter.__;
/// An operator used for the filter. The operator string must start with `$` /// An operator used for the filter. The operator string must start with `$`
final String operator; final String? operator;
/// The "left-hand" side of the filter. /// The "left-hand" side of the filter.
/// Specifies the name of the field the filter should match. /// Specifies the name of the field the filter should match.
@@ -188,7 +188,7 @@ class Filter extends Equatable {
final groupOperators = _groupOperators.map((it) => it.rawValue); final groupOperators = _groupOperators.map((it) => it.rawValue);
assert( assert(
groupOperators.contains(operator) || key != null, (operator != null && groupOperators.contains(operator)) || key != null,
'Filter must contain the `key` when the operator is not a ' 'Filter must contain the `key` when the operator is not a '
'group operator.', 'group operator.',
); );
@@ -196,11 +196,13 @@ class Filter extends Equatable {
if (groupOperators.contains(operator)) { if (groupOperators.contains(operator)) {
// Filters with group operators are encoded in the following form: // Filters with group operators are encoded in the following form:
// { $<operator>: [ <filter 1>, <filter 2> ] } // { $<operator>: [ <filter 1>, <filter 2> ] }
json[operator] = value; json[operator!] = value;
} else { } else if (operator != null) {
// Normal filters are encoded in the following form: // Normal filters are encoded in the following form:
// { key: { $<operator>: <value> } } // { key: { $<operator>: <value> } }
json[key!] = {operator: value}; json[key!] = {operator: value};
} else {
json[key!] = value;
} }
return json; return json;