From 1cd3a9103790bbff0aef4cb29cb69038241fb7c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Ku=C3=9Fowski?= Date: Thu, 19 Feb 2026 08:53:18 +0100 Subject: [PATCH] refactor: Avoid unnecessary bool comparison --- analysis_options.yaml | 6 +++++- lib/pages/bootstrap/bootstrap_dialog.dart | 3 +-- lib/pages/chat/chat.dart | 6 +++--- lib/pages/chat/chat_input_row.dart | 2 +- lib/pages/chat/chat_view.dart | 2 +- lib/pages/chat/events/audio_player.dart | 2 +- lib/pages/chat/recording_view_model.dart | 4 ++-- .../chat_access_settings_controller.dart | 2 +- lib/pages/chat_list/chat_list.dart | 12 +++++------- lib/pages/chat_list/status_msg_list.dart | 2 +- lib/pages/image_viewer/image_viewer.dart | 2 +- lib/pages/image_viewer/video_player.dart | 2 +- lib/pages/settings/settings.dart | 2 +- .../flutter_matrix_dart_sdk_database/cipher.dart | 2 +- lib/utils/voip_plugin.dart | 2 +- 15 files changed, 26 insertions(+), 25 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index 8bb726c09..0e1a55c5c 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -23,4 +23,8 @@ analyzer: dart_code_linter: rules: - avoid-dynamic - - avoid-redundant-async \ No newline at end of file + - avoid-redundant-async + - avoid-unnecessary-type-assertions + - avoid-unnecessary-type-casts + - avoid-unrelated-type-assertions + - no-boolean-literal-compare \ No newline at end of file diff --git a/lib/pages/bootstrap/bootstrap_dialog.dart b/lib/pages/bootstrap/bootstrap_dialog.dart index 592bb3e85..aa1d1dc69 100644 --- a/lib/pages/bootstrap/bootstrap_dialog.dart +++ b/lib/pages/bootstrap/bootstrap_dialog.dart @@ -161,8 +161,7 @@ class BootstrapDialogState extends State { Widget body = const Center(child: CircularProgressIndicator.adaptive()); titleText = L10n.of(context).loadingPleaseWait; - if (bootstrap.newSsssKey?.recoveryKey != null && - _recoveryKeyStored == false) { + if (bootstrap.newSsssKey?.recoveryKey != null && _recoveryKeyStored) { final key = bootstrap.newSsssKey!.recoveryKey; titleText = L10n.of(context).recoveryKey; return LoginScaffold( diff --git a/lib/pages/chat/chat.dart b/lib/pages/chat/chat.dart index 15b36b982..88eed4d25 100644 --- a/lib/pages/chat/chat.dart +++ b/lib/pages/chat/chat.dart @@ -249,9 +249,9 @@ class ChatController extends State } if (!scrollController.hasClients) return; if (timeline?.allowNewEvent == false || - scrollController.position.pixels > 0 && _scrolledUp == false) { + scrollController.position.pixels > 0 && _scrolledUp) { setState(() => _scrolledUp = true); - } else if (scrollController.position.pixels <= 0 && _scrolledUp == true) { + } else if (scrollController.position.pixels <= 0 && _scrolledUp) { setState(() => _scrolledUp = false); setReadMarker(); } @@ -919,7 +919,7 @@ class ChatController extends State final clients = Matrix.of(context).currentBundle; for (final event in selectedEvents) { if (!event.status.isSent) return false; - if (event.canRedact == false && + if (event.canRedact && !(clients!.any((cl) => event.senderId == cl!.userID))) { return false; } diff --git a/lib/pages/chat/chat_input_row.dart b/lib/pages/chat/chat_input_row.dart index 90173d233..848e51c88 100644 --- a/lib/pages/chat/chat_input_row.dart +++ b/lib/pages/chat/chat_input_row.dart @@ -317,7 +317,7 @@ class ChatInputRow extends StatelessWidget { autofocus: !PlatformInfos.isMobile, keyboardType: TextInputType.multiline, textInputAction: - AppSettings.sendOnEnter.value == true && + AppSettings.sendOnEnter.value && PlatformInfos.isMobile ? TextInputAction.send : null, diff --git a/lib/pages/chat/chat_view.dart b/lib/pages/chat/chat_view.dart index 23e0b8add..c22d9e4dd 100644 --- a/lib/pages/chat/chat_view.dart +++ b/lib/pages/chat/chat_view.dart @@ -364,7 +364,7 @@ class ChatView extends StatelessWidget { ? theme.colorScheme.tertiaryContainer : theme.colorScheme.surfaceContainerHigh, borderRadius: BorderRadius.circular(32), - child: controller.room.isAbandonedDMRoom == true + child: controller.room.isAbandonedDMRoom ? Row( mainAxisAlignment: .spaceEvenly, children: [ diff --git a/lib/pages/chat/events/audio_player.dart b/lib/pages/chat/events/audio_player.dart index fd631cbc1..b6890b544 100644 --- a/lib/pages/chat/events/audio_player.dart +++ b/lib/pages/chat/events/audio_player.dart @@ -179,7 +179,7 @@ class AudioPlayerState extends State { matrixFile.mimeType.toLowerCase() == 'audio/ogg') { Logs().v('Convert ogg audio file for iOS...'); final convertedFile = File('${file.path}.caf'); - if (await convertedFile.exists() == false) { + if (await convertedFile.exists()) { OpusCaf().convertOpusToCaf(file.path, convertedFile.path); } file = convertedFile; diff --git a/lib/pages/chat/recording_view_model.dart b/lib/pages/chat/recording_view_model.dart index 65d7caa1b..815d8b113 100644 --- a/lib/pages/chat/recording_view_model.dart +++ b/lib/pages/chat/recording_view_model.dart @@ -55,7 +55,7 @@ class RecordingViewModelState extends State { return; } } - if (await AudioRecorder().hasPermission() == false) return; + if (await AudioRecorder().hasPermission()) return; final audioRecorder = _audioRecorder ??= AudioRecorder(); setState(() {}); @@ -76,7 +76,7 @@ class RecordingViewModelState extends State { } final result = await audioRecorder.hasPermission(); - if (result != true) { + if (!result) { showOkAlertDialog( context: context, title: L10n.of(context).oopsSomethingWentWrong, diff --git a/lib/pages/chat_access_settings/chat_access_settings_controller.dart b/lib/pages/chat_access_settings/chat_access_settings_controller.dart index 4161099fd..95e95e92e 100644 --- a/lib/pages/chat_access_settings/chat_access_settings_controller.dart +++ b/lib/pages/chat_access_settings/chat_access_settings_controller.dart @@ -320,7 +320,7 @@ class ChatAccessSettingsController extends State { try { await room.client.setRoomVisibilityOnDirectory( room.id, - visibility: visibility == true ? Visibility.public : Visibility.private, + visibility: visibility ? Visibility.public : Visibility.private, ); setState(() {}); } catch (e, s) { diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart index aae3a10cc..9041daf27 100644 --- a/lib/pages/chat_list/chat_list.dart +++ b/lib/pages/chat_list/chat_list.dart @@ -168,9 +168,8 @@ class ChatListController extends State initialText: searchServer, keyboardType: TextInputType.url, autocorrect: false, - validator: (server) => server.contains('.') == true - ? null - : L10n.of(context).invalidServerName, + validator: (server) => + server.contains('.') ? null : L10n.of(context).invalidServerName, ); if (newServer == null) return; Matrix.of(context).store.setString(_serverStoreNamespace, newServer); @@ -203,10 +202,9 @@ class ChatListController extends State if (searchQuery.isValidMatrixId && searchQuery.sigil == '#' && - roomSearchResult.chunk.any( - (room) => room.canonicalAlias == searchQuery, - ) == - false) { + !roomSearchResult.chunk.any( + (room) => room.canonicalAlias == searchQuery, + )) { final response = await client.getRoomIdByAlias(searchQuery); final roomId = response.roomId; if (roomId != null) { diff --git a/lib/pages/chat_list/status_msg_list.dart b/lib/pages/chat_list/status_msg_list.dart index 7677e031f..d89e75d4f 100644 --- a/lib/pages/chat_list/status_msg_list.dart +++ b/lib/pages/chat_list/status_msg_list.dart @@ -314,7 +314,7 @@ extension on CachedPresence { ? DateTime.now() : DateTime.fromMillisecondsSinceEpoch(0)); - LinearGradient get gradient => presence.isOnline == true + LinearGradient get gradient => presence.isOnline ? LinearGradient( colors: [Colors.green, Colors.green.shade200, Colors.green.shade900], begin: Alignment.topLeft, diff --git a/lib/pages/image_viewer/image_viewer.dart b/lib/pages/image_viewer/image_viewer.dart index 1dba46b28..18b73324d 100644 --- a/lib/pages/image_viewer/image_viewer.dart +++ b/lib/pages/image_viewer/image_viewer.dart @@ -110,7 +110,7 @@ class ImageViewerController extends State { /// Go back if user swiped it away void onInteractionEnds(ScaleEndDetails endDetails) { - if (PlatformInfos.usesTouchscreen == false) { + if (!PlatformInfos.usesTouchscreen) { if (endDetails.velocity.pixelsPerSecond.dy > MediaQuery.sizeOf(context).height * maxScaleFactor) { Navigator.of(context, rootNavigator: false).pop(); diff --git a/lib/pages/image_viewer/video_player.dart b/lib/pages/image_viewer/video_player.dart index 5ca9fcc2b..3c8c57925 100644 --- a/lib/pages/image_viewer/video_player.dart +++ b/lib/pages/image_viewer/video_player.dart @@ -73,7 +73,7 @@ class EventVideoPlayerState extends State { widget.event.attachmentOrThumbnailMxcUrl()!.pathSegments.last, ); final file = File('${tempDir.path}/${fileName}_${videoFile.name}'); - if (await file.exists() == false) { + if (!await file.exists()) { await file.writeAsBytes(videoFile.bytes); } videoPlayerController = VideoPlayerController.file(file); diff --git a/lib/pages/settings/settings.dart b/lib/pages/settings/settings.dart index e3c1146f4..a54b4205f 100644 --- a/lib/pages/settings/settings.dart +++ b/lib/pages/settings/settings.dart @@ -172,7 +172,7 @@ class SettingsController extends State { final needsBootstrap = await client.encryption?.keyManager.isCached() == false || client.encryption?.crossSigning.enabled == false || - crossSigning == false; + !crossSigning; final isUnknownSession = client.isUnknownSession; setState(() { showChatBackupBanner = needsBootstrap || isUnknownSession; diff --git a/lib/utils/matrix_sdk_extensions/flutter_matrix_dart_sdk_database/cipher.dart b/lib/utils/matrix_sdk_extensions/flutter_matrix_dart_sdk_database/cipher.dart index a91c79f20..775c98dd8 100644 --- a/lib/utils/matrix_sdk_extensions/flutter_matrix_dart_sdk_database/cipher.dart +++ b/lib/utils/matrix_sdk_extensions/flutter_matrix_dart_sdk_database/cipher.dart @@ -50,7 +50,7 @@ Future getDatabaseCipher() async { void _sendNoEncryptionWarning(Object exception) async { final isStored = AppSettings.noEncryptionWarningShown.value; - if (isStored == true) return; + if (isStored) return; final l10n = await lookupL10n(PlatformDispatcher.instance.locale); ClientManager.sendInitNotification( diff --git a/lib/utils/voip_plugin.dart b/lib/utils/voip_plugin.dart index adef19dd6..62e729baa 100644 --- a/lib/utils/voip_plugin.dart +++ b/lib/utils/voip_plugin.dart @@ -117,7 +117,7 @@ class VoipPlugin with WidgetsBindingObserver implements WebRTCDelegate { await matrix.store.setString( 'wasForeground', - wasForeground == true ? 'true' : 'false', + wasForeground ? 'true' : 'false', ); FlutterForegroundTask.setOnLockScreenVisibility(true); FlutterForegroundTask.wakeUpScreen();