This commit is contained in:
@@ -34,7 +34,7 @@ public sealed class BotPagesApp
|
||||
/// <summary>
|
||||
/// Установить страницу по умолчанию.
|
||||
/// </summary>
|
||||
public BotPagesApp AddDefaultPage<TPage>() where TPage : Page
|
||||
public BotPagesApp AddDefaultPage<TPage>() where TPage : SingletonPage
|
||||
{
|
||||
_navigation.AddDefaultPage<TPage>();
|
||||
return this;
|
||||
|
||||
@@ -22,6 +22,26 @@ public sealed class PageContext
|
||||
/// <summary>Адаптер мессенджера.</summary>
|
||||
public required IMessengerAdapter Adapter { get; init; }
|
||||
|
||||
//Storage
|
||||
|
||||
/// <summary>Получить состояние по ключу.</summary>
|
||||
public Task<T?> GetStorageAsync<T>(string key, CancellationToken ct)
|
||||
=> StateStorage.GetAsync<T>(SessionKey, key, ct);
|
||||
|
||||
/// <summary>Сохранить состояние по ключу.</summary>
|
||||
public Task SetStorageAsync<T>(string key, T state, CancellationToken ct)
|
||||
=> StateStorage.SetAsync<T>(SessionKey, key, state, ct);
|
||||
|
||||
/// <summary>Удалить состояние по ключу.</summary>
|
||||
public Task<bool> RemoveStorageAsync(string key, CancellationToken ct)
|
||||
=> StateStorage.RemoveAsync(SessionKey, key, ct);
|
||||
|
||||
/// <summary>Удалить все состояния по ключу.</summary>
|
||||
public Task<bool> ClearStorageAsync(CancellationToken ct)
|
||||
=> StateStorage.ClearAsync(SessionKey, ct);
|
||||
|
||||
//Adapter
|
||||
|
||||
/// <summary>
|
||||
/// Отправить текстовое сообщение.
|
||||
/// </summary>
|
||||
|
||||
@@ -23,7 +23,7 @@ public sealed class NavigationService
|
||||
_routes = routes;
|
||||
}
|
||||
|
||||
internal void AddDefaultPage<TPage>() where TPage : Page
|
||||
internal void AddDefaultPage<TPage>() where TPage : SingletonPage
|
||||
{
|
||||
_defaultPage = typeof(TPage);
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/// <summary>
|
||||
/// Атрибут для свойств страницы, которые должны сохраняться в StateStorage.
|
||||
/// </summary>
|
||||
[AttributeUsage(AttributeTargets.Property)]
|
||||
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)]
|
||||
public sealed class StatefullAttribute : Attribute
|
||||
{
|
||||
/// <summary>
|
||||
|
||||
@@ -21,7 +21,7 @@ public abstract class StatefullPage : Page
|
||||
/// <summary>
|
||||
/// Загружает значения свойств из StateStorage.
|
||||
/// </summary>
|
||||
internal async Task LoadState(PageContext ctx, CancellationToken ct)
|
||||
protected async Task LoadState(PageContext ctx, CancellationToken ct)
|
||||
{
|
||||
foreach (var prop in GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance))
|
||||
{
|
||||
@@ -40,7 +40,7 @@ public abstract class StatefullPage : Page
|
||||
/// <summary>
|
||||
/// Сохраняет значения свойств в StateStorage.
|
||||
/// </summary>
|
||||
internal async Task SaveState(PageContext ctx, CancellationToken ct)
|
||||
protected async Task SaveState(PageContext ctx, CancellationToken ct)
|
||||
{
|
||||
foreach (var prop in GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user