/// <summary> /// Determine if the user is logged in to Twitch. /// </summary> private void UpdateLoginStatus() { this.IsLoginStatusLoading = true; try { AccessTokens accessTokens = SettingsViewModel.GetInstance().AccessTokens; if (accessTokens == null || accessTokens.AccessToken.IsNullOrEmpty()) { this.IsLoggedIn = false; return; } User user = SqualrApi.GetTwitchUser(accessTokens.AccessToken); SqualrApi.Connect(accessTokens.AccessToken); this.ActiveUser = user; this.IsLoggedIn = true; } catch (Exception ex) { OutputViewModel.GetInstance().Log(OutputViewModel.LogLevel.Warn, "Unable to log in using stored credentials", ex); this.IsLoggedIn = false; } finally { this.IsLoginStatusLoading = false; } }
/// <summary> /// Gets the twitch oauth access tokens using the provided code. /// </summary> /// <param name="code">The one time use exchange code to receive the access tokens.</param> private void PerformLogin(String code) { try { AccessTokens accessTokens = SqualrApi.GetAccessTokens(code); User user = SqualrApi.GetTwitchUser(accessTokens.AccessToken); SqualrApi.Connect(accessTokens.AccessToken); SettingsViewModel.GetInstance().AccessTokens = accessTokens; BrowseViewModel.GetInstance().ActiveUser = user; BrowseViewModel.GetInstance().IsLoggedIn = true; } catch (Exception ex) { OutputViewModel.GetInstance().Log(OutputViewModel.LogLevel.Fatal, "Error authorizing Twitch", ex); } }
/// <summary> /// Called when the scheduled task is updated. /// </summary> /// <param name="cancellationToken">The cancellation token for handling canceled tasks.</param> protected override void OnUpdate(CancellationToken cancellationToken) { try { AccessTokens accessTokens = SettingsViewModel.GetInstance().AccessTokens; if (accessTokens == null || accessTokens.AccessToken.IsNullOrEmpty()) { return; } User user = SqualrApi.GetTwitchUser(accessTokens.AccessToken); this.UpdateAction?.Invoke(user.Coins); } catch (Exception ex) { OutputViewModel.GetInstance().Log(OutputViewModel.LogLevel.Error, "Error refreshing user", ex); } }