mirror of
https://github.com/immich-app/immich.git
synced 2025-11-21 09:20:40 +09:00
Some checks are pending
CodeQL / Analyze (javascript) (push) Waiting to run
CodeQL / Analyze (python) (push) Waiting to run
Docker / pre-job (push) Waiting to run
Docker / Re-Tag ML () (push) Blocked by required conditions
Docker / Re-Tag ML (-armnn) (push) Blocked by required conditions
Docker / Re-Tag ML (-cuda) (push) Blocked by required conditions
Docker / Re-Tag ML (-openvino) (push) Blocked by required conditions
Docker / Re-Tag ML (-rknn) (push) Blocked by required conditions
Docker / Re-Tag ML (-rocm) (push) Blocked by required conditions
Docker / Re-Tag Server () (push) Blocked by required conditions
Docker / Build and Push ML (armnn, linux/arm64, -armnn) (push) Blocked by required conditions
Docker / Build and Push ML (cpu, ) (push) Blocked by required conditions
Docker / Build and Push ML (cuda, linux/amd64, -cuda) (push) Blocked by required conditions
Docker / Build and Push ML (openvino, linux/amd64, -openvino) (push) Blocked by required conditions
Docker / Build and Push ML (rknn, linux/arm64, -rknn) (push) Blocked by required conditions
Docker / Build and Push ML (rocm, linux/amd64, {"linux/amd64": "mich"}, -rocm) (push) Blocked by required conditions
Docker / Build and Push Server (push) Blocked by required conditions
Docker / Docker Build & Push Server Success (push) Blocked by required conditions
Docker / Docker Build & Push ML Success (push) Blocked by required conditions
Docs build / pre-job (push) Waiting to run
Docs build / Docs Build (push) Blocked by required conditions
Static Code Analysis / pre-job (push) Waiting to run
Static Code Analysis / Run Dart Code Analysis (push) Blocked by required conditions
Static Code Analysis / zizmor (push) Waiting to run
Test / pre-job (push) Waiting to run
Test / Test & Lint Server (push) Blocked by required conditions
Test / Unit Test CLI (push) Blocked by required conditions
Test / Unit Test CLI (Windows) (push) Blocked by required conditions
Test / Lint Web (push) Blocked by required conditions
Test / Test Web (push) Blocked by required conditions
Test / Test i18n (push) Blocked by required conditions
Test / End-to-End Lint (push) Blocked by required conditions
Test / Medium Tests (Server) (push) Blocked by required conditions
Test / End-to-End Tests (Server & CLI) (ubuntu-24.04-arm) (push) Blocked by required conditions
Test / End-to-End Tests (Server & CLI) (ubuntu-latest) (push) Blocked by required conditions
Test / End-to-End Tests (Web) (ubuntu-24.04-arm) (push) Blocked by required conditions
Test / End-to-End Tests (Web) (ubuntu-latest) (push) Blocked by required conditions
Test / End-to-End Tests Success (push) Blocked by required conditions
Test / Unit Test Mobile (push) Blocked by required conditions
Test / Unit Test ML (push) Blocked by required conditions
Test / .github Files Formatting (push) Blocked by required conditions
Test / ShellCheck (push) Waiting to run
Test / OpenAPI Clients (push) Waiting to run
Test / SQL Schema Checks (push) Waiting to run
* feat(mobile): add bulk download functionality and update UI messages - Added `downloadAll` method to `IDownloadRepository` and its implementation in `DownloadRepository` to handle multiple asset downloads. - Implemented `downloadAllAsset` in `DownloadStateNotifier` to trigger bulk downloads. - Updated `DownloadService` to create download tasks for all selected assets. - Enhanced UI with new download success and failure messages in `en.json`. - Added download button to `ControlBottomAppBar` and integrated download functionality in `MultiselectGrid`. * translations use i18n method t() * Update mobile/lib/services/download.service.dart Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com> * fix(mobile): update download logic in DownloadService - Changed the download method to utilize downloadAll for handling multiple tasks. - Simplified remoteId check by removing unnecessary condition. * sort i18n keys * remove the download signature from interface and logic as we use the downloadAll now --------- Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com>
57 lines
1.6 KiB
Dart
57 lines
1.6 KiB
Dart
import 'package:immich_mobile/entities/asset.entity.dart';
|
|
|
|
class AssetSelectionState {
|
|
final bool hasRemote;
|
|
final bool hasLocal;
|
|
final bool hasMerged;
|
|
final int selectedCount;
|
|
|
|
const AssetSelectionState({
|
|
this.hasRemote = false,
|
|
this.hasLocal = false,
|
|
this.hasMerged = false,
|
|
this.selectedCount = 0,
|
|
});
|
|
|
|
AssetSelectionState copyWith({
|
|
bool? hasRemote,
|
|
bool? hasLocal,
|
|
bool? hasMerged,
|
|
int? selectedCount,
|
|
}) {
|
|
return AssetSelectionState(
|
|
hasRemote: hasRemote ?? this.hasRemote,
|
|
hasLocal: hasLocal ?? this.hasLocal,
|
|
hasMerged: hasMerged ?? this.hasMerged,
|
|
selectedCount: selectedCount ?? this.selectedCount,
|
|
);
|
|
}
|
|
|
|
AssetSelectionState.fromSelection(Set<Asset> selection)
|
|
: hasLocal = selection.any((e) => e.storage == AssetState.local),
|
|
hasMerged = selection.any((e) => e.storage == AssetState.merged),
|
|
hasRemote = selection.any((e) => e.storage == AssetState.remote),
|
|
selectedCount = selection.length;
|
|
|
|
@override
|
|
String toString() =>
|
|
'SelectionAssetState(hasRemote: $hasRemote, hasLocal: $hasLocal, hasMerged: $hasMerged, selectedCount: $selectedCount)';
|
|
|
|
@override
|
|
bool operator ==(covariant AssetSelectionState other) {
|
|
if (identical(this, other)) return true;
|
|
|
|
return other.hasRemote == hasRemote &&
|
|
other.hasLocal == hasLocal &&
|
|
other.hasMerged == hasMerged &&
|
|
other.selectedCount == selectedCount;
|
|
}
|
|
|
|
@override
|
|
int get hashCode =>
|
|
hasRemote.hashCode ^
|
|
hasLocal.hashCode ^
|
|
hasMerged.hashCode ^
|
|
selectedCount.hashCode;
|
|
}
|