From d6ace65a782e3e59e30f9725fab3bb8c215266b0 Mon Sep 17 00:00:00 2001 From: maliming Date: Wed, 2 Apr 2025 15:24:45 +0800 Subject: [PATCH] Add timezone info to HTTP message handlers --- .../AbpMauiBlazorClientHttpMessageHandler.cs | 19 +++++++++++++++++-- .../Web/AbpBlazorClientHttpMessageHandler.cs | 18 +++++++++++++++++- 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Components.MauiBlazor/Volo/Abp/AspNetCore/Components/MauiBlazor/AbpMauiBlazorClientHttpMessageHandler.cs b/framework/src/Volo.Abp.AspNetCore.Components.MauiBlazor/Volo/Abp/AspNetCore/Components/MauiBlazor/AbpMauiBlazorClientHttpMessageHandler.cs index 9fb31979ac..7cbf09d4b2 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.MauiBlazor/Volo/Abp/AspNetCore/Components/MauiBlazor/AbpMauiBlazorClientHttpMessageHandler.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.MauiBlazor/Volo/Abp/AspNetCore/Components/MauiBlazor/AbpMauiBlazorClientHttpMessageHandler.cs @@ -6,6 +6,7 @@ using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Volo.Abp.AspNetCore.Components.Progression; using Volo.Abp.DependencyInjection; +using Volo.Abp.Timing; namespace Volo.Abp.AspNetCore.Components.MauiBlazor; @@ -13,12 +14,15 @@ public class AbpMauiBlazorClientHttpMessageHandler : DelegatingHandler, ITransie { private readonly IUiPageProgressService _uiPageProgressService; private readonly IMauiBlazorSelectedLanguageProvider _mauiBlazorSelectedLanguageProvider; + private readonly ICurrentTimezoneProvider _currentTimezoneProvider; public AbpMauiBlazorClientHttpMessageHandler( IClientScopeServiceProviderAccessor clientScopeServiceProviderAccessor, - IMauiBlazorSelectedLanguageProvider mauiBlazorSelectedLanguageProvider) + IMauiBlazorSelectedLanguageProvider mauiBlazorSelectedLanguageProvider, + ICurrentTimezoneProvider currentTimezoneProvider) { _mauiBlazorSelectedLanguageProvider = mauiBlazorSelectedLanguageProvider; + _currentTimezoneProvider = currentTimezoneProvider; _uiPageProgressService = clientScopeServiceProviderAccessor.ServiceProvider.GetRequiredService(); } @@ -32,6 +36,7 @@ public class AbpMauiBlazorClientHttpMessageHandler : DelegatingHandler, ITransie }); await SetLanguageAsync(request); + await SetTimeZoneAsync(request); return await base.SendAsync(request, cancellationToken); } @@ -51,4 +56,14 @@ public class AbpMauiBlazorClientHttpMessageHandler : DelegatingHandler, ITransie request.Headers.AcceptLanguage.Add(new StringWithQualityHeaderValue(selectedLanguage!)); } } -} \ No newline at end of file + + private Task SetTimeZoneAsync(HttpRequestMessage request) + { + if (!_currentTimezoneProvider.TimeZone.IsNullOrWhiteSpace()) + { + request.Headers.Add(TimeZoneConsts.DefaultTimeZoneKey, _currentTimezoneProvider.TimeZone); + } + + return Task.CompletedTask; + } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/AbpBlazorClientHttpMessageHandler.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/AbpBlazorClientHttpMessageHandler.cs index c92c121628..8984231254 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/AbpBlazorClientHttpMessageHandler.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/AbpBlazorClientHttpMessageHandler.cs @@ -8,6 +8,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.JSInterop; using Volo.Abp.AspNetCore.Components.Progression; using Volo.Abp.DependencyInjection; +using Volo.Abp.Timing; namespace Volo.Abp.AspNetCore.Components.Web; @@ -21,6 +22,8 @@ public class AbpBlazorClientHttpMessageHandler : DelegatingHandler, ITransientDe private readonly IUiPageProgressService _uiPageProgressService; + private readonly ICurrentTimezoneProvider _currentTimezoneProvider; + private const string AntiForgeryCookieName = "XSRF-TOKEN"; private const string AntiForgeryHeaderName = "RequestVerificationToken"; @@ -29,11 +32,13 @@ public class AbpBlazorClientHttpMessageHandler : DelegatingHandler, ITransientDe IJSRuntime jsRuntime, ICookieService cookieService, NavigationManager navigationManager, - IClientScopeServiceProviderAccessor clientScopeServiceProviderAccessor) + IClientScopeServiceProviderAccessor clientScopeServiceProviderAccessor, + ICurrentTimezoneProvider currentTimezoneProvider) { _jsRuntime = jsRuntime; _cookieService = cookieService; _navigationManager = navigationManager; + _currentTimezoneProvider = currentTimezoneProvider; _uiPageProgressService = clientScopeServiceProviderAccessor.ServiceProvider.GetRequiredService(); } @@ -48,6 +53,7 @@ public class AbpBlazorClientHttpMessageHandler : DelegatingHandler, ITransientDe await SetLanguageAsync(request, cancellationToken); await SetAntiForgeryTokenAsync(request); + await SetTimeZoneAsync(request); return await base.SendAsync(request, cancellationToken); } @@ -94,4 +100,14 @@ public class AbpBlazorClientHttpMessageHandler : DelegatingHandler, ITransientDe request.Headers.Add(AntiForgeryHeaderName, token); } } + + private Task SetTimeZoneAsync(HttpRequestMessage request) + { + if (!_currentTimezoneProvider.TimeZone.IsNullOrWhiteSpace()) + { + request.Headers.Add(TimeZoneConsts.DefaultTimeZoneKey, _currentTimezoneProvider.TimeZone); + } + + return Task.CompletedTask; + } }