mirror of
https://github.com/immich-app/immich.git
synced 2024-11-19 11:58:57 -07:00
897d49f734
* refactor serving file function asset service * Remove PhotoViewer for now since it creates a problem in 2.10 * Added error message for wrong decode file and logo for failed to load file * Fixed error when read stream cannot be created and crash server * Added method to get all assets as a raw array * Implemented cleaner way of grouping image * Implemented operation to delete assets in the database * Implemented delete on database operation * Implemented delete on device operation * Fixed issue display wrong information when the auto backup is enabled after deleting all assets
114 lines
2.9 KiB
Dart
114 lines
2.9 KiB
Dart
import 'dart:convert';
|
|
|
|
import 'package:flutter/foundation.dart';
|
|
import 'package:immich_mobile/shared/models/immich_asset.model.dart';
|
|
|
|
class ImmichAssetGroupByDate {
|
|
final String date;
|
|
List<ImmichAsset> assets;
|
|
ImmichAssetGroupByDate({
|
|
required this.date,
|
|
required this.assets,
|
|
});
|
|
|
|
ImmichAssetGroupByDate copyWith({
|
|
String? date,
|
|
List<ImmichAsset>? assets,
|
|
}) {
|
|
return ImmichAssetGroupByDate(
|
|
date: date ?? this.date,
|
|
assets: assets ?? this.assets,
|
|
);
|
|
}
|
|
|
|
Map<String, dynamic> toMap() {
|
|
return {
|
|
'date': date,
|
|
'assets': assets.map((x) => x.toMap()).toList(),
|
|
};
|
|
}
|
|
|
|
factory ImmichAssetGroupByDate.fromMap(Map<String, dynamic> map) {
|
|
return ImmichAssetGroupByDate(
|
|
date: map['date'] ?? '',
|
|
assets: List<ImmichAsset>.from(map['assets']?.map((x) => ImmichAsset.fromMap(x))),
|
|
);
|
|
}
|
|
|
|
String toJson() => json.encode(toMap());
|
|
|
|
factory ImmichAssetGroupByDate.fromJson(String source) => ImmichAssetGroupByDate.fromMap(json.decode(source));
|
|
|
|
@override
|
|
String toString() => 'ImmichAssetGroupByDate(date: $date, assets: $assets)';
|
|
|
|
@override
|
|
bool operator ==(Object other) {
|
|
if (identical(this, other)) return true;
|
|
|
|
return other is ImmichAssetGroupByDate && other.date == date && listEquals(other.assets, assets);
|
|
}
|
|
|
|
@override
|
|
int get hashCode => date.hashCode ^ assets.hashCode;
|
|
}
|
|
|
|
class GetAllAssetResponse {
|
|
final int count;
|
|
final List<ImmichAssetGroupByDate> data;
|
|
final String nextPageKey;
|
|
GetAllAssetResponse({
|
|
required this.count,
|
|
required this.data,
|
|
required this.nextPageKey,
|
|
});
|
|
|
|
GetAllAssetResponse copyWith({
|
|
int? count,
|
|
List<ImmichAssetGroupByDate>? data,
|
|
String? nextPageKey,
|
|
}) {
|
|
return GetAllAssetResponse(
|
|
count: count ?? this.count,
|
|
data: data ?? this.data,
|
|
nextPageKey: nextPageKey ?? this.nextPageKey,
|
|
);
|
|
}
|
|
|
|
Map<String, dynamic> toMap() {
|
|
return {
|
|
'count': count,
|
|
'data': data.map((x) => x.toMap()).toList(),
|
|
'nextPageKey': nextPageKey,
|
|
};
|
|
}
|
|
|
|
factory GetAllAssetResponse.fromMap(Map<String, dynamic> map) {
|
|
return GetAllAssetResponse(
|
|
count: map['count']?.toInt() ?? 0,
|
|
data: List<ImmichAssetGroupByDate>.from(map['data']?.map((x) => ImmichAssetGroupByDate.fromMap(x))),
|
|
nextPageKey: map['nextPageKey'] ?? '',
|
|
);
|
|
}
|
|
|
|
String toJson() => json.encode(toMap());
|
|
|
|
factory GetAllAssetResponse.fromJson(String source) => GetAllAssetResponse.fromMap(json.decode(source));
|
|
|
|
@override
|
|
String toString() => 'GetAllAssetResponse(count: $count, data: $data, nextPageKey: $nextPageKey)';
|
|
|
|
@override
|
|
bool operator ==(Object other) {
|
|
if (identical(this, other)) return true;
|
|
|
|
return other is GetAllAssetResponse &&
|
|
other.count == count &&
|
|
listEquals(other.data, data) &&
|
|
other.nextPageKey == nextPageKey;
|
|
}
|
|
|
|
@override
|
|
int get hashCode => count.hashCode ^ data.hashCode ^ nextPageKey.hashCode;
|
|
}
|