refactor(pack): collapse null-forgive in gacha-point exchange balance guard

This commit is contained in:
gamer147
2026-05-28 23:42:32 -04:00
parent e1f5b9b6c3
commit 1eaf0d0bc4

View File

@@ -160,8 +160,7 @@ public sealed class GachaPointService : IGachaPointService
int threshold = pack.GachaPointConfig.ExchangeablePoint; int threshold = pack.GachaPointConfig.ExchangeablePoint;
var balance = viewer.GachaPointBalances.FirstOrDefault(b => b.PackId == packId); var balance = viewer.GachaPointBalances.FirstOrDefault(b => b.PackId == packId);
int currentPoints = balance?.Points ?? 0; if (balance is null || balance.Points < threshold)
if (currentPoints < threshold)
return ExchangeOutcome.Fail("insufficient_gacha_points"); return ExchangeOutcome.Fail("insufficient_gacha_points");
// Validate the card is in the catalog by re-running GetRewardsAsync. This re-uses the // Validate the card is in the catalog by re-running GetRewardsAsync. This re-uses the
@@ -176,8 +175,8 @@ public sealed class GachaPointService : IGachaPointService
if (viewer.GachaPointReceived.Any(r => r.PackId == packId && r.CardId == cardId)) if (viewer.GachaPointReceived.Any(r => r.PackId == packId && r.CardId == cardId))
return ExchangeOutcome.Fail("already_received"); return ExchangeOutcome.Fail("already_received");
// Debit balance + mark received. // Debit balance + mark received. (`balance` is non-null past the earlier guard.)
balance!.Points -= threshold; balance.Points -= threshold;
viewer.GachaPointReceived.Add(new ViewerGachaPointReceived viewer.GachaPointReceived.Add(new ViewerGachaPointReceived
{ {
PackId = packId, CardId = cardId, ReceivedAt = DateTime.UtcNow, PackId = packId, CardId = cardId, ReceivedAt = DateTime.UtcNow,