mirror of
https://github.com/immich-app/immich.git
synced 2026-05-21 15:16:31 -04:00
b554664791
* server changes * openapi * web changes * mobile changes * assume 3.0 client * deprecate * review feedback * update medium tests * linting
72 lines
2.2 KiB
Dart
72 lines
2.2 KiB
Dart
import 'package:immich_mobile/domain/models/asset/base_asset.model.dart';
|
|
import 'package:immich_mobile/domain/models/exif.model.dart';
|
|
import 'package:immich_mobile/infrastructure/utils/exif.converter.dart';
|
|
import 'package:openapi/api.dart' as api;
|
|
|
|
extension DTOToAsset on api.AssetResponseDto {
|
|
RemoteAsset toDto() {
|
|
return RemoteAsset(
|
|
id: id,
|
|
name: originalFileName,
|
|
checksum: checksum,
|
|
createdAt: fileCreatedAt,
|
|
updatedAt: updatedAt,
|
|
ownerId: ownerId,
|
|
visibility: visibility.toAssetVisibility(),
|
|
durationMs: duration,
|
|
height: height?.toInt(),
|
|
width: width?.toInt(),
|
|
isFavorite: isFavorite,
|
|
livePhotoVideoId: livePhotoVideoId,
|
|
thumbHash: thumbhash,
|
|
localId: null,
|
|
type: type.toAssetType(),
|
|
stackId: stack?.id,
|
|
isEdited: isEdited,
|
|
);
|
|
}
|
|
|
|
RemoteAssetExif toDtoWithExif() {
|
|
return RemoteAssetExif(
|
|
id: id,
|
|
name: originalFileName,
|
|
checksum: checksum,
|
|
createdAt: fileCreatedAt,
|
|
updatedAt: updatedAt,
|
|
ownerId: ownerId,
|
|
visibility: visibility.toAssetVisibility(),
|
|
durationMs: duration,
|
|
height: height?.toInt(),
|
|
width: width?.toInt(),
|
|
isFavorite: isFavorite,
|
|
livePhotoVideoId: livePhotoVideoId,
|
|
thumbHash: thumbhash,
|
|
localId: null,
|
|
type: type.toAssetType(),
|
|
stackId: stack?.id,
|
|
isEdited: isEdited,
|
|
exifInfo: exifInfo != null ? ExifDtoConverter.fromDto(exifInfo!) : const ExifInfo(),
|
|
);
|
|
}
|
|
}
|
|
|
|
extension on api.AssetVisibility {
|
|
AssetVisibility toAssetVisibility() => switch (this) {
|
|
api.AssetVisibility.timeline => AssetVisibility.timeline,
|
|
api.AssetVisibility.hidden => AssetVisibility.hidden,
|
|
api.AssetVisibility.archive => AssetVisibility.archive,
|
|
api.AssetVisibility.locked => AssetVisibility.locked,
|
|
_ => AssetVisibility.timeline,
|
|
};
|
|
}
|
|
|
|
extension on api.AssetTypeEnum {
|
|
AssetType toAssetType() => switch (this) {
|
|
api.AssetTypeEnum.IMAGE => AssetType.image,
|
|
api.AssetTypeEnum.VIDEO => AssetType.video,
|
|
api.AssetTypeEnum.AUDIO => AssetType.audio,
|
|
api.AssetTypeEnum.OTHER => AssetType.other,
|
|
_ => throw Exception('Unknown AssetType value: $this'),
|
|
};
|
|
}
|