Flag Providers
Describes how to use provide flags in management API responses for use in presenting additional details to consumers.
Last updated
Was this helpful?
Was this helpful?
using Umbraco.Cms.Core;
using Umbraco.Cms.Api.Management.Services.Flags;
using Umbraco.Cms.Api.Management.ViewModels;
using Umbraco.Cms.Api.Management.ViewModels.Document.Collection;
using Umbraco.Cms.Api.Management.ViewModels.Document.Item;
using Umbraco.Cms.Api.Management.ViewModels.Tree;
internal class MyDocumentFlagProvider : IFlagProvider
{
private const string Alias = Constants.Conventions.Flags.Prefix + "MyDocumentFlag";
// Indicate that this flag provider only provides flags for documents.
public bool CanProvideFlags<TItem>()
where TItem : IHasFlags =>
typeof(TItem) == typeof(DocumentTreeItemResponseModel) ||
typeof(TItem) == typeof(DocumentCollectionResponseModel) ||
typeof(TItem) == typeof(DocumentItemResponseModel);
public Task PopulateFlagsAsync<TItem>(IEnumerable<TItem> itemViewModels)
where TItem : IHasFlags
{
foreach (TItem item in itemViewModels)
{
if (ShouldAddFlag(item))
{
item.AddFlag(Alias);
}
}
return Task.CompletedTask;
}
private bool ShouldAddFlag<TItem>(TItem item) => true; // Provide custom logic here.
} builder.FlagProviders()
.Append<MyDocumentFlagProvider>();