From 094d4053fb170fd7113ce132a5cfe24024e89900 Mon Sep 17 00:00:00 2001 From: ashilkn Date: Fri, 28 Jun 2024 18:50:58 +0530 Subject: [PATCH] [mob][photos] unselect all selected items on system back navigation --- mobile/lib/ui/tabs/home_widget.dart | 10 +++++++--- .../actions/file_selection_overlay_bar.dart | 17 +++++++++++++++++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/mobile/lib/ui/tabs/home_widget.dart b/mobile/lib/ui/tabs/home_widget.dart index ddad5073b0..3c902ceb1a 100644 --- a/mobile/lib/ui/tabs/home_widget.dart +++ b/mobile/lib/ui/tabs/home_widget.dart @@ -1,5 +1,5 @@ import 'dart:async'; -import 'dart:io'; +import "dart:io"; import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; @@ -7,9 +7,9 @@ import 'package:flutter/services.dart'; import "package:flutter_animate/flutter_animate.dart"; import "package:flutter_local_notifications/flutter_local_notifications.dart"; import 'package:logging/logging.dart'; -import 'package:media_extension/media_extension_action_types.dart'; +import "package:media_extension/media_extension_action_types.dart"; import 'package:modal_bottom_sheet/modal_bottom_sheet.dart'; -import 'package:move_to_background/move_to_background.dart'; +import "package:move_to_background/move_to_background.dart"; import 'package:photos/core/configuration.dart'; import 'package:photos/core/event_bus.dart'; import 'package:photos/ente_theme_data.dart'; @@ -320,6 +320,10 @@ class _HomeWidgetState extends State { onPopInvoked: (didPop) async { if (didPop) return; if (_selectedTabIndex == 0) { + if (_selectedFiles.files.isNotEmpty) { + _selectedFiles.clearAll(); + return; + } if (isSettingsOpen) { Navigator.pop(context); } else if (Platform.isAndroid && action == IntentAction.main) { diff --git a/mobile/lib/ui/viewer/actions/file_selection_overlay_bar.dart b/mobile/lib/ui/viewer/actions/file_selection_overlay_bar.dart index 608286809c..86d162e316 100644 --- a/mobile/lib/ui/viewer/actions/file_selection_overlay_bar.dart +++ b/mobile/lib/ui/viewer/actions/file_selection_overlay_bar.dart @@ -54,6 +54,23 @@ class _FileSelectionOverlayBarState extends State { '$runtimeType building with ${widget.selectedFiles.files.length}', ); + return widget.galleryType == GalleryType.homepage + ? _body() + : PopScope( + canPop: false, + onPopInvoked: (didPop) { + if (!didPop) { + if (widget.selectedFiles.files.isEmpty) { + Navigator.of(context).pop(); + } + widget.selectedFiles.clearAll(); + } + }, + child: _body(), + ); + } + + Widget _body() { return ValueListenableBuilder( valueListenable: _hasSelectedFilesNotifier, builder: (context, value, child) {