feat: make progressive system config optional (#25486)

This commit is contained in:
Min Idzelis 2026-01-24 00:18:02 -05:00 committed by GitHub
parent ccc0961ba3
commit 7e5592fec5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 38 additions and 10 deletions

View file

@ -22625,6 +22625,7 @@
] ]
}, },
"progressive": { "progressive": {
"default": false,
"type": "boolean" "type": "boolean"
}, },
"quality": { "quality": {
@ -22636,7 +22637,6 @@
"required": [ "required": [
"enabled", "enabled",
"format", "format",
"progressive",
"quality" "quality"
], ],
"type": "object" "type": "object"
@ -22651,6 +22651,7 @@
] ]
}, },
"progressive": { "progressive": {
"default": false,
"type": "boolean" "type": "boolean"
}, },
"quality": { "quality": {
@ -22665,7 +22666,6 @@
}, },
"required": [ "required": [
"format", "format",
"progressive",
"quality", "quality",
"size" "size"
], ],

View file

@ -1538,12 +1538,12 @@ export type SystemConfigFFmpegDto = {
export type SystemConfigGeneratedFullsizeImageDto = { export type SystemConfigGeneratedFullsizeImageDto = {
enabled: boolean; enabled: boolean;
format: ImageFormat; format: ImageFormat;
progressive: boolean; progressive?: boolean;
quality: number; quality: number;
}; };
export type SystemConfigGeneratedImageDto = { export type SystemConfigGeneratedImageDto = {
format: ImageFormat; format: ImageFormat;
progressive: boolean; progressive?: boolean;
quality: number; quality: number;
size: number; size: number;
}; };

View file

@ -70,5 +70,33 @@ describe(SystemConfigController.name, () => {
expect(body).toEqual(errorDto.badRequest(['nightlyTasks.databaseCleanup must be a boolean value'])); expect(body).toEqual(errorDto.badRequest(['nightlyTasks.databaseCleanup must be a boolean value']));
}); });
}); });
describe('image', () => {
it('should accept config without optional progressive property', async () => {
const config = _.cloneDeep(defaults);
delete config.image.thumbnail.progressive;
delete config.image.preview.progressive;
delete config.image.fullsize.progressive;
const { status } = await request(ctx.getHttpServer()).put('/system-config').send(config);
expect(status).toBe(200);
});
it('should accept config with progressive set to true', async () => {
const config = _.cloneDeep(defaults);
config.image.thumbnail.progressive = true;
config.image.preview.progressive = true;
config.image.fullsize.progressive = true;
const { status } = await request(ctx.getHttpServer()).put('/system-config').send(config);
expect(status).toBe(200);
});
it('should reject invalid progressive value', async () => {
const config = _.cloneDeep(defaults);
(config.image.thumbnail.progressive as any) = 'invalid';
const { status, body } = await request(ctx.getHttpServer()).put('/system-config').send(config);
expect(status).toBe(400);
expect(body).toEqual(errorDto.badRequest(['image.thumbnail.progressive must be a boolean value']));
});
});
}); });
}); });

View file

@ -586,8 +586,8 @@ class SystemConfigGeneratedImageDto {
@ApiProperty({ type: 'integer' }) @ApiProperty({ type: 'integer' })
size!: number; size!: number;
@ValidateBoolean() @ValidateBoolean({ optional: true, default: false })
progressive!: boolean; progressive?: boolean;
} }
class SystemConfigGeneratedFullsizeImageDto { class SystemConfigGeneratedFullsizeImageDto {
@ -604,8 +604,8 @@ class SystemConfigGeneratedFullsizeImageDto {
@ApiProperty({ type: 'integer' }) @ApiProperty({ type: 'integer' })
quality!: number; quality!: number;
@ValidateBoolean() @ValidateBoolean({ optional: true, default: false })
progressive!: boolean; progressive?: boolean;
} }
export class SystemConfigImageDto { export class SystemConfigImageDto {

View file

@ -36,14 +36,14 @@ export type FullsizeImageOptions = {
format: ImageFormat; format: ImageFormat;
quality: number; quality: number;
enabled: boolean; enabled: boolean;
progressive: boolean; progressive?: boolean;
}; };
export type ImageOptions = { export type ImageOptions = {
format: ImageFormat; format: ImageFormat;
quality: number; quality: number;
size: number; size: number;
progressive: boolean; progressive?: boolean;
}; };
export type RawImageInfo = { export type RawImageInfo = {