using NodaTime; #nullable enable namespace PluralKit.Core { public class PKGroup { public GroupId Id { get; private set; } public string Hid { get; private set; } = null!; public SystemId System { get; private set; } public string Name { get; private set; } = null!; public string? DisplayName { get; private set; } public string? Description { get; private set; } public string? Icon { get; private set; } public string? Color { get; private set; } public PrivacyLevel DescriptionPrivacy { get; private set; } public PrivacyLevel IconPrivacy { get; private set; } public PrivacyLevel ListPrivacy { get; private set; } public PrivacyLevel Visibility { get; private set; } public Instant Created { get; private set; } } public static class PKGroupExt { public static string? DescriptionFor(this PKGroup group, LookupContext ctx) => group.DescriptionPrivacy.Get(ctx, group.Description); public static string? IconFor(this PKGroup group, LookupContext ctx) => group.IconPrivacy.Get(ctx, group.Icon?.TryGetCleanCdnUrl()); } }