From e1e45f3f32a6270c64fa9392906bc0668d6bea4f Mon Sep 17 00:00:00 2001 From: martin <74269598+martabal@users.noreply.github.com> Date: Fri, 3 Nov 2023 22:02:05 +0100 Subject: [PATCH] fix(web): show one face for the same person in the detail panel (#4822) --- .../src/domain/asset/response-dto/asset-response.dto.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/server/src/domain/asset/response-dto/asset-response.dto.ts b/server/src/domain/asset/response-dto/asset-response.dto.ts index 0f5e01320..bacd4bfe6 100644 --- a/server/src/domain/asset/response-dto/asset-response.dto.ts +++ b/server/src/domain/asset/response-dto/asset-response.dto.ts @@ -98,7 +98,14 @@ export function mapAsset(entity: AssetEntity, options: AssetMapOptions = {}): As tags: entity.tags?.map(mapTag), people: entity.faces ?.map(mapFace) - .filter((person): person is PersonResponseDto => person !== null && !person.isHidden), + .filter((person): person is PersonResponseDto => person !== null && !person.isHidden) + .reduce((people, person) => { + const existingPerson = people.find((p) => p.id === person.id); + if (!existingPerson) { + people.push(person); + } + return people; + }, [] as PersonResponseDto[]), checksum: entity.checksum.toString('base64'), stackParentId: entity.stackParentId, stack: withStack ? entity.stack?.map((a) => mapAsset(a, { stripMetadata })) ?? undefined : undefined,