Files
BotPages/Demo/Pages/DetailsPage.cs
FrigaT a94327f0c8
All checks were successful
CI / build-test (push) Successful in 33s
Release / pack-and-publish (release) Successful in 38s
Доработан стартер адаптеров
2025-12-05 18:06:12 +03:00

63 lines
1.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using BotPages.Core;
using BotPages.Core.Messaging;
namespace Demo.Pages;
/// <summary>
/// Страница ввода деталей заявки.
/// Страница с параметрами и получением состояния.
/// </summary>
public sealed class DetailsPage : StatefullPage<DetailsArgs>
{
[Statefull("Request")]
private Models.Request Request;
public override Task OnEnter(PageContext ctx, DetailsArgs args, CancellationToken ct)
{
Request = new()
{
Title = args.Title,
};
return new MessageBuilder(ctx)
.Text($"Заголовок: {args.Title}\nДобавьте детали или нажмите Далее.")
.Inline(new InlineButton("Далее", "next"), new InlineButton("Назад", "back"))
.Reply("Отмена")
.SendAsync(ct);
}
public override async Task OnButton(PageContext ctx, string payload, CancellationToken ct)
{
switch (payload)
{
case "next":
{
await SaveState(ctx, ct);
await ctx.Navigation.GoToAsync<FilesPage>(ctx, ct);
break;
}
case "back":
{
await ctx.Navigation.GoToAsync<TitlePage>(ctx, ct);
break;
}
}
;
}
public override async Task OnText(PageContext ctx, string text, CancellationToken ct)
{
Request.Details = text;
await SaveState(ctx, ct);
await ctx.Navigation.GoToAsync<FilesPage>(ctx, ct);
}
}
/// <summary>
/// Аргументы для страницы DetailsPage.
/// </summary>
public sealed class DetailsArgs
{
public string Title { get; set; } = "";
}