Доработано Demo
All checks were successful
CI / build-test (push) Successful in 30s

This commit is contained in:
2025-12-05 13:33:25 +03:00
parent d817417a69
commit e6e5459280
10 changed files with 103 additions and 15 deletions

View File

@@ -1,27 +1,57 @@
using BotPages.Core;
using BotPages.Core.Messaging;
using System.Xml;
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)
=> new MessageBuilder(ctx)
{
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 Task OnButton(PageContext ctx, string payload, CancellationToken ct)
=> payload switch
public override async Task OnButton(PageContext ctx, string payload, CancellationToken ct)
{
switch (payload)
{
"next" => ctx.Navigation.GoToAsync<FilesPage>(ctx, ct),
"back" => ctx.Navigation.GoToAsync<TitlePage>(ctx, ct),
_ => Task.CompletedTask
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>