From 41237677c36301ff66635736b196dc364533da08 Mon Sep 17 00:00:00 2001 From: Kenzie Schmoll Date: Tue, 23 Jul 2024 14:38:56 -0700 Subject: [PATCH 1/2] Cleanup: replace usage of `containsWhere` in favor of `any` --- packages/devtools_app/lib/src/app.dart | 2 +- .../lib/src/extensions/extension_service.dart | 3 +- .../lib/src/shared/notifications.dart | 6 +-- .../lib/src/shared/primitives/utils.dart | 18 ------- .../test/shared/primitives/utils_test.dart | 47 +++---------------- 5 files changed, 11 insertions(+), 65 deletions(-) diff --git a/packages/devtools_app/lib/src/app.dart b/packages/devtools_app/lib/src/app.dart index 7c4470cc8b5..10f119e12e2 100644 --- a/packages/devtools_app/lib/src/app.dart +++ b/packages/devtools_app/lib/src/app.dart @@ -287,7 +287,7 @@ class DevToolsAppState extends State with AutoDisposeMixin { _screens.firstWhereOrNull((s) => s.screenId == page); final screenInOriginalScreens = originalScreen != null; final screenInScaffoldScreens = - screensInScaffold.containsWhere((s) => s.screenId == page); + screensInScaffold.any((s) => s.screenId == page); if (page != null && screenInOriginalScreens && !screenInScaffoldScreens) { diff --git a/packages/devtools_app/lib/src/extensions/extension_service.dart b/packages/devtools_app/lib/src/extensions/extension_service.dart index a65d2d8140c..3008c29b620 100644 --- a/packages/devtools_app/lib/src/extensions/extension_service.dart +++ b/packages/devtools_app/lib/src/extensions/extension_service.dart @@ -8,7 +8,6 @@ import 'package:flutter/foundation.dart'; import 'package:logging/logging.dart'; import '../shared/globals.dart'; -import '../shared/primitives/utils.dart'; import '../shared/server/server.dart' as server; import 'extension_service_helpers.dart'; @@ -234,7 +233,7 @@ class ExtensionService extends DisposableController // not always be true for extensions that are not published on pub or // extensions that do not follow best practices for naming. final isRuntimeDuplicate = runtimeExtensions - .containsWhere((ext) => ext.name == staticExtension.name); + .any((ext) => ext.name == staticExtension.name); if (isRuntimeDuplicate) { _log.fine( 'ignoring duplicate static extension ${staticExtension.identifier} ' diff --git a/packages/devtools_app/lib/src/shared/notifications.dart b/packages/devtools_app/lib/src/shared/notifications.dart index 3f335e6dc35..e61343875ce 100644 --- a/packages/devtools_app/lib/src/shared/notifications.dart +++ b/packages/devtools_app/lib/src/shared/notifications.dart @@ -9,7 +9,6 @@ import 'package:devtools_app_shared/ui.dart'; import 'package:flutter/material.dart'; import 'globals.dart'; -import 'primitives/utils.dart'; import 'utils.dart'; class NotificationMessage { @@ -118,8 +117,7 @@ class NotificationService { NotificationMessage message, { bool allowDuplicates = true, }) { - if (!allowDuplicates && - activeMessages.containsWhere((m) => m.text == message.text)) { + if (!allowDuplicates && activeMessages.any((m) => m.text == message.text)) { return false; } activeMessages.add(message); @@ -138,7 +136,7 @@ class NotificationService { } // Add task to dismiss for those that were picked up by UI. - if (activeMessages.containsWhere((element) => element.text == message)) { + if (activeMessages.any((element) => element.text == message)) { toDismiss.addLast(NotificationMessage(message)); newTasks.value++; } diff --git a/packages/devtools_app/lib/src/shared/primitives/utils.dart b/packages/devtools_app/lib/src/shared/primitives/utils.dart index b5e453c47f7..3bc7def40c5 100644 --- a/packages/devtools_app/lib/src/shared/primitives/utils.dart +++ b/packages/devtools_app/lib/src/shared/primitives/utils.dart @@ -1007,15 +1007,6 @@ extension ListExtension on List { ]; } - bool containsWhere(bool Function(T element) test) { - for (final e in this) { - if (test(e)) { - return true; - } - } - return false; - } - T get second => this[1]; T get third => this[2]; @@ -1039,15 +1030,6 @@ extension NullableListExtension on List? { } extension SetExtension on Set { - bool containsWhere(bool Function(T element) test) { - for (final e in this) { - if (test(e)) { - return true; - } - } - return false; - } - bool containsAny(Iterable any) { for (final e in any) { if (contains(e)) { diff --git a/packages/devtools_app/test/shared/primitives/utils_test.dart b/packages/devtools_app/test/shared/primitives/utils_test.dart index 2b5fe4733be..c1c2f037b18 100644 --- a/packages/devtools_app/test/shared/primitives/utils_test.dart +++ b/packages/devtools_app/test/shared/primitives/utils_test.dart @@ -1067,27 +1067,6 @@ void main() { expect(['a', 'b'].joinWith('z'), equals(['a', 'z', 'b'])); }); - test('containsWhere', () { - final list = [1, 2, 1, 2, 3, 4]; - expect(list.containsWhere((element) => element == 1), isTrue); - expect(list.containsWhere((element) => element == 5), isFalse); - expect(list.containsWhere((element) => element + 2 == 3), isTrue); - - final otherList = ['hi', 'hey', 'foo', 'bar']; - expect( - otherList.containsWhere((element) => element.contains('h')), - isTrue, - ); - expect( - otherList.containsWhere((element) => element.startsWith('ba')), - isTrue, - ); - expect( - otherList.containsWhere((element) => element.endsWith('ba')), - isFalse, - ); - }); - test('allIndicesWhere', () { final list = [1, 2, 1, 2, 3, 4]; expect(list.allIndicesWhere((element) => element.isEven), [1, 3, 5]); @@ -1108,25 +1087,13 @@ void main() { }); group('SetExtension', () { - test('containsWhere', () { - final set = {1, 2, 3, 4}; - expect(set.containsWhere((element) => element == 1), isTrue); - expect(set.containsWhere((element) => element == 5), isFalse); - expect(set.containsWhere((element) => element + 2 == 3), isTrue); - - final otherSet = {'hi', 'hey', 'foo', 'bar'}; - expect( - otherSet.containsWhere((element) => element.contains('h')), - isTrue, - ); - expect( - otherSet.containsWhere((element) => element.startsWith('ba')), - isTrue, - ); - expect( - otherSet.containsWhere((element) => element.endsWith('ba')), - isFalse, - ); + test('containsAny', () { + final test = {1, 2, 3, 4}; + final subSet = {1, 2}; + final disjointSet = {5, 6, 7}; + expect(test.containsAny(test), true); + expect(test.containsAny(subSet), true); + expect(test.containsAny(disjointSet), false); }); }); From 2ebc6ac692f349b5eca4f2a175ea187ef15ecca1 Mon Sep 17 00:00:00 2001 From: Kenzie Schmoll Date: Tue, 23 Jul 2024 15:05:03 -0700 Subject: [PATCH 2/2] formatting --- .../devtools_app/lib/src/extensions/extension_service.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/devtools_app/lib/src/extensions/extension_service.dart b/packages/devtools_app/lib/src/extensions/extension_service.dart index 3008c29b620..e393c1f3f7d 100644 --- a/packages/devtools_app/lib/src/extensions/extension_service.dart +++ b/packages/devtools_app/lib/src/extensions/extension_service.dart @@ -232,8 +232,8 @@ class ExtensionService extends DisposableController // _should_ be unique since they match a pub package name, but this may // not always be true for extensions that are not published on pub or // extensions that do not follow best practices for naming. - final isRuntimeDuplicate = runtimeExtensions - .any((ext) => ext.name == staticExtension.name); + final isRuntimeDuplicate = + runtimeExtensions.any((ext) => ext.name == staticExtension.name); if (isRuntimeDuplicate) { _log.fine( 'ignoring duplicate static extension ${staticExtension.identifier} '