Skip to content

Commit 367b770

Browse files
authored
Simplify QueryFilter.parse (#9072)
1 parent 2c5d209 commit 367b770

1 file changed

Lines changed: 19 additions & 27 deletions

File tree

packages/devtools_app/lib/src/shared/ui/filter.dart

Lines changed: 19 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,7 @@ class _SettingFilterElement extends StatelessWidget {
347347
class Filter<T> {
348348
Filter({required this.queryFilter, required this.settingFilters});
349349

350-
final QueryFilter queryFilter;
350+
final QueryFilter<T> queryFilter;
351351

352352
final SettingFilters<T> settingFilters;
353353

@@ -453,8 +453,8 @@ class SettingFilter<T, V> {
453453

454454
class QueryFilter<T> {
455455
const QueryFilter._({
456-
QueryFilterArgs<T> filterArguments = const {},
457-
this.substringExpressions = const <Pattern>[],
456+
required QueryFilterArgs<T> filterArguments,
457+
required this.substringExpressions,
458458
this.isEmpty = false,
459459
}) : _filterArguments = filterArguments;
460460

@@ -486,23 +486,19 @@ class QueryFilter<T> {
486486
final querySeparatorIndex = part.indexOf(':');
487487
if (querySeparatorIndex != -1) {
488488
final value = part.substring(querySeparatorIndex + 1).trim();
489-
if (value.isNotEmpty) {
490-
for (final arg in args.values) {
491-
if (arg.matchesKey(part)) {
492-
arg.isNegative = part.startsWith(
493-
QueryFilterArgument.negativePrefix,
494-
);
495-
final valueStrings = value.split(
496-
QueryFilterArgument.valueSeparator,
497-
);
498-
arg.values =
499-
useRegExp
500-
? valueStrings
501-
.map((v) => RegExp(v, caseSensitive: false))
502-
.toList()
503-
: valueStrings;
504-
}
505-
}
489+
if (value.isEmpty) {
490+
continue;
491+
}
492+
final valueStrings = value.split(QueryFilterArgument.valueSeparator);
493+
for (final arg in args.values.where((arg) => arg.matchesKey(part))) {
494+
arg
495+
..isNegative = part.startsWith(QueryFilterArgument.negativePrefix)
496+
..values =
497+
useRegExp
498+
? valueStrings
499+
.map((v) => RegExp(v, caseSensitive: false))
500+
.toList()
501+
: valueStrings;
506502
}
507503
} else {
508504
substringExpressions.add(
@@ -511,13 +507,9 @@ class QueryFilter<T> {
511507
}
512508
}
513509

514-
bool validArgumentFilter = false;
515-
for (final arg in args.values) {
516-
if (arg.values.isNotEmpty) {
517-
validArgumentFilter = true;
518-
break;
519-
}
520-
}
510+
final bool validArgumentFilter = args.values.any(
511+
(a) => a.values.isNotEmpty,
512+
);
521513
if (!validArgumentFilter && substringExpressions.isEmpty) {
522514
return QueryFilter.empty(args: args);
523515
}

0 commit comments

Comments
 (0)