using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Authorization; using MP.Land.Data; using System; using System.Threading.Tasks; namespace MP.Land.Components { public partial class CmpTop : IDisposable { #region Public Methods public void Dispose() { AppMessages.EA_PageUpdated -= OnPageUpdate; GC.Collect(); } public void OnPageUpdate() { PageName = AppMessages.PageName; PageIcon = AppMessages.PageIcon; InvokeAsync(() => { StateHasChanged(); }); } #endregion Public Methods #region Protected Properties [Inject] protected LMessageService AppMessages { get; set; } = null!; #endregion Protected Properties #region Protected Methods protected override void OnInitialized() { AppMessages.EA_PageUpdated += OnPageUpdate; } protected override async Task OnInitializedAsync() { await forceReload(); } #endregion Protected Methods #region Private Fields private string userName = ""; #endregion Private Fields #region Private Properties private string PageIcon { get; set; } private string PageName { get; set; } [CascadingParameter(Name = "ShowSearch")] private bool ShowSearch { get; set; } #endregion Private Properties #region Private Methods private async Task forceReload() { userName = "N.A."; await Task.Delay(1); var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync(); var user = authState.User; if (user.Identity != null && user.Identity.IsAuthenticated) { userName = $"{user.Identity.Name}"; } else { userName = "N.A."; } } #endregion Private Methods } }