Add sanity checks to CustomItemService's AddToLocaleDbs method

This commit is contained in:
DrakiaXYZ
2025-10-20 12:17:50 -07:00
parent 94d2a8d233
commit aa8911f5aa
@@ -240,21 +240,34 @@ public class CustomItemService(
/// <param name="newItemId"> ID of the item being created </param>
protected void AddToLocaleDbs(Dictionary<string, LocaleDetails> localeDetails, string newItemId)
{
// Validate that there's atleast one locale to use as a default
var defaultLocale = localeDetails.Keys.FirstOrDefault();
if (defaultLocale == null)
{
return;
}
var languages = databaseService.GetLocales().Languages;
foreach (var shortNameKey in languages)
{
// Get locale details passed in, if not provided by caller use first record in newItemDetails.locales
localeDetails.TryGetValue(shortNameKey.Key, out var newLocaleDetails);
newLocaleDetails ??= localeDetails[localeDetails.Keys.FirstOrDefault()];
newLocaleDetails ??= localeDetails[defaultLocale];
// If there's no name defined, don't add a transformer, the mod is probably handling locales elsewhere
if (newLocaleDetails.Name == null)
{
continue;
}
if (databaseService.GetLocales().Global.TryGetValue(shortNameKey.Key, out var lazyLoad))
{
lazyLoad.AddTransformer(localeData =>
{
localeData![$"{newItemId} Name"] = newLocaleDetails.Name!;
localeData[$"{newItemId} ShortName"] = newLocaleDetails.ShortName!;
localeData[$"{newItemId} Description"] = newLocaleDetails.Description!;
localeData![$"{newItemId} Name"] = newLocaleDetails.Name;
localeData[$"{newItemId} ShortName"] = newLocaleDetails.ShortName ?? "";
localeData[$"{newItemId} Description"] = newLocaleDetails.Description ?? "";
return localeData;
});