mirror of
https://github.com/immich-app/immich.git
synced 2024-12-29 11:24:37 +02:00
9b418642a6
* mobile: remove stack selection page * mobile: require at-least 2 assets to stack * mobile: sort stack children by fileCreatedAt --------- Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
57 lines
1.6 KiB
Dart
57 lines
1.6 KiB
Dart
import 'package:immich_mobile/shared/models/asset.dart';
|
|
|
|
class SelectionAssetState {
|
|
final bool hasRemote;
|
|
final bool hasLocal;
|
|
final bool hasMerged;
|
|
final int selectedCount;
|
|
|
|
const SelectionAssetState({
|
|
this.hasRemote = false,
|
|
this.hasLocal = false,
|
|
this.hasMerged = false,
|
|
this.selectedCount = 0,
|
|
});
|
|
|
|
SelectionAssetState copyWith({
|
|
bool? hasRemote,
|
|
bool? hasLocal,
|
|
bool? hasMerged,
|
|
int? selectedCount,
|
|
}) {
|
|
return SelectionAssetState(
|
|
hasRemote: hasRemote ?? this.hasRemote,
|
|
hasLocal: hasLocal ?? this.hasLocal,
|
|
hasMerged: hasMerged ?? this.hasMerged,
|
|
selectedCount: selectedCount ?? this.selectedCount,
|
|
);
|
|
}
|
|
|
|
SelectionAssetState.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, hasMerged: $hasMerged, hasMerged: $hasMerged, selectedCount: $selectedCount)';
|
|
|
|
@override
|
|
bool operator ==(covariant SelectionAssetState 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;
|
|
}
|