Files
BotPages/BotPages.Core/Navigation/INavigationService.cs

38 lines
1.5 KiB
C#

namespace BotPages.Core
{
/// <summary>
/// Сервис навигации по страницам.
/// </summary>
public interface INavigationService
{
/// <summary>
/// Выполняет push новой страницы и вызывает её Enter.
/// </summary>
Task PushAsync(string pageId, object? args, UpdateContext ctx, CancellationToken ct);
/// <summary>
/// Выполняет replace текущей страницы и вызывает Enter новой.
/// </summary>
Task ReplaceAsync(string pageId, object? args, UpdateContext ctx, CancellationToken ct);
/// <summary>
/// Возвращается назад по стеку и вызывает Enter предыдущей.
/// </summary>
Task PopAsync(UpdateContext ctx, CancellationToken ct);
/// <summary>
/// Применяет декларативный результат страницы (навигация, текст, файлы).
/// </summary>
Task ApplyResultAsync(UpdateContext ctx, PageResult result, CancellationToken ct);
/// <summary>
/// Возвращает текущую запись стека.
/// </summary>
Task<NavEntry?> CurrentAsync(UpdateContext ctx, CancellationToken ct);
/// <summary>
/// Возвращает весь стек навигации.
/// </summary>
Task<IReadOnlyList<NavEntry>> StackAsync(UpdateContext ctx, CancellationToken ct);
}
}