mirror of
				https://github.com/immich-app/immich.git
				synced 2025-10-30 10:12:33 -04:00 
			
		
		
		
	* fix: exclude albums filter in backup provider * refactor: Separate builder methods for Top Control App Bar buttons * fix: Show download button only for Remote only assets * fix(mobile): Force Refresh duration is too low to trigger it consistently * feat(mobile): Make Buttons dynamic in Home Selection DraggableScrollableSheet * feat(mobile): Manual Asset upload * refactor(mobile): Replace _showToast with ImmichToast calls * refactor(mobile): home_page selectionAssetState handling * chore(mobile): min and initial size of DraggableScrollState increased This is to prevent the buttons in the bottom sheet getting clipped behind the 3 way navigation buttons in the default density of Android devices * feat(mobile): notifications for manual upload progress * wording --------- Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
		
			
				
	
	
		
			72 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
| import 'package:cancellation_token_http/http.dart';
 | |
| import 'package:immich_mobile/modules/backup/models/current_upload_asset.model.dart';
 | |
| 
 | |
| class ManualUploadState {
 | |
|   final CancellationToken cancelToken;
 | |
| 
 | |
|   final double progressInPercentage;
 | |
| 
 | |
|   // Current Backup Asset
 | |
|   final CurrentUploadAsset currentUploadAsset;
 | |
| 
 | |
|   /// Manual Upload
 | |
|   final int manualUploadsTotal;
 | |
|   final int manualUploadFailures;
 | |
|   final int manualUploadSuccess;
 | |
| 
 | |
|   const ManualUploadState({
 | |
|     required this.progressInPercentage,
 | |
|     required this.cancelToken,
 | |
|     required this.currentUploadAsset,
 | |
|     required this.manualUploadsTotal,
 | |
|     required this.manualUploadFailures,
 | |
|     required this.manualUploadSuccess,
 | |
|   });
 | |
| 
 | |
|   ManualUploadState copyWith({
 | |
|     double? progressInPercentage,
 | |
|     CancellationToken? cancelToken,
 | |
|     CurrentUploadAsset? currentUploadAsset,
 | |
|     int? manualUploadsTotal,
 | |
|     int? manualUploadFailures,
 | |
|     int? manualUploadSuccess,
 | |
|   }) {
 | |
|     return ManualUploadState(
 | |
|       progressInPercentage: progressInPercentage ?? this.progressInPercentage,
 | |
|       cancelToken: cancelToken ?? this.cancelToken,
 | |
|       currentUploadAsset: currentUploadAsset ?? this.currentUploadAsset,
 | |
|       manualUploadsTotal: manualUploadsTotal ?? this.manualUploadsTotal,
 | |
|       manualUploadFailures: manualUploadFailures ?? this.manualUploadFailures,
 | |
|       manualUploadSuccess: manualUploadSuccess ?? this.manualUploadSuccess,
 | |
|     );
 | |
|   }
 | |
| 
 | |
|   @override
 | |
|   String toString() {
 | |
|     return 'ManualUploadState(progressInPercentage: $progressInPercentage, cancelToken: $cancelToken, currentUploadAsset: $currentUploadAsset, manualUploadsTotal: $manualUploadsTotal, manualUploadSuccess: $manualUploadSuccess, manualUploadFailures: $manualUploadFailures)';
 | |
|   }
 | |
| 
 | |
|   @override
 | |
|   bool operator ==(Object other) {
 | |
|     if (identical(this, other)) return true;
 | |
| 
 | |
|     return other is ManualUploadState &&
 | |
|         other.progressInPercentage == progressInPercentage &&
 | |
|         other.cancelToken == cancelToken &&
 | |
|         other.currentUploadAsset == currentUploadAsset &&
 | |
|         other.manualUploadsTotal == manualUploadsTotal &&
 | |
|         other.manualUploadFailures == manualUploadFailures &&
 | |
|         other.manualUploadSuccess == manualUploadSuccess;
 | |
|   }
 | |
| 
 | |
|   @override
 | |
|   int get hashCode {
 | |
|     return progressInPercentage.hashCode ^
 | |
|         cancelToken.hashCode ^
 | |
|         currentUploadAsset.hashCode ^
 | |
|         manualUploadsTotal.hashCode ^
 | |
|         manualUploadFailures.hashCode ^
 | |
|         manualUploadSuccess.hashCode;
 | |
|   }
 | |
| }
 |