immich_asset.model.dart 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. import 'dart:convert';
  2. import 'package:equatable/equatable.dart';
  3. class ImmichAsset extends Equatable {
  4. final String id;
  5. final String deviceAssetId;
  6. final String userId;
  7. final String deviceId;
  8. final String type;
  9. final String createdAt;
  10. final String modifiedAt;
  11. final bool isFavorite;
  12. final String? duration;
  13. final String originalPath;
  14. final String resizePath;
  15. const ImmichAsset({
  16. required this.id,
  17. required this.deviceAssetId,
  18. required this.userId,
  19. required this.deviceId,
  20. required this.type,
  21. required this.createdAt,
  22. required this.modifiedAt,
  23. required this.isFavorite,
  24. this.duration,
  25. required this.originalPath,
  26. required this.resizePath,
  27. });
  28. ImmichAsset copyWith({
  29. String? id,
  30. String? deviceAssetId,
  31. String? userId,
  32. String? deviceId,
  33. String? type,
  34. String? createdAt,
  35. String? modifiedAt,
  36. bool? isFavorite,
  37. String? duration,
  38. String? originalPath,
  39. String? resizePath,
  40. }) {
  41. return ImmichAsset(
  42. id: id ?? this.id,
  43. deviceAssetId: deviceAssetId ?? this.deviceAssetId,
  44. userId: userId ?? this.userId,
  45. deviceId: deviceId ?? this.deviceId,
  46. type: type ?? this.type,
  47. createdAt: createdAt ?? this.createdAt,
  48. modifiedAt: modifiedAt ?? this.modifiedAt,
  49. isFavorite: isFavorite ?? this.isFavorite,
  50. duration: duration ?? this.duration,
  51. originalPath: originalPath ?? this.originalPath,
  52. resizePath: resizePath ?? this.resizePath,
  53. );
  54. }
  55. Map<String, dynamic> toMap() {
  56. final result = <String, dynamic>{};
  57. result.addAll({'id': id});
  58. result.addAll({'deviceAssetId': deviceAssetId});
  59. result.addAll({'userId': userId});
  60. result.addAll({'deviceId': deviceId});
  61. result.addAll({'type': type});
  62. result.addAll({'createdAt': createdAt});
  63. result.addAll({'modifiedAt': modifiedAt});
  64. result.addAll({'isFavorite': isFavorite});
  65. if (duration != null) {
  66. result.addAll({'duration': duration});
  67. }
  68. result.addAll({'originalPath': originalPath});
  69. result.addAll({'resizePath': resizePath});
  70. return result;
  71. }
  72. factory ImmichAsset.fromMap(Map<String, dynamic> map) {
  73. return ImmichAsset(
  74. id: map['id'] ?? '',
  75. deviceAssetId: map['deviceAssetId'] ?? '',
  76. userId: map['userId'] ?? '',
  77. deviceId: map['deviceId'] ?? '',
  78. type: map['type'] ?? '',
  79. createdAt: map['createdAt'] ?? '',
  80. modifiedAt: map['modifiedAt'] ?? '',
  81. isFavorite: map['isFavorite'] ?? false,
  82. duration: map['duration'],
  83. originalPath: map['originalPath'] ?? '',
  84. resizePath: map['resizePath'] ?? '',
  85. );
  86. }
  87. String toJson() => json.encode(toMap());
  88. factory ImmichAsset.fromJson(String source) =>
  89. ImmichAsset.fromMap(json.decode(source));
  90. @override
  91. String toString() {
  92. return 'ImmichAsset(id: $id, deviceAssetId: $deviceAssetId, userId: $userId, deviceId: $deviceId, type: $type, createdAt: $createdAt, modifiedAt: $modifiedAt, isFavorite: $isFavorite, duration: $duration, originalPath: $originalPath, resizePath: $resizePath)';
  93. }
  94. @override
  95. List<Object> get props {
  96. return [id];
  97. }
  98. }