mirror of
https://github.com/immich-app/immich.git
synced 2025-06-02 21:26:29 -04:00
* feat(server): sort images in duplicate groups by date * Update server/src/dtos/duplicate.dto.ts Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com> --------- Co-authored-by: Alex <alex.tran1502@gmail.com> Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
29 lines
789 B
TypeScript
29 lines
789 B
TypeScript
import { IsNotEmpty } from 'class-validator';
|
|
import { groupBy, sortBy } from 'lodash';
|
|
import { AssetResponseDto } from 'src/dtos/asset-response.dto';
|
|
import { ValidateUUID } from 'src/validation';
|
|
|
|
export class DuplicateResponseDto {
|
|
duplicateId!: string;
|
|
assets!: AssetResponseDto[];
|
|
}
|
|
|
|
export class ResolveDuplicatesDto {
|
|
@IsNotEmpty()
|
|
@ValidateUUID({ each: true })
|
|
assetIds!: string[];
|
|
}
|
|
|
|
export function mapDuplicateResponse(assets: AssetResponseDto[]): DuplicateResponseDto[] {
|
|
const result = [];
|
|
|
|
const grouped = groupBy(assets, (a) => a.duplicateId);
|
|
|
|
for (const [duplicateId, unsortedAssets] of Object.entries(grouped)) {
|
|
const assets = sortBy(unsortedAssets, (asset) => asset.localDateTime);
|
|
result.push({ duplicateId, assets });
|
|
}
|
|
|
|
return result;
|
|
}
|