backup_state.model.dart 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import 'package:dio/dio.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> allAssetOnDatabase;
  11. final double progressInPercentage;
  12. final CancelToken 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.allAssetOnDatabase,
  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>? allAssetOnDatabase,
  37. double? progressInPercentage,
  38. CancelToken? 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. allAssetOnDatabase: allAssetOnDatabase ?? this.allAssetOnDatabase,
  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: selectedAlbumsBackupAssetsIds ?? this.selectedAlbumsBackupAssetsIds,
  57. );
  58. }
  59. @override
  60. String toString() {
  61. return 'BackUpState(backupProgress: $backupProgress, allAssetOnDatabase: $allAssetOnDatabase, progressInPercentage: $progressInPercentage, cancelToken: $cancelToken, serverInfo: $serverInfo, availableAlbums: $availableAlbums, selectedBackupAlbums: $selectedBackupAlbums, excludedBackupAlbums: $excludedBackupAlbums, allUniqueAssets: $allUniqueAssets, selectedAlbumsBackupAssetsIds: $selectedAlbumsBackupAssetsIds)';
  62. }
  63. @override
  64. List<Object> get props {
  65. return [
  66. backupProgress,
  67. allAssetOnDatabase,
  68. progressInPercentage,
  69. cancelToken,
  70. serverInfo,
  71. availableAlbums,
  72. selectedBackupAlbums,
  73. excludedBackupAlbums,
  74. allUniqueAssets,
  75. selectedAlbumsBackupAssetsIds,
  76. ];
  77. }
  78. }