From 973beb9e2fd9ef70147837eec13ad422a9a0f4a9 Mon Sep 17 00:00:00 2001 From: masoodafar-web Date: Thu, 20 Nov 2025 21:07:05 +0330 Subject: [PATCH] Add MainService for state management and update Index and AuthDialog to utilize it --- src/FrontOffice.Main/Pages/Index.razor.cs | 39 +++++++++++++------ src/FrontOffice.Main/Program.cs | 1 + .../Shared/AuthDialog.razor.cs | 3 ++ src/FrontOffice.Main/Utilities/MainService.cs | 13 +++++++ src/FrontOffice.Main/_Imports.razor | 3 +- 5 files changed, 47 insertions(+), 12 deletions(-) create mode 100644 src/FrontOffice.Main/Utilities/MainService.cs diff --git a/src/FrontOffice.Main/Pages/Index.razor.cs b/src/FrontOffice.Main/Pages/Index.razor.cs index 43311ad..4fe5f36 100644 --- a/src/FrontOffice.Main/Pages/Index.razor.cs +++ b/src/FrontOffice.Main/Pages/Index.razor.cs @@ -6,7 +6,7 @@ using System.Security.Cryptography; namespace FrontOffice.Main.Pages; -public partial class Index +public partial class Index:IDisposable { [Inject] private PackageContract.PackageContractClient PackageClient { get; set; } = default!; [Inject] private MobileNumberEncryptor Encryptor { get; set; } @@ -17,7 +17,25 @@ public partial class Index protected override async Task OnInitializedAsync() { + MainService.OnChangeHandler +=async () => + { + await InvokeAsync(StateHasChanged); + }; await LoadPackagesAsync(); + + //string mobileNumber = "09387342688"; + + //// انکریپت کردن + //string encrypted = Encryptor.EncryptMobileNumber(mobileNumber); + //Console.WriteLine($"Encrypted: {encrypted}"); + + //// دیکریپت کردن برای تست + //string decrypted = Encryptor.DecryptMobileNumber(encrypted); + //Console.WriteLine($"Decrypted: {decrypted}"); + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { if (await AuthService.IsAuthenticatedAsync()) { if ((await AuthService.IsCompleteRegisterAsync())) @@ -29,16 +47,7 @@ public partial class Index Navigation.NavigateTo(RouteConstants.Registration.Wizard); } } - - //string mobileNumber = "09387342688"; - - //// انکریپت کردن - //string encrypted = Encryptor.EncryptMobileNumber(mobileNumber); - //Console.WriteLine($"Encrypted: {encrypted}"); - - //// دیکریپت کردن برای تست - //string decrypted = Encryptor.DecryptMobileNumber(encrypted); - //Console.WriteLine($"Decrypted: {decrypted}"); + await base.OnAfterRenderAsync(firstRender); } private async Task LoadPackagesAsync() @@ -108,4 +117,12 @@ public partial class Index new("چه درگاه‌هایی پشتیبانی می‌شود؟", "Stripe و PayPal یا درگاه اختصاصی از طریق وب‌هوک‌ها."), new("می‌توانم داده‌ها را خروجی بگیرم؟", "هر زمان از داشبورد ادمین خروجی CSV/Excel بگیرید."), }; + + public void Dispose() + { + MainService.OnChangeHandler -=async () => + { + await InvokeAsync(StateHasChanged); + }; + } } \ No newline at end of file diff --git a/src/FrontOffice.Main/Program.cs b/src/FrontOffice.Main/Program.cs index d8e949a..c6372b1 100644 --- a/src/FrontOffice.Main/Program.cs +++ b/src/FrontOffice.Main/Program.cs @@ -12,6 +12,7 @@ builder.Services.AddServerSideBlazor(); #region AddCommonServices builder.Services.AddCommonServices(); +builder.Services.AddSingleton(); #endregion #region AddGrpcServices diff --git a/src/FrontOffice.Main/Shared/AuthDialog.razor.cs b/src/FrontOffice.Main/Shared/AuthDialog.razor.cs index c12ba4a..a4c10f9 100644 --- a/src/FrontOffice.Main/Shared/AuthDialog.razor.cs +++ b/src/FrontOffice.Main/Shared/AuthDialog.razor.cs @@ -231,7 +231,10 @@ public partial class AuthDialog : IDisposable { MudDialog?.Close(); } + await OnLoginSuccess.InvokeAsync(); + await InvokeAsync(StateHasChanged); + MainService.OnOnChangeHandler(); // await OnLoginSuccessAsync(); return true; } diff --git a/src/FrontOffice.Main/Utilities/MainService.cs b/src/FrontOffice.Main/Utilities/MainService.cs new file mode 100644 index 0000000..c7565c9 --- /dev/null +++ b/src/FrontOffice.Main/Utilities/MainService.cs @@ -0,0 +1,13 @@ +using Microsoft.AspNetCore.Components; + +namespace FrontOffice.Main.Utilities; + +public class MainService +{ + public event Action OnChangeHandler; + + public virtual void OnOnChangeHandler() + { + OnChangeHandler?.Invoke(); + } +} \ No newline at end of file diff --git a/src/FrontOffice.Main/_Imports.razor b/src/FrontOffice.Main/_Imports.razor index f17cec2..be178e9 100644 --- a/src/FrontOffice.Main/_Imports.razor +++ b/src/FrontOffice.Main/_Imports.razor @@ -16,4 +16,5 @@ @inject NavigationManager Navigation @inject IDialogService DialogService @inject IJSRuntime JSRuntime -@inject ISnackbar Snackbar \ No newline at end of file +@inject ISnackbar Snackbar +@inject MainService MainService \ No newline at end of file