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);
}
}