using BotPages.Core.Abstractions; using BotPages.Core.Context; namespace BotPages.Core; /// /// Контекст страницы, объединяющий пользователя, чат, состояние и адаптер. /// public sealed class PageContext { /// Ключ сессии. public required CompositeSessionKey SessionKey { get; init; } /// Данные обновления. public required UpdateContext Update { get; init; } /// Хранилище состояния. public required IStateStorage StateStorage { get; init; } /// Сервис навигации. public required NavigationService Navigation { get; init; } /// Фабрика адаптеров (для получения других адаптеров). public required IMessengerAdapterFactory AdapterFactory { get; init; } /// Текущий адаптер мессенджера. public required IMessengerAdapter Adapter { get; init; } /// /// Получить билдер альбомов. /// public IAlbumBuilder Albums => Adapter.CreateAlbumBuilder(this); /// /// Получить адаптер по ID. /// public IMessengerAdapter GetAdapter(string adapterId) => AdapterFactory.Resolve(adapterId); /// /// Попытаться получить адаптер по ID. /// public bool TryGetAdapter(string adapterId, out IMessengerAdapter? adapter) => AdapterFactory.TryResolve(adapterId, out adapter); /// /// Получить все адаптеры определенного типа. /// public IReadOnlyList GetAdaptersByType(string adapterType) => AdapterFactory.GetAdaptersByType(adapterType); /// /// Получить текущий тип адаптера. /// public string CurrentAdapterType => Update.Adapter.Type; /// /// Получить текущий ID адаптера. /// public string CurrentAdapterId => Update.Adapter.Id; /// /// Получить все адаптеры. /// public IReadOnlyList AllAdapters => AdapterFactory.AllAdapters; }