immich_asset.model.dart 3.0 KB

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