Merge pull request #647 from DrakiaXYZ/fix-itemservicelocalesanity

Add sanity checks to CustomItemService's AddToLocaleDbs method
This commit is contained in:
Chomp
2025-10-20 21:51:58 +00:00
committed by GitHub
@@ -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;
});