refactor(MemberService, MemberGalleryDialog): update image selection logic and enhance participant styling
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 43s

- Refactored image selection logic in MemberService to prioritize primary images based on sortOrder.
- Updated MemberGalleryDialog styles for participant items, adding visual indicators and improved background colors for better user experience.
This commit is contained in:
Torsten Schulz (local)
2026-04-25 09:25:40 +02:00
parent 6ea92bef49
commit 3462a5497c
2 changed files with 34 additions and 16 deletions

View File

@@ -363,10 +363,10 @@ class MemberService {
}
if (!imageRecord) {
// Get latest image (highest sortOrder, then highest id)
// Ohne explizite imageId immer das Primärbild liefern (kleinste sortOrder).
imageRecord = await MemberImage.findOne({
where: { memberId },
order: [['sortOrder', 'DESC'], ['id', 'DESC']]
order: [['sortOrder', 'ASC'], ['id', 'ASC']]
});
}
@@ -1666,12 +1666,12 @@ class MemberService {
continue;
}
const latestImage = this._selectLatestImage(images);
if (!latestImage) {
const primaryImage = this._selectPrimaryImage(images);
if (!primaryImage) {
continue;
}
const fileName = latestImage.fileName || `${latestImage.id}.jpg`;
const fileName = primaryImage.fileName || `${primaryImage.id}.jpg`;
const filePath = path.join('images', 'members', String(member.id), fileName);
if (!fs.existsSync(filePath)) {
continue;
@@ -1847,24 +1847,19 @@ class MemberService {
};
}
_selectLatestImage(images) {
_selectPrimaryImage(images) {
if (!Array.isArray(images) || images.length === 0) {
return null;
}
return images
.slice()
.sort((a, b) => {
const updatedA = a.updatedAt ? new Date(a.updatedAt).getTime() : 0;
const updatedB = b.updatedAt ? new Date(b.updatedAt).getTime() : 0;
if (updatedA !== updatedB) {
return updatedB - updatedA;
}
const sortA = Number.isFinite(a.sortOrder) ? a.sortOrder : parseInt(a.sortOrder || '0', 10);
const sortB = Number.isFinite(b.sortOrder) ? b.sortOrder : parseInt(b.sortOrder || '0', 10);
if (sortA !== sortB) {
return sortB - sortA;
return sortA - sortB;
}
return (b.id || 0) - (a.id || 0);
return (a.id || 0) - (b.id || 0);
})[0];
}