@using Newtonsoft.Json
@using Models.Identity
@inject ILoadingSpinner _LoadingSpinner
@inherits LayoutComponentBase
@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");
}
}