feat(web): add a user setting for default album sort order. (#18950)

* Add a user setting for default album sort order.

Add a user setting under "Features" to control the initial sort order
when creating an album. Default to the existing behavior of
"newest first".

* chore: patch openapi

---------

Co-authored-by: Alex <alex.tran1502@gmail.com>
This commit is contained in:
Dag Stuan 2025-06-06 06:31:34 +02:00 committed by GitHub
parent 55f4e93456
commit b46e066cc2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
18 changed files with 397 additions and 13 deletions

View file

@ -1,7 +1,7 @@
import { ApiProperty } from '@nestjs/swagger';
import { Type } from 'class-transformer';
import { IsDateString, IsEnum, IsInt, IsPositive, ValidateNested } from 'class-validator';
import { UserAvatarColor } from 'src/enum';
import { AssetOrder, UserAvatarColor } from 'src/enum';
import { UserPreferences } from 'src/types';
import { Optional, ValidateBoolean } from 'src/validation';
@ -22,6 +22,12 @@ class RatingsUpdate {
enabled?: boolean;
}
class AlbumsUpdate {
@IsEnum(AssetOrder)
@ApiProperty({ enumName: 'AssetOrder', enum: AssetOrder })
defaultAssetOrder?: AssetOrder;
}
class FoldersUpdate {
@ValidateBoolean({ optional: true })
enabled?: boolean;
@ -91,6 +97,11 @@ class CastUpdate {
}
export class UserPreferencesUpdateDto {
@Optional()
@ValidateNested()
@Type(() => AlbumsUpdate)
albums?: AlbumsUpdate;
@Optional()
@ValidateNested()
@Type(() => FoldersUpdate)
@ -147,6 +158,12 @@ export class UserPreferencesUpdateDto {
cast?: CastUpdate;
}
class AlbumsResponse {
@IsEnum(AssetOrder)
@ApiProperty({ enumName: 'AssetOrder', enum: AssetOrder })
defaultAssetOrder: AssetOrder = AssetOrder.DESC;
}
class RatingsResponse {
enabled: boolean = false;
}
@ -198,6 +215,7 @@ class CastResponse {
}
export class UserPreferencesResponseDto implements UserPreferences {
albums!: AlbumsResponse;
folders!: FoldersResponse;
memories!: MemoriesResponse;
people!: PeopleResponse;