duplicate_files.dart 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import 'dart:convert';
  2. import 'package:photos/models/file.dart';
  3. import 'package:photos/services/collections_service.dart';
  4. class DuplicateFilesResponse {
  5. final List<DuplicateItems> duplicates;
  6. DuplicateFilesResponse(this.duplicates);
  7. factory DuplicateFilesResponse.fromMap(Map<String, dynamic> map) {
  8. return DuplicateFilesResponse(
  9. List<DuplicateItems>.from(
  10. map['duplicates']?.map((x) => DuplicateItems.fromMap(x)),
  11. ),
  12. );
  13. }
  14. factory DuplicateFilesResponse.fromJson(String source) =>
  15. DuplicateFilesResponse.fromMap(json.decode(source));
  16. @override
  17. String toString() => 'DuplicateFiles(duplicates: $duplicates)';
  18. }
  19. class DuplicateItems {
  20. final List<int> fileIDs;
  21. final int size;
  22. DuplicateItems(this.fileIDs, this.size);
  23. factory DuplicateItems.fromMap(Map<String, dynamic> map) {
  24. return DuplicateItems(
  25. List<int>.from(map['fileIDs']),
  26. map['size'],
  27. );
  28. }
  29. factory DuplicateItems.fromJson(String source) =>
  30. DuplicateItems.fromMap(json.decode(source));
  31. @override
  32. String toString() => 'Duplicates(fileIDs: $fileIDs, size: $size)';
  33. }
  34. class DuplicateFiles {
  35. final List<EnteFile> files;
  36. final int size;
  37. static final collectionsService = CollectionsService.instance;
  38. DuplicateFiles(this.files, this.size) {
  39. sortByCollectionName();
  40. }
  41. @override
  42. String toString() => 'DuplicateFiles(files: $files, size: $size)';
  43. sortByCollectionName() {
  44. files.sort((first, second) {
  45. final firstName = collectionsService
  46. .getCollectionByID(first.collectionID!)!
  47. .displayName;
  48. final secondName = collectionsService
  49. .getCollectionByID(second.collectionID!)!
  50. .displayName;
  51. return firstName.compareTo(secondName);
  52. });
  53. }
  54. }