using RpgRoller.Components.Pages.HomeControls;

namespace RpgRoller.Components.Pages;

public sealed class WorkspacePageContext(
    WorkspaceState state,
    WorkspacePlayCoordinator play,
    WorkspaceCampaignCoordinator campaigns,
    WorkspaceAdminCoordinator admin,
    WorkspaceCampaignScopeCoordinator scope,
    WorkspaceSessionCoordinator session,
    Func<Task> initializeRouteAsync,
    bool hasSessionInitialized,
    Func<Task> requestRefreshAsync,
    string adminDatabaseDownloadUrl,
    IReadOnlyList<AppHeaderMenuItem> headerMenuItems,
    bool isPlayRoute,
    bool isCampaignsRoute,
    bool isAdminRoute)
{
    public WorkspaceState State { get; } = state;
    public WorkspacePlayCoordinator Play { get; } = play;
    public WorkspaceCampaignCoordinator Campaigns { get; } = campaigns;
    public WorkspaceAdminCoordinator Admin { get; } = admin;
    public WorkspaceCampaignScopeCoordinator Scope { get; } = scope;
    public WorkspaceSessionCoordinator Session { get; } = session;
    public Func<Task> InitializeRouteAsync { get; } = initializeRouteAsync;
    public bool HasSessionInitialized { get; } = hasSessionInitialized;
    public Func<Task> RequestRefreshAsync { get; } = requestRefreshAsync;
    public string AdminDatabaseDownloadUrl { get; } = adminDatabaseDownloadUrl;
    public IReadOnlyList<AppHeaderMenuItem> HeaderMenuItems { get; } = headerMenuItems;
    public bool IsPlayRoute { get; } = isPlayRoute;
    public bool IsCampaignsRoute { get; } = isCampaignsRoute;
    public bool IsAdminRoute { get; } = isAdminRoute;
}