diff --git a/app/lib/widget/handler/remove_selection_handler.dart b/app/lib/widget/handler/remove_selection_handler.dart index 3959abcb..6b06dbe5 100644 --- a/app/lib/widget/handler/remove_selection_handler.dart +++ b/app/lib/widget/handler/remove_selection_handler.dart @@ -1,16 +1,12 @@ import 'package:flutter/material.dart'; -import 'package:kiwi/kiwi.dart'; import 'package:logging/logging.dart'; import 'package:nc_photos/account.dart'; import 'package:nc_photos/app_localizations.dart'; -import 'package:nc_photos/debug_util.dart'; -import 'package:nc_photos/di_container.dart'; +import 'package:nc_photos/controller/files_controller.dart'; import 'package:nc_photos/entity/file_descriptor.dart'; import 'package:nc_photos/k.dart' as k; import 'package:nc_photos/navigation_manager.dart'; import 'package:nc_photos/snack_bar_manager.dart'; -import 'package:nc_photos/use_case/inflate_file_descriptor.dart'; -import 'package:nc_photos/use_case/remove.dart'; import 'package:nc_photos/widget/trashbin_browser.dart'; import 'package:np_codegen/np_codegen.dart'; @@ -18,11 +14,9 @@ part 'remove_selection_handler.g.dart'; @npLog class RemoveSelectionHandler { - RemoveSelectionHandler(this._c) - : assert(require(_c)), - assert(InflateFileDescriptor.require(_c)); - - static bool require(DiContainer c) => true; + const RemoveSelectionHandler({ + required this.filesController, + }); /// Remove [selectedFiles] and return the removed count Future call({ @@ -31,44 +25,25 @@ class RemoveSelectionHandler { bool shouldCleanupAlbum = true, bool isRemoveOpened = false, bool isMoveToTrash = false, - bool shouldShowProcessingText = true, }) async { - final selectedFiles = await InflateFileDescriptor(_c)(account, selection); - final String processingText, successText; + final String successText; final String Function(int) failureText; if (isRemoveOpened) { - processingText = L10n.global().deleteProcessingNotification; successText = L10n.global().deleteSuccessNotification; failureText = (_) => L10n.global().deleteFailureNotification; } else { - processingText = L10n.global() - .deleteSelectedProcessingNotification(selectedFiles.length); successText = L10n.global().deleteSelectedSuccessNotification; failureText = (count) => L10n.global().deleteSelectedFailureNotification(count); } - if (shouldShowProcessingText) { - SnackBarManager().showSnackBar( - SnackBar( - content: Text(processingText), - duration: k.snackBarDurationShort, - ), - canBeReplaced: true, - ); - } var failureCount = 0; - await Remove(KiwiContainer().resolve())( - account, - selectedFiles, - onError: (_, file, e, stackTrace) { - _log.shout( - "[call] Failed while removing file: ${logFilename(file.fdPath)}", - e, - stackTrace); - ++failureCount; + await filesController.remove( + selection, + errorBuilder: (fileIds) { + failureCount = fileIds.length; + return RemoveFailureError(fileIds); }, - shouldCleanUp: shouldCleanupAlbum, ); final trashAction = isMoveToTrash ? SnackBarAction( @@ -93,8 +68,8 @@ class RemoveSelectionHandler { action: trashAction, )); } - return selectedFiles.length - failureCount; + return selection.length - failureCount; } - final DiContainer _c; + final FilesController filesController; } diff --git a/app/lib/widget/home_photos.dart b/app/lib/widget/home_photos.dart index 40bb1ebc..2e15fec7 100644 --- a/app/lib/widget/home_photos.dart +++ b/app/lib/widget/home_photos.dart @@ -472,7 +472,6 @@ class _HomePhotosState extends State } Future _onSelectionDeletePressed(BuildContext context) async { - final c = KiwiContainer().resolve(); final selectedFiles = selectedListItems .whereType() .map((e) => e.file) @@ -480,7 +479,9 @@ class _HomePhotosState extends State setState(() { clearSelectedItems(); }); - await RemoveSelectionHandler(c)( + await RemoveSelectionHandler( + filesController: context.read().filesController, + )( account: widget.account, selection: selectedFiles, isMoveToTrash: true, diff --git a/app/lib/widget/home_search.dart b/app/lib/widget/home_search.dart index d908d52c..af03b86e 100644 --- a/app/lib/widget/home_search.dart +++ b/app/lib/widget/home_search.dart @@ -8,6 +8,7 @@ import 'package:logging/logging.dart'; import 'package:nc_photos/account.dart'; import 'package:nc_photos/app_localizations.dart'; import 'package:nc_photos/bloc/search.dart'; +import 'package:nc_photos/controller/account_controller.dart'; import 'package:nc_photos/di_container.dart'; import 'package:nc_photos/download_handler.dart'; import 'package:nc_photos/entity/file_descriptor.dart'; @@ -492,7 +493,6 @@ class _HomeSearchState extends State } Future _onSelectionDeletePressed(BuildContext context) async { - final c = KiwiContainer().resolve(); final selectedFiles = selectedListItems .whereType() .map((e) => e.file) @@ -500,7 +500,9 @@ class _HomeSearchState extends State setState(() { clearSelectedItems(); }); - await RemoveSelectionHandler(c)( + await RemoveSelectionHandler( + filesController: context.read().filesController, + )( account: widget.account, selection: selectedFiles, isMoveToTrash: true, diff --git a/app/lib/widget/trashbin_browser.dart b/app/lib/widget/trashbin_browser.dart index 5dd05ade..233b28c7 100644 --- a/app/lib/widget/trashbin_browser.dart +++ b/app/lib/widget/trashbin_browser.dart @@ -8,6 +8,7 @@ import 'package:logging/logging.dart'; import 'package:nc_photos/account.dart'; import 'package:nc_photos/app_localizations.dart'; import 'package:nc_photos/bloc/ls_trashbin.dart'; +import 'package:nc_photos/controller/account_controller.dart'; import 'package:nc_photos/debug_util.dart'; import 'package:nc_photos/di_container.dart'; import 'package:nc_photos/entity/file.dart'; @@ -384,8 +385,9 @@ class _TrashbinBrowserState extends State } Future _deleteFiles(List files) async { - final c = KiwiContainer().resolve(); - await RemoveSelectionHandler(c)( + await RemoveSelectionHandler( + filesController: context.read().filesController, + )( account: widget.account, selection: files, shouldCleanupAlbum: false, diff --git a/app/lib/widget/trashbin_viewer.dart b/app/lib/widget/trashbin_viewer.dart index 242216ee..b81dbcf5 100644 --- a/app/lib/widget/trashbin_viewer.dart +++ b/app/lib/widget/trashbin_viewer.dart @@ -1,10 +1,12 @@ import 'dart:async'; import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:kiwi/kiwi.dart'; import 'package:logging/logging.dart'; import 'package:nc_photos/account.dart'; import 'package:nc_photos/app_localizations.dart'; +import 'package:nc_photos/controller/account_controller.dart'; import 'package:nc_photos/debug_util.dart'; import 'package:nc_photos/di_container.dart'; import 'package:nc_photos/entity/file.dart'; @@ -315,10 +317,11 @@ class _TrashbinViewerState extends State { } Future _delete(BuildContext context) async { - final c = KiwiContainer().resolve(); final file = widget.streamFiles[_viewerController.currentPage]; _log.info("[_delete] Removing file: ${file.path}"); - final count = await RemoveSelectionHandler(c)( + final count = await RemoveSelectionHandler( + filesController: context.read().filesController, + )( account: widget.account, selection: [file], shouldCleanupAlbum: false, diff --git a/app/lib/widget/viewer.dart b/app/lib/widget/viewer.dart index 4ed2bce3..3fe49b16 100644 --- a/app/lib/widget/viewer.dart +++ b/app/lib/widget/viewer.dart @@ -646,15 +646,15 @@ class _ViewerState extends State void _onDeletePressed(BuildContext context) { final index = _viewerController.currentPage; - final c = KiwiContainer().resolve(); final file = _streamFilesView[index]; _log.info("[_onDeletePressed] Removing file: ${file.fdPath}"); - unawaited(RemoveSelectionHandler(c)( + unawaited(RemoveSelectionHandler( + filesController: context.read().filesController, + )( account: widget.account, selection: [file], isRemoveOpened: true, isMoveToTrash: true, - shouldShowProcessingText: false, )); _removeCurrentItemFromStream(context, index); }