diff --git a/server/src/dtos/asset-v1.dto.ts b/server/src/dtos/asset-v1.dto.ts index 50ff3d18b..7a12639ce 100644 --- a/server/src/dtos/asset-v1.dto.ts +++ b/server/src/dtos/asset-v1.dto.ts @@ -2,6 +2,7 @@ import { ApiProperty } from '@nestjs/swagger'; import { Type } from 'class-transformer'; import { ArrayNotEmpty, IsArray, IsEnum, IsInt, IsNotEmpty, IsString, IsUUID, ValidateNested } from 'class-validator'; import { UploadFieldName } from 'src/dtos/asset.dto'; +import { ImageFormat } from 'src/entities/system-config.entity'; import { Optional, ValidateBoolean, ValidateDate, ValidateUUID } from 'src/validation'; export class AssetBulkUploadCheckItem { @@ -112,22 +113,17 @@ export class CreateAssetDto { [UploadFieldName.SIDECAR_DATA]?: any; } -export enum GetAssetThumbnailFormatEnum { - JPEG = 'JPEG', - WEBP = 'WEBP', -} - export class GetAssetThumbnailDto { @Optional() - @IsEnum(GetAssetThumbnailFormatEnum) + @IsEnum(ImageFormat) @ApiProperty({ type: String, - enum: GetAssetThumbnailFormatEnum, - default: GetAssetThumbnailFormatEnum.WEBP, + enum: ImageFormat, + default: ImageFormat.WEBP, required: false, enumName: 'ThumbnailFormat', }) - format: GetAssetThumbnailFormatEnum = GetAssetThumbnailFormatEnum.WEBP; + format: ImageFormat = ImageFormat.WEBP; } export class SearchPropertiesDto { diff --git a/server/src/services/asset-v1.service.ts b/server/src/services/asset-v1.service.ts index 97aa99d91..8e2785d85 100644 --- a/server/src/services/asset-v1.service.ts +++ b/server/src/services/asset-v1.service.ts @@ -22,12 +22,12 @@ import { CheckExistingAssetsDto, CreateAssetDto, GetAssetThumbnailDto, - GetAssetThumbnailFormatEnum, ServeFileDto, } from 'src/dtos/asset-v1.dto'; import { AuthDto } from 'src/dtos/auth.dto'; import { ASSET_CHECKSUM_CONSTRAINT, AssetEntity, AssetType } from 'src/entities/asset.entity'; import { LibraryType } from 'src/entities/library.entity'; +import { ImageFormat } from 'src/entities/system-config.entity'; import { IAccessRepository } from 'src/interfaces/access.interface'; import { IAssetRepositoryV1 } from 'src/interfaces/asset-v1.interface'; import { IAssetRepository } from 'src/interfaces/asset.interface'; @@ -244,15 +244,15 @@ export class AssetServiceV1 { }; } - private getThumbnailPath(asset: AssetEntity, format: GetAssetThumbnailFormatEnum) { + private getThumbnailPath(asset: AssetEntity, format: ImageFormat) { switch (format) { - case GetAssetThumbnailFormatEnum.WEBP: { + case ImageFormat.WEBP: { if (asset.thumbnailPath) { return asset.thumbnailPath; } this.logger.warn(`WebP thumbnail requested but not found for asset ${asset.id}, falling back to JPEG`); } - case GetAssetThumbnailFormatEnum.JPEG: { + case ImageFormat.JPEG: { if (!asset.previewPath) { throw new NotFoundException(`No thumbnail found for asset ${asset.id}`); }