From 42fe568e2bca0e2677ef96abdc7c125f34f8001c Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Sat, 14 Feb 2026 16:48:23 +0100 Subject: [PATCH] =?UTF-8?q?Verbessere=20die=20Behandlung=20von=20Charakter?= =?UTF-8?q?eigenschaften=20beim=20Versenden=20von=20Geschenken:=20F=C3=BCg?= =?UTF-8?q?e=20eine=20=C3=9Cberpr=C3=BCfung=20hinzu,=20um=20sicherzustelle?= =?UTF-8?q?n,=20dass=20characterTraits=20ein=20Array=20ist,=20und=20behand?= =?UTF-8?q?le=20fehlende=20Traits=20als=20neutralen=20Wert.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/services/falukantService.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/backend/services/falukantService.js b/backend/services/falukantService.js index aa7c321..bbe04b6 100644 --- a/backend/services/falukantService.js +++ b/backend/services/falukantService.js @@ -3258,12 +3258,14 @@ class FalukantService extends BaseService { if (user.money < cost) { throw new PreconditionError('insufficientFunds'); } - const traits = gift.characterTraits; + const traits = Array.isArray(gift.characterTraits) ? gift.characterTraits : []; + // Wenn keine passenden characterTraits gefunden wurden, behandeln wir das als neutralen Wert (0) + // statt einen Fehler zu werfen. Das erlaubt das Versenden, auch wenn keine Trait-Übereinstimmung vorliegt. if (!traits.length) { - throw new Error('noTraits'); + console.warn(`sendGift: no matching characterTraits for user id=${user.id} giftId=${giftId}`); } - // Finde den höchsten Charakterwert (wie im Frontend) - const highestCharacterValue = Math.max(...traits.map(ct => ct.suitability)); + // Finde den höchsten Charakterwert (wie im Frontend). Falls keine Traits vorhanden, 0. + const highestCharacterValue = traits.length ? Math.max(...traits.map(ct => ct.suitability)) : 0; const moodRecord = gift.promotionalgiftmoods[0]; if (!moodRecord) { throw new Error('noMoodData');