diff --git a/src/Umbraco.Cms.Integrations.Search.Algolia/Converters/UmbracoMediaPickerConverter.cs b/src/Umbraco.Cms.Integrations.Search.Algolia/Converters/UmbracoMediaPickerConverter.cs index 0ec8661e..b231b4bc 100644 --- a/src/Umbraco.Cms.Integrations.Search.Algolia/Converters/UmbracoMediaPickerConverter.cs +++ b/src/Umbraco.Cms.Integrations.Search.Algolia/Converters/UmbracoMediaPickerConverter.cs @@ -7,6 +7,8 @@ namespace Umbraco.Cms.Integrations.Search.Algolia.Converters { public class UmbracoMediaPickerConverter : IAlgoliaIndexValueConverter { + const string udiPrefix = "umb://media/"; + private readonly IMediaService _mediaService; public UmbracoMediaPickerConverter(IMediaService mediaService) => _mediaService = mediaService; @@ -22,36 +24,37 @@ public object ParseIndexValues(IProperty property) return list; } - var inputMedia = JsonSerializer.Deserialize>(value); - - if (inputMedia == null) return string.Empty; - - foreach (var item in inputMedia) + if (value.StartsWith(udiPrefix)) { - if (item == null) continue; - - var mediaItem = _mediaService.GetById(Guid.Parse(item.MediaKey)); - - if (mediaItem == null) continue; - - list.Add(mediaItem.GetValue("umbracoFile")?.ToString() ?? string.Empty); + var guidPart = value.Substring(udiPrefix.Length); + if (Guid.TryParse(guidPart, out Guid guid)) + { + var mediaItem = _mediaService.GetById(guid); + if (mediaItem != null) + { + list.Add(mediaItem.GetValue("umbracoFile")?.ToString() ?? string.Empty); + } + } } + else + { + var inputMedia = JsonSerializer.Deserialize>(value); - return list; - } + if (inputMedia == null) return string.Empty; - private string ParseIndexValue(IEnumerable values) - { - if (values != null && values.Any()) - { - var value = values.FirstOrDefault(); + foreach (var item in inputMedia) + { + if (item == null) continue; + + var mediaItem = _mediaService.GetById(Guid.Parse(item.MediaKey)); - if (value == null) return string.Empty; + if (mediaItem == null) continue; - return value.ToString(); + list.Add(mediaItem.GetValue("umbracoFile")?.ToString() ?? string.Empty); + } } - return string.Empty; + return list; } } }