Browse Source

IUiPageProgressService moved to AbpBlazorClientHttpMessageHandler

pull/6853/head
Mladen Macanovic 6 years ago
parent
commit
7ac1877b73
  1. 29
      framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/AbpBlazorClientHttpMessageHandler.cs
  2. 11
      framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/IUiPageProgressService.cs
  3. 4
      framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/NullUiPageProgressService.cs
  4. 21
      framework/src/Volo.Abp.BlazoriseUI/AbpCrudPageBase.cs
  5. 5
      framework/src/Volo.Abp.BlazoriseUI/BlazoriseUiPageProgressService.cs
  6. 2
      framework/src/Volo.Abp.BlazoriseUI/Components/UiPageProgress.razor.cs

29
framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/AbpBlazorClientHttpMessageHandler.cs

@ -6,6 +6,7 @@ using System.Threading.Tasks;
using Microsoft.AspNetCore.Components;
using Microsoft.Extensions.Configuration;
using Microsoft.JSInterop;
using Volo.Abp.AspNetCore.Components.Progression;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.AspNetCore.Components.WebAssembly
@ -18,6 +19,8 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly
private readonly NavigationManager _navigationManager;
private readonly IUiPageProgressService _uiPageProgressService;
private const string AntiForgeryCookieName = "XSRF-TOKEN";
private const string AntiForgeryHeaderName = "RequestVerificationToken";
@ -25,19 +28,37 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly
public AbpBlazorClientHttpMessageHandler(
IJSRuntime jsRuntime,
ICookieService cookieService,
NavigationManager navigationManager)
NavigationManager navigationManager,
IUiPageProgressService uiPageProgressService)
{
_jsRuntime = jsRuntime;
_cookieService = cookieService;
_navigationManager = navigationManager;
_uiPageProgressService = uiPageProgressService;
}
protected async override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
await SetLanguageAsync(request, cancellationToken);
await SetAntiForgeryTokenAsync(request);
try
{
await _uiPageProgressService.Go(null, options =>
{
options.Type = UiPageProgressType.Info;
});
return await base.SendAsync(request, cancellationToken);
await SetLanguageAsync(request, cancellationToken);
await SetAntiForgeryTokenAsync(request);
return await base.SendAsync(request, cancellationToken);
}
catch (Exception)
{
throw;
}
finally
{
await _uiPageProgressService.Go(-1);
}
}
private async Task SetLanguageAsync(HttpRequestMessage request, CancellationToken cancellationToken)

11
framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/IUiPageProgressService.cs

@ -5,6 +5,17 @@ namespace Volo.Abp.AspNetCore.Components.Progression
{
public interface IUiPageProgressService
{
/// <summary>
/// An event raised after the notification is received.
/// </summary>
public event EventHandler<UiPageProgressEventArgs> ProgressChanged;
/// <summary>
/// Sets the progress percentage.
/// </summary>
/// <param name="percentage">Value of the progress from 0 to 100, or null for indeterminate progress.</param>
/// <param name="options">Additional options.</param>
/// <returns>Awaitable task.</returns>
Task Go(int? percentage, Action<UiPageProgressOptions> options = null);
}
}

4
framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/Progression/NullUiPageProgressService.cs

@ -4,8 +4,10 @@ using Volo.Abp.DependencyInjection;
namespace Volo.Abp.AspNetCore.Components.Progression
{
public class NullUiPageProgressService : IUiPageProgressService, ITransientDependency
public class NullUiPageProgressService : IUiPageProgressService, ISingletonDependency
{
public event EventHandler<UiPageProgressEventArgs> ProgressChanged;
public Task Go(int? percentage, Action<UiPageProgressOptions> options = null)
{
return Task.CompletedTask;

21
framework/src/Volo.Abp.BlazoriseUI/AbpCrudPageBase.cs

@ -173,7 +173,6 @@ namespace Volo.Abp.BlazoriseUI
{
[Inject] protected TAppService AppService { get; set; }
[Inject] protected IStringLocalizer<AbpUiResource> UiLocalizer { get; set; }
[Inject] protected IUiPageProgressService PageProgressService { get; set; }
protected virtual int PageSize { get; } = LimitedResultRequestDto.DefaultMaxResultCount;
@ -360,25 +359,7 @@ namespace Volo.Abp.BlazoriseUI
protected virtual async Task RunProcess(Func<Task> process)
{
try
{
// null means the progress will loop itself
await PageProgressService?.Go(null, options =>
{
options.Type = UiPageProgressType.Info;
});
await process.Invoke();
}
catch (Exception)
{
throw;
}
finally
{
// -1 is not valid value so the progress will hide
await PageProgressService?.Go(-1);
}
await process.Invoke();
}
protected virtual async Task CreateEntityAsync()

5
framework/src/Volo.Abp.BlazoriseUI/BlazoriseUiPageProgressService.cs

@ -7,7 +7,10 @@ using Volo.Abp.DependencyInjection;
namespace Volo.Abp.BlazoriseUI
{
[Dependency(ReplaceServices = true)]
public class BlazoriseUiPageProgressService : IUiPageProgressService, IScopedDependency
public class BlazoriseUiPageProgressService : IUiPageProgressService,
// WARNING: this is made Singleton because there was an issue with ABP internal DI.
// TODO: make it Scoped once the issue is solved.
ISingletonDependency
{
/// <summary>
/// An event raised after the notification is received.

2
framework/src/Volo.Abp.BlazoriseUI/Components/UiPageProgress.razor.cs

@ -15,7 +15,7 @@ namespace Volo.Abp.BlazoriseUI.Components
protected Color Color { get; set; }
[Inject] protected BlazoriseUiPageProgressService UiPageProgressService { get; set; }
[Inject] protected IUiPageProgressService UiPageProgressService { get; set; }
protected override void OnInitialized()
{

Loading…
Cancel
Save