Improved nullguarding in GetuserBuilds method

This commit is contained in:
Chomp
2025-02-06 22:19:54 +00:00
parent ab34a14c03
commit 7a12d17fb6
+15 -10
View File
@@ -34,24 +34,27 @@ public class BuildController(
public UserBuilds? GetUserBuilds(string sessionID)
{
const string secureContainerSlotId = "SecuredContainer";
var profile = _profileHelper.GetFullProfile(sessionID);
if (profile is not null && profile.UserBuildData is null)
if (profile?.UserBuildData is null)
profile.UserBuildData = new UserBuilds { EquipmentBuilds = [], WeaponBuilds = [], MagazineBuilds = [] };
// Ensure the secure container in the default presets match what the player has equipped
var defaultEquipmentPresetsClone = _cloner.Clone(
_databaseService.GetTemplates().DefaultEquipmentPresets
);
var defaultEquipmentPresetsClone = _cloner.Clone(_databaseService.GetTemplates().DefaultEquipmentPresets)
.ToList();
// Get players secure container
var playerSecureContainer = profile?.CharacterData?.PmcData?.Inventory?.Items?.FirstOrDefault(
x => x.SlotId == secureContainerSlotId
);
var firstDefaultItemsSecureContainer = defaultEquipmentPresetsClone?.FirstOrDefault()
?.Items?.FirstOrDefault(
x => x.SlotId == secureContainerSlotId
);
var firstDefaultItemsSecureContainer = defaultEquipmentPresetsClone?
.FirstOrDefault()?.Items?
.FirstOrDefault(x => x.SlotId == secureContainerSlotId);
if (playerSecureContainer is not null && playerSecureContainer.Template != firstDefaultItemsSecureContainer?.Template)
// Default equipment presets' secure container tpl doesn't match players secure container tpl
foreach (var defaultPreset in defaultEquipmentPresetsClone ?? [])
foreach (var defaultPreset in defaultEquipmentPresetsClone)
{
// Find presets secure container
var secureContainer = defaultPreset.Items?.FirstOrDefault(item => item.SlotId == secureContainerSlotId);
@@ -60,7 +63,9 @@ public class BuildController(
// Clone player build data from profile and append the above defaults onto end
var userBuildsClone = _cloner.Clone(profile?.UserBuildData);
userBuildsClone?.EquipmentBuilds?.AddRange(defaultEquipmentPresetsClone ?? []);
userBuildsClone.EquipmentBuilds ??= [];
userBuildsClone?.EquipmentBuilds?.AddRange(defaultEquipmentPresetsClone);
return userBuildsClone;
}