From 23b7c67fce8d86db4bb4de9d0c33346220b908b8 Mon Sep 17 00:00:00 2001 From: ysmoradi Date: Sun, 16 Nov 2025 06:50:29 +0100 Subject: [PATCH] improve bit Boilerplate overall responsiveness in Blazor Hybrid (#11644) --- .../Components/AppClientCoordinator.cs | 4 ++-- .../Services/NoOpPrerenderStateService.cs | 20 +++++++++++-------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/AppClientCoordinator.cs b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/AppClientCoordinator.cs index 565c12e46a..499c2f228b 100644 --- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/AppClientCoordinator.cs +++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/AppClientCoordinator.cs @@ -285,9 +285,9 @@ private async Task EnsureSignalRStarted() { try { - if (hubConnection.State is not HubConnectionState.Connected or HubConnectionState.Connecting) + if (hubConnection.State is not (HubConnectionState.Connected or HubConnectionState.Connecting)) { - await hubConnection.StartAsync(CurrentCancellationToken); + await Task.Run(() => hubConnection.StartAsync(CurrentCancellationToken)); await HubConnectionConnected(null); } else diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Services/NoOpPrerenderStateService.cs b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Services/NoOpPrerenderStateService.cs index 38e7bb5d82..99988a11ea 100644 --- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Services/NoOpPrerenderStateService.cs +++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Services/NoOpPrerenderStateService.cs @@ -1,4 +1,4 @@ -using System.Runtime.CompilerServices; +using System.Runtime.CompilerServices; namespace Boilerplate.Client.Core.Services; @@ -7,17 +7,21 @@ namespace Boilerplate.Client.Core.Services; /// public class NoOpPrerenderStateService : IPrerenderStateService { - public Task GetValue(Func> factory, - [CallerLineNumber] int lineNumber = 0, - [CallerMemberName] string memberName = "", - [CallerFilePath] string filePath = "") + public async Task GetValue(string key, Func> factory) { - return factory(); + if (AppPlatform.IsBlazorHybrid) + { + return await Task.Run(() => factory()); // This would improve responsiveness on Blazor Hybrid scenarios + } + return await factory(); } - public Task GetValue(string key, Func> factory) + public Task GetValue(Func> factory, + [CallerLineNumber] int lineNumber = 0, + [CallerMemberName] string memberName = "", + [CallerFilePath] string filePath = "") { - return factory(); + return GetValue("", factory); } public ValueTask DisposeAsync() => ValueTask.CompletedTask;