private async Task <bool> CheckAndRenewToken() { try { ILoginClient loginClient = ServiceLocator.Current.GetInstance <ILoginClient>(); ITokenContainer tokenContainer = ServiceLocator.Current.GetInstance <ITokenContainer>(); IConfiguration config = ServiceLocator.Current.GetInstance <IConfiguration>(); if (loginClient == null || tokenContainer == null || config == null) { return(false); } int NumberOfMinutes = 10; try { IConfiguration miscconfig = config.GetSection("Misc"); if (miscconfig != null) { string strNumberOfMinutes = miscconfig.GetSection("TimeoutCheck").Value; if (!int.TryParse(strNumberOfMinutes, out NumberOfMinutes)) { NumberOfMinutes = 10; } } } catch { NumberOfMinutes = 10; } JwtSecurityToken token = new JwtSecurityToken(jwtEncodedString: tokenContainer.ApiToken as string); if (token == null) { return(false); } TimeSpan ts = token.ValidTo - DateTime.Now; if (ts.Minutes > NumberOfMinutes) { return(true); } else if (ts.Minutes < NumberOfMinutes) { TokenResponse response = await loginClient.RenewToken(); if (response.StatusIsSuccessful) { tokenContainer.ApiToken = response.Data; return(true); } } } catch { return(false); } return(false); }