using System.Reflection; using Elsa.Workflows.Runtime.Options; using Elsa.Workflows.UIHints.Dropdown; using Microsoft.Extensions.Options; namespace Elsa.Workflows.Runtime.UIHints; /// /// Provides options for activities that dispatch workflows to channels. /// public class DispatcherChannelOptionsProvider : DropDownOptionsProviderBase { private readonly WorkflowDispatcherOptions _options; /// public DispatcherChannelOptionsProvider(IOptions options) { _options = options.Value; } /// protected override ValueTask> GetItemsAsync(PropertyInfo propertyInfo, object? context, CancellationToken cancellationToken) { var channelNames = _options.Channels.Select(x => x.Name).ToList(); var selectListItems = new List { new("Default", "") }; selectListItems.AddRange(channelNames.Select(x => new SelectListItem(x, x))); return new(selectListItems); } }