forked from Cutlery/immich
		
	* 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;
 | 
						|
  }
 | 
						|
}
 |