b53c7fb736
Features: - Category viewer ranges + subcategory templates (admin group modal, tree workspace) - Nomination enrichment via TwitchTracker API (NominationEnrichmentService, TwitchTrackerViewerStatsProvider) with admin tracking rules editor - Nomination group tracker: CategoryGroupName as primary identifier, CategoryId stays as nullable legacy field; StreamerIdentity table - Dynamic showact application form builder (AdminShowactFormBuilder, ShowactApplicationSchedule) - Session idle timeout setting (AdminSessionTimeoutCard) - Share URLs for X and Discord (SiteSettings, public extras) - Workflow rules now stored per season (falls back to global SiteSettings) - New admin routes: settings/access, settings/workflows, tracking-rules - New admin review workspace with subcategory tabs - AdminCategoriesView rebuilt with group/subcategory modals Migrations (all additive): - AddShareUrls, AddShowactDynamicForm, AddCategoryViewerRanges, AddSessionIdleTimeoutSettings, AddSeasonSubcategoryTemplates, AddNominationGroupTrackerIdentity, AddShowactApplicationSchedule, AddSeasonWorkflowRulesJson Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
94 lines
2.4 KiB
C#
94 lines
2.4 KiB
C#
namespace Backend.Contracts;
|
|
|
|
public sealed record TimelineItem(
|
|
string Key,
|
|
string Title,
|
|
DateOnly StartsAt,
|
|
DateOnly EndsAt,
|
|
string State);
|
|
|
|
public sealed record FeaturedCategoryDto(
|
|
int Id,
|
|
string GroupName,
|
|
string Name,
|
|
string Description,
|
|
int MaxNomineesPerUser);
|
|
|
|
public sealed record WinnerPreviewDto(
|
|
int Year,
|
|
string Category,
|
|
string WinnerName,
|
|
string WinnerSlug,
|
|
string WinnerPlatform,
|
|
string WinnerUrl,
|
|
string? ClipUrl,
|
|
string? ClipTitle,
|
|
string? ClipPlatform,
|
|
string? ClipEmbedStatus);
|
|
|
|
public sealed record ArchiveYearDto(
|
|
int Year,
|
|
int WinnerCount);
|
|
|
|
public sealed record FaqItemDto(string Question, string Answer);
|
|
|
|
public sealed record PublicSocialLinkDto(
|
|
string Label,
|
|
string Platform,
|
|
string Url,
|
|
string? Icon = null,
|
|
bool ShowOnHost = true,
|
|
bool ShowOnCommunity = true);
|
|
|
|
public sealed record FooterLinkDto(
|
|
string Key,
|
|
string Label,
|
|
string Url,
|
|
string Content);
|
|
|
|
public sealed record PublicSiteContentDto(
|
|
string HostDisplayName,
|
|
string HostTagline,
|
|
string NewsletterUrl,
|
|
string ShareXUrl,
|
|
string ShareDiscordUrl,
|
|
string PrivacyEmail,
|
|
string PrivacyPolicyContent,
|
|
IEnumerable<PublicSocialLinkDto> SocialLinks,
|
|
IEnumerable<FooterLinkDto> FooterLinks);
|
|
|
|
public sealed record PublicSiteStatusResponse(
|
|
bool DemoLoginEnabled,
|
|
bool MaintenanceModeEnabled,
|
|
string MaintenanceTitle,
|
|
string MaintenanceMessage);
|
|
|
|
public sealed record PublicFeatureFlagsDto(
|
|
bool ClipSubmissionsEnabled,
|
|
bool ClipReviewEnabled,
|
|
string ClipSubmissionDisabledMessage,
|
|
bool ShowactApplicationsEnabled,
|
|
DateOnly? ShowactApplicationStartsAt,
|
|
DateOnly? ShowactApplicationEndsAt,
|
|
string ShowactApplicationDisabledMessage,
|
|
bool SponsorsVisible,
|
|
string ShowactFormSchemaJson);
|
|
|
|
public sealed record OverviewResponse(
|
|
int SeasonId,
|
|
int Year,
|
|
string Title,
|
|
DateOnly ShowDate,
|
|
TimeOnly ShowStartsAt,
|
|
string ShowStreamUrl,
|
|
string CurrentPhase,
|
|
bool IsCommunityOnly,
|
|
string LoginProvider,
|
|
IEnumerable<TimelineItem> Timeline,
|
|
IEnumerable<FeaturedCategoryDto> FeaturedCategories,
|
|
IEnumerable<WinnerPreviewDto> WinnersPreview,
|
|
IEnumerable<ArchiveYearDto> ArchiveYears,
|
|
PublicSiteContentDto SiteContent,
|
|
PublicFeatureFlagsDto FeatureFlags,
|
|
IEnumerable<FaqItemDto> Faq);
|