duplicate_files.dart 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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<File> 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 =
  46. collectionsService.getCollectionNameByID(first.collectionID);
  47. final secondName =
  48. collectionsService.getCollectionNameByID(second.collectionID);
  49. return firstName.compareTo(secondName);
  50. });
  51. }
  52. }