backup_state.model.dart 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import 'package:cancellation_token_http/http.dart';
  2. import 'package:equatable/equatable.dart';
  3. import 'package:photo_manager/photo_manager.dart';
  4. import 'package:immich_mobile/modules/backup/models/available_album.model.dart';
  5. import 'package:immich_mobile/shared/models/server_info.model.dart';
  6. enum BackUpProgressEnum { idle, inProgress, done }
  7. class BackUpState extends Equatable {
  8. // enum
  9. final BackUpProgressEnum backupProgress;
  10. final List<String> allAssetsInDatabase;
  11. final double progressInPercentage;
  12. final CancellationToken cancelToken;
  13. final ServerInfo serverInfo;
  14. /// All available albums on the device
  15. final List<AvailableAlbum> availableAlbums;
  16. final Set<AssetPathEntity> selectedBackupAlbums;
  17. final Set<AssetPathEntity> excludedBackupAlbums;
  18. /// Assets that are not overlapping in selected backup albums and excluded backup albums
  19. final Set<AssetEntity> allUniqueAssets;
  20. /// All assets from the selected albums that have been backup
  21. final Set<String> selectedAlbumsBackupAssetsIds;
  22. const BackUpState({
  23. required this.backupProgress,
  24. required this.allAssetsInDatabase,
  25. required this.progressInPercentage,
  26. required this.cancelToken,
  27. required this.serverInfo,
  28. required this.availableAlbums,
  29. required this.selectedBackupAlbums,
  30. required this.excludedBackupAlbums,
  31. required this.allUniqueAssets,
  32. required this.selectedAlbumsBackupAssetsIds,
  33. });
  34. BackUpState copyWith({
  35. BackUpProgressEnum? backupProgress,
  36. List<String>? allAssetsInDatabase,
  37. double? progressInPercentage,
  38. CancellationToken? cancelToken,
  39. ServerInfo? serverInfo,
  40. List<AvailableAlbum>? availableAlbums,
  41. Set<AssetPathEntity>? selectedBackupAlbums,
  42. Set<AssetPathEntity>? excludedBackupAlbums,
  43. Set<AssetEntity>? allUniqueAssets,
  44. Set<String>? selectedAlbumsBackupAssetsIds,
  45. }) {
  46. return BackUpState(
  47. backupProgress: backupProgress ?? this.backupProgress,
  48. allAssetsInDatabase: allAssetsInDatabase ?? this.allAssetsInDatabase,
  49. progressInPercentage: progressInPercentage ?? this.progressInPercentage,
  50. cancelToken: cancelToken ?? this.cancelToken,
  51. serverInfo: serverInfo ?? this.serverInfo,
  52. availableAlbums: availableAlbums ?? this.availableAlbums,
  53. selectedBackupAlbums: selectedBackupAlbums ?? this.selectedBackupAlbums,
  54. excludedBackupAlbums: excludedBackupAlbums ?? this.excludedBackupAlbums,
  55. allUniqueAssets: allUniqueAssets ?? this.allUniqueAssets,
  56. selectedAlbumsBackupAssetsIds:
  57. selectedAlbumsBackupAssetsIds ?? this.selectedAlbumsBackupAssetsIds,
  58. );
  59. }
  60. @override
  61. String toString() {
  62. return 'BackUpState(backupProgress: $backupProgress, allAssetsInDatabase: $allAssetsInDatabase, progressInPercentage: $progressInPercentage, cancelToken: $cancelToken, serverInfo: $serverInfo, availableAlbums: $availableAlbums, selectedBackupAlbums: $selectedBackupAlbums, excludedBackupAlbums: $excludedBackupAlbums, allUniqueAssets: $allUniqueAssets, selectedAlbumsBackupAssetsIds: $selectedAlbumsBackupAssetsIds)';
  63. }
  64. @override
  65. List<Object> get props {
  66. return [
  67. backupProgress,
  68. allAssetsInDatabase,
  69. progressInPercentage,
  70. cancelToken,
  71. serverInfo,
  72. availableAlbums,
  73. selectedBackupAlbums,
  74. excludedBackupAlbums,
  75. allUniqueAssets,
  76. selectedAlbumsBackupAssetsIds,
  77. ];
  78. }
  79. }