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.AspNetCore.Components;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.JSInterop; using Microsoft.JSInterop;
using Volo.Abp.AspNetCore.Components.Progression;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
namespace Volo.Abp.AspNetCore.Components.WebAssembly namespace Volo.Abp.AspNetCore.Components.WebAssembly
@ -18,6 +19,8 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly
private readonly NavigationManager _navigationManager; private readonly NavigationManager _navigationManager;
private readonly IUiPageProgressService _uiPageProgressService;
private const string AntiForgeryCookieName = "XSRF-TOKEN"; private const string AntiForgeryCookieName = "XSRF-TOKEN";
private const string AntiForgeryHeaderName = "RequestVerificationToken"; private const string AntiForgeryHeaderName = "RequestVerificationToken";
@ -25,19 +28,37 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly
public AbpBlazorClientHttpMessageHandler( public AbpBlazorClientHttpMessageHandler(
IJSRuntime jsRuntime, IJSRuntime jsRuntime,
ICookieService cookieService, ICookieService cookieService,
NavigationManager navigationManager) NavigationManager navigationManager,
IUiPageProgressService uiPageProgressService)
{ {
_jsRuntime = jsRuntime; _jsRuntime = jsRuntime;
_cookieService = cookieService; _cookieService = cookieService;
_navigationManager = navigationManager; _navigationManager = navigationManager;
_uiPageProgressService = uiPageProgressService;
} }
protected async override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) protected async override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{ {
await SetLanguageAsync(request, cancellationToken); try
await SetAntiForgeryTokenAsync(request); {
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) 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 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); 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 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) public Task Go(int? percentage, Action<UiPageProgressOptions> options = null)
{ {
return Task.CompletedTask; 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 TAppService AppService { get; set; }
[Inject] protected IStringLocalizer<AbpUiResource> UiLocalizer { get; set; } [Inject] protected IStringLocalizer<AbpUiResource> UiLocalizer { get; set; }
[Inject] protected IUiPageProgressService PageProgressService { get; set; }
protected virtual int PageSize { get; } = LimitedResultRequestDto.DefaultMaxResultCount; protected virtual int PageSize { get; } = LimitedResultRequestDto.DefaultMaxResultCount;
@ -360,25 +359,7 @@ namespace Volo.Abp.BlazoriseUI
protected virtual async Task RunProcess(Func<Task> process) protected virtual async Task RunProcess(Func<Task> process)
{ {
try await process.Invoke();
{
// 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);
}
} }
protected virtual async Task CreateEntityAsync() 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 namespace Volo.Abp.BlazoriseUI
{ {
[Dependency(ReplaceServices = true)] [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> /// <summary>
/// An event raised after the notification is received. /// 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; } protected Color Color { get; set; }
[Inject] protected BlazoriseUiPageProgressService UiPageProgressService { get; set; } [Inject] protected IUiPageProgressService UiPageProgressService { get; set; }
protected override void OnInitialized() protected override void OnInitialized()
{ {

Loading…
Cancel
Save