private async Task <T> RefreshTokenAndRetryGet <T>(T result, string url) where T : new() { var accessToken = _secureStorageService.GetAsync(Constants.AccessToken).Result; var refreshToken = _secureStorageService.GetAsync(Constants.RefreshToken).Result; bool hasBothTokens = string.IsNullOrEmpty(accessToken) == false && string.IsNullOrEmpty(refreshToken) == false; if (hasBothTokens) { var tokens = await RefreshToken(new RefreshTokenModel { AccessToken = accessToken, RefreshToken = refreshToken }); bool hasBothNewTokens = string.IsNullOrEmpty(tokens.AccessToken) == false && string.IsNullOrEmpty(tokens.RefreshToken) == false; if (hasBothNewTokens) { await _secureStorageService.SetAsync(Constants.AccessToken, tokens.AccessToken); await _secureStorageService.SetAsync(Constants.RefreshToken, tokens.RefreshToken); //try again HttpRequestMessage request = ConstructGetRequest(url); using (HttpResponseMessage httpResponse = await _httpClient.SendAsync(request).ConfigureAwait(false)) { result = await DeserializeContentStream(result, httpResponse); } } } return(result); }
public async Task UpdatePushNotificationServiceHandleAsync(string pnsHandle) { if (string.IsNullOrWhiteSpace(pnsHandle)) { throw new ArgumentException("Push notification service handle cannot be empty"); } var currentHandle = await GetPushNotificationServiceHandleAsync(); if (pnsHandle != currentHandle) { if (string.IsNullOrWhiteSpace(currentHandle)) { AnalyticsService.TraceInformation(this, "PnsHandle saved", "PnsHandle", pnsHandle); } else { AnalyticsService.TraceInformation(this, "PnsHandle updated", new Dictionary <string, object> { { "OldPnsHandle", currentHandle }, { "NewPnsHandle", pnsHandle }, }); } _currentPnsHandle = pnsHandle; await _secureStorageService.SetAsync(PnsHandleKey, pnsHandle); } }
private async void OnSetUpPressed(object sender, EventArgs e) { string serverUrl = ServerEntry.Text; string devicePrivateKeyBase64 = await _secureStorageService.GetAsync("devicePrivateKey"); Curve25519KeyPair deviceKeyPair; if (devicePrivateKeyBase64 is null) { deviceKeyPair = new Curve25519KeyPair(); await _secureStorageService.SetAsync("devicePrivateKey", Convert.ToBase64String(deviceKeyPair.EdPrivateKey)); } else { deviceKeyPair = new Curve25519KeyPair(Convert.FromBase64String(devicePrivateKeyBase64), true, true); } _connection = new ServerConnection(serverUrl, deviceKeyPair); string deviceUuid = await _connection.RegisterDeviceAsync(); string userUuid = await _connection.RegisterUserAsync(EmailEntry.Text, GlobalKeyStore.Instance.IdentityKeyPair, GlobalKeyStore.Instance.SignedPreKeyPairs[0], ":)", "Non-contradictory"); await _connection.UploadOneTimePreKeysAsync(GlobalKeyStore.Instance.OneTimePreKeyPairs); await DisplayAlert("Information: ", $"Device ID: {deviceUuid}\nUser ID: {userUuid}", "Ok"); EmailEntry.Text = userUuid; }
public async Task UpdateFactAsync(CancellationToken cancellationToken) { var fact = await _restService.GetFactAsync(cancellationToken); await _secureStorageService.SetAsync("fact", fact); _backgroundService.UpdateNotificationMessage(fact.Text); }
public async Task <Account> Login(Credential credential) { var tokens = await _accountApiService.GetToken(credential); if (tokens.UserName != null) { await _secureStorageService.SetAsync(Constants.AccessToken, tokens.AccessToken); await _secureStorageService.SetAsync(Constants.RefreshToken, tokens.RefreshToken); await _secureStorageService.SetAsync(Constants.IsRegistered, "true"); await _secureStorageService.SetAsync(Constants.Email, credential.UserName); } else { ClearSavedTokens(); } await GetAccount(); return(Account); }