2024-11-09 04:04:03 +00:00
|
|
|
import 'package:freezed_annotation/freezed_annotation.dart';
|
|
|
|
|
|
|
|
part 'attachment.freezed.dart';
|
2024-12-26 14:19:01 +00:00
|
|
|
|
2024-11-09 04:04:03 +00:00
|
|
|
part 'attachment.g.dart';
|
|
|
|
|
2024-12-26 14:19:01 +00:00
|
|
|
enum SnMediaType {
|
|
|
|
image,
|
|
|
|
video,
|
|
|
|
audio,
|
|
|
|
file,
|
|
|
|
}
|
|
|
|
|
2024-11-09 04:04:03 +00:00
|
|
|
@freezed
|
|
|
|
class SnAttachment with _$SnAttachment {
|
2024-12-26 14:19:01 +00:00
|
|
|
const SnAttachment._();
|
|
|
|
|
2024-11-09 04:04:03 +00:00
|
|
|
const factory SnAttachment({
|
|
|
|
required int id,
|
|
|
|
required DateTime createdAt,
|
|
|
|
required DateTime updatedAt,
|
|
|
|
required dynamic deletedAt,
|
|
|
|
required String rid,
|
|
|
|
required String uuid,
|
|
|
|
required int size,
|
|
|
|
required String name,
|
|
|
|
required String alt,
|
|
|
|
required String mimetype,
|
|
|
|
required String hash,
|
|
|
|
required int destination,
|
|
|
|
required int refCount,
|
2024-12-26 14:19:01 +00:00
|
|
|
@Default(0) int contentRating,
|
|
|
|
@Default(0) int qualityRating,
|
2024-11-09 04:04:03 +00:00
|
|
|
required dynamic fileChunks,
|
|
|
|
required dynamic cleanedAt,
|
|
|
|
required bool isAnalyzed,
|
|
|
|
required bool isUploaded,
|
|
|
|
required bool isSelfRef,
|
|
|
|
required dynamic ref,
|
|
|
|
required dynamic refId,
|
|
|
|
required SnAttachmentPool? pool,
|
|
|
|
required int poolId,
|
|
|
|
required int accountId,
|
2024-12-26 14:19:01 +00:00
|
|
|
@Default({}) Map<String, dynamic> usermeta,
|
2024-11-10 08:41:11 +00:00
|
|
|
@Default({}) Map<String, dynamic> metadata,
|
2024-12-26 15:01:00 +00:00
|
|
|
String? thumbnail,
|
2024-11-09 04:04:03 +00:00
|
|
|
}) = _SnAttachment;
|
|
|
|
|
2024-12-26 14:19:01 +00:00
|
|
|
factory SnAttachment.fromJson(Map<String, Object?> json) => _$SnAttachmentFromJson(json);
|
|
|
|
|
|
|
|
Map<String, dynamic> get data => {
|
|
|
|
...metadata,
|
|
|
|
...usermeta,
|
|
|
|
};
|
|
|
|
|
|
|
|
SnMediaType get mediaType => switch (mimetype.split('/').firstOrNull) {
|
|
|
|
'image' => SnMediaType.image,
|
|
|
|
'video' => SnMediaType.video,
|
|
|
|
'audio' => SnMediaType.audio,
|
|
|
|
_ => SnMediaType.file,
|
|
|
|
};
|
2024-11-09 04:04:03 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@freezed
|
|
|
|
class SnAttachmentPool with _$SnAttachmentPool {
|
|
|
|
const factory SnAttachmentPool({
|
|
|
|
required int id,
|
|
|
|
required DateTime createdAt,
|
|
|
|
required DateTime updatedAt,
|
|
|
|
required DateTime? deletedAt,
|
|
|
|
required String alias,
|
|
|
|
required String name,
|
|
|
|
required String description,
|
|
|
|
required Map<String, dynamic> config,
|
|
|
|
required int? accountId,
|
|
|
|
}) = _SnAttachmentPool;
|
|
|
|
|
2024-12-26 14:19:01 +00:00
|
|
|
factory SnAttachmentPool.fromJson(Map<String, Object?> json) => _$SnAttachmentPoolFromJson(json);
|
2024-11-09 04:04:03 +00:00
|
|
|
}
|