private async Task <bool> RefreshSessionIfNeeded() { if (DateTime.Now.Subtract(LastSessionRefreshCheck).TotalSeconds < MinSessionTTL) { return(true); } await SessionSemaphore.WaitAsync().ConfigureAwait(false); if (DateTime.Now.Subtract(LastSessionRefreshCheck).TotalSeconds < MinSessionTTL) { SessionSemaphore.Release(); return(true); } bool result; bool?isLoggedIn = await IsLoggedIn().ConfigureAwait(false); if (isLoggedIn.GetValueOrDefault(true)) { result = true; LastSessionRefreshCheck = DateTime.Now; } else { Logging.LogGenericInfo("Refreshing our session!", Bot.BotName); result = await Bot.RefreshSession().ConfigureAwait(false); } SessionSemaphore.Release(); return(result); }
private async Task <bool> RefreshSessionIfNeeded() { if (DateTime.Now.Subtract(LastSessionRefreshCheck).TotalSeconds < MinSessionTTL) { return(true); } await SessionSemaphore.WaitAsync().ConfigureAwait(false); try { if (DateTime.Now.Subtract(LastSessionRefreshCheck).TotalSeconds < MinSessionTTL) { return(true); } bool?isLoggedIn = await IsLoggedIn().ConfigureAwait(false); if (isLoggedIn.GetValueOrDefault(true)) { LastSessionRefreshCheck = DateTime.Now; return(true); } else { Bot.ArchiLogger.LogGenericInfo("Refreshing our session!"); return(await Bot.RefreshSession().ConfigureAwait(false)); } } finally { SessionSemaphore.Release(); } }