@using Newtonsoft.Json @using Models.Identity @inject ILoadingSpinner _LoadingSpinner @inherits LayoutComponentBase
@Body
@code { protected override async void OnAfterRender(bool firstRender) { if (firstRender) await CheckLogin(); base.OnAfterRender(firstRender); } async Task CheckLogin() { Console.WriteLine("" + Statics.LastCheck); if (Statics.LastCheck.HasValue && DateTime.Now.Subtract(Statics.LastCheck.Value).TotalMinutes < 5) { Console.WriteLine("less than 5 minutes login check"); base.OnInitialized(); return; } Console.WriteLine("checking login..."); Statics.LastCheck = DateTime.Now; var hasToken = await LocalStorage.ContainKeyAsync(Statics.LoginTokenKey); if (!hasToken) NavigationManager.NavigateTo("/login"); else { var token = await LocalStorage.GetItemAsStringAsync(Statics.LoginTokenKey); var res = await _userUtils.CheckLogin(); var result = JsonConvert.DeserializeObject( await res.Content.ReadAsStringAsync()); if (!res.IsSuccessStatusCode) { await _LoadingSpinner.HideLoading(); await _sweetAlertService.ShowSwal(title: "", message: "Login Expired", SweetAlertIcon.Error); NavigationManager.NavigateTo("/login"); } await _LoadingSpinner.HideLoading(); Statics.CurrentLoginInfo = result; StateHasChanged(); } } private async void SignOut() { await LocalStorage.RemoveItemAsync(Statics.LoginTokenKey); await LocalStorage.RemoveItemAsync(Statics.RefreshTokenKey); NavigationManager.NavigateTo("/login"); } }