ente/lib/models/selected_files.dart
Neeraj Gupta b2d3cc9946
minor fix
2022-06-29 15:13:22 +05:30

48 lines
1.3 KiB
Dart

import 'package:flutter/foundation.dart';
import 'package:photos/models/file.dart';
class SelectedFiles extends ChangeNotifier {
final files = <File>{};
final lastSelections = <File>{};
void toggleSelection(File file) {
// To handle the cases, where the file might have changed due to upload
// or any other update, using file.generatedID to track if this file was already
// selected or not
File alreadySelected = files.firstWhere(
(element) => element.generatedID == file.generatedID,
orElse: () => null,
);
if (alreadySelected != null) {
files.remove(alreadySelected);
} else {
files.add(file);
}
lastSelections.clear();
lastSelections.add(file);
notifyListeners();
}
bool isFileSelected(File file) {
File alreadySelected = files.firstWhere(
(element) => element.generatedID == file.generatedID,
orElse: () => null,
);
return alreadySelected != null;
}
bool isPartOfLastSection(File file) {
File alreadySelected = lastSelections.firstWhere(
(element) => element.generatedID == file.generatedID,
orElse: () => null,
);
return alreadySelected != null;
}
void clearAll() {
lastSelections.addAll(files);
files.clear();
notifyListeners();
}
}