Enhance delete on iOS

This commit is contained in:
Vishnu Mohandas 2021-06-28 22:02:29 +05:30
parent 248746c45f
commit b9f59c6ae3
2 changed files with 20 additions and 11 deletions

View file

@ -7,6 +7,7 @@ import 'package:photos/ui/common_elements.dart';
import 'package:photos/utils/data_util.dart';
import 'package:photos/utils/delete_file_util.dart';
import 'package:photos/utils/dialog_util.dart';
import 'package:photos/utils/toast_util.dart';
class FreeSpacePage extends StatefulWidget {
final BackupStatus status;
@ -155,7 +156,11 @@ class _FreeSpacePageState extends State<FreeSpacePage> {
}
Future<void> _freeStorage(BackupStatus status) async {
await deleteLocalFiles(context, status.localIDs);
Navigator.of(context).pop(true);
final result = await deleteLocalFiles(context, status.localIDs);
if (result) {
Navigator.of(context).pop(true);
} else {
showToast("could not free up space");
}
}
}

View file

@ -140,13 +140,13 @@ Future<void> deleteFilesOnDeviceOnly(
await dialog.hide();
}
Future<void> deleteLocalFiles(
Future<bool> deleteLocalFiles(
BuildContext context, List<String> localIDs) async {
List<String> deletedIDs = [];
final List<String> deletedIDs = [];
if (Platform.isAndroid) {
await _deleteLocalFilesOnAndroid(context, localIDs, deletedIDs);
deletedIDs.addAll(await _deleteLocalFilesOnAndroid(context, localIDs));
} else {
await _deleteLocalFilesOnIOS(context, localIDs, deletedIDs);
deletedIDs.addAll(await _deleteLocalFilesOnIOS(context, localIDs));
}
if (deletedIDs.isNotEmpty) {
final deletedFiles = await FilesDB.instance.getLocalFiles(deletedIDs);
@ -154,11 +154,14 @@ Future<void> deleteLocalFiles(
_logger.info(deletedFiles.length.toString() + " files deleted locally");
Bus.instance
.fire(LocalPhotosUpdatedEvent(deletedFiles, type: EventType.deleted));
return true;
} else {
return false;
}
}
Future<void> _deleteLocalFilesOnIOS(BuildContext context, List<String> localIDs,
List<String> deletedIDs) async {
Future<List<String>> _deleteLocalFilesOnIOS(BuildContext context, List<String> localIDs) async {
final List<String> deletedIDs = [];
final dialog = createProgressDialog(context,
"deleting " + localIDs.length.toString() + " backed up files...");
await dialog.show();
@ -168,10 +171,10 @@ Future<void> _deleteLocalFilesOnIOS(BuildContext context, List<String> localIDs,
_logger.severe("Could not delete files ", e, s);
}
await dialog.hide();
return deletedIDs;
}
Future<void> _deleteLocalFilesOnAndroid(BuildContext context,
List<String> localIDs, List<String> deletedIDs) async {
Future<List<String>> _deleteLocalFilesOnAndroid(BuildContext context, List<String> localIDs) async {
final dialogKey = GlobalKey<LinearProgressDialogState>();
final dialog = LinearProgressDialog(
"deleting " + localIDs.length.toString() + " backed up files...",
@ -189,6 +192,7 @@ Future<void> _deleteLocalFilesOnAndroid(BuildContext context,
final batchSize = min(
max(minimumBatchSize, (localIDs.length / minimumParts).round()),
maximumBatchSize);
final List<String> deletedIDs = [];
for (int index = 0; index < localIDs.length; index += batchSize) {
if (dialogKey.currentState != null) {
dialogKey.currentState.setProgress(index / localIDs.length);
@ -212,6 +216,6 @@ Future<void> _deleteLocalFilesOnAndroid(BuildContext context,
}
}
}
Navigator.of(dialogKey.currentContext, rootNavigator: true).pop('dialog');
return deletedIDs;
}