1
0
mirror of https://github.com/bitwarden/mobile synced 2026-01-01 16:13:15 +00:00

sync domain settings

This commit is contained in:
Kyle Spearrin
2017-02-08 22:04:07 -05:00
parent 2c1ebc0439
commit 2a1bd92e1a
7 changed files with 64 additions and 20 deletions

View File

@@ -7,6 +7,7 @@ using Plugin.Settings.Abstractions;
using Bit.App.Models.Api;
using System.Collections.Generic;
using Xamarin.Forms;
using Newtonsoft.Json;
namespace Bit.App.Services
{
@@ -16,8 +17,10 @@ namespace Bit.App.Services
private readonly IFolderApiRepository _folderApiRepository;
private readonly ILoginApiRepository _loginApiRepository;
private readonly IAccountsApiRepository _accountsApiRepository;
private readonly ISettingsApiRepository _settingsApiRepository;
private readonly IFolderRepository _folderRepository;
private readonly ILoginRepository _loginRepository;
private readonly ISettingsRepository _settingsRepository;
private readonly IAuthService _authService;
private readonly ISettings _settings;
@@ -26,8 +29,10 @@ namespace Bit.App.Services
IFolderApiRepository folderApiRepository,
ILoginApiRepository loginApiRepository,
IAccountsApiRepository accountsApiRepository,
ISettingsApiRepository settingsApiRepository,
IFolderRepository folderRepository,
ILoginRepository loginRepository,
ISettingsRepository settingsRepository,
IAuthService authService,
ISettings settings)
{
@@ -35,8 +40,10 @@ namespace Bit.App.Services
_folderApiRepository = folderApiRepository;
_loginApiRepository = loginApiRepository;
_accountsApiRepository = accountsApiRepository;
_settingsApiRepository = settingsApiRepository;
_folderRepository = folderRepository;
_loginRepository = loginRepository;
_settingsRepository = settingsRepository;
_authService = authService;
_settings = settings;
}
@@ -157,12 +164,20 @@ namespace Bit.App.Services
var now = DateTime.UtcNow;
var ciphers = await _cipherApiRepository.GetAsync().ConfigureAwait(false);
if(!ciphers.Succeeded)
var domains = await _settingsApiRepository.GetDomains(false).ConfigureAwait(false);
if(!ciphers.Succeeded || !domains.Succeeded)
{
SyncCompleted(false);
if(Application.Current == null)
{
return false;
}
if(Application.Current != null && (ciphers.StatusCode == System.Net.HttpStatusCode.Forbidden
|| ciphers.StatusCode == System.Net.HttpStatusCode.Unauthorized))
if(ciphers.StatusCode == System.Net.HttpStatusCode.Forbidden ||
ciphers.StatusCode == System.Net.HttpStatusCode.Unauthorized ||
domains.StatusCode == System.Net.HttpStatusCode.Forbidden ||
domains.StatusCode == System.Net.HttpStatusCode.Unauthorized)
{
MessagingCenter.Send(Application.Current, "Logout", (string)null);
}
@@ -175,9 +190,10 @@ namespace Bit.App.Services
var loginTask = SyncLoginsAsync(logins, true);
var folderTask = SyncFoldersAsync(folders, true);
await Task.WhenAll(loginTask, folderTask).ConfigureAwait(false);
var domainsTask = SyncDomainsAsync(domains.Result);
await Task.WhenAll(loginTask, folderTask, domainsTask).ConfigureAwait(false);
if(folderTask.Exception != null || loginTask.Exception != null)
if(folderTask.Exception != null || loginTask.Exception != null || domainsTask.Exception != null)
{
SyncCompleted(false);
return false;
@@ -294,6 +310,26 @@ namespace Bit.App.Services
}
}
private async Task SyncDomainsAsync(DomainsResponse serverDomains)
{
var eqDomains = new List<IEnumerable<string>>();
if(serverDomains.EquivalentDomains != null)
{
eqDomains.AddRange(serverDomains.EquivalentDomains);
}
if(serverDomains.GlobalEquivalentDomains != null)
{
eqDomains.AddRange(serverDomains.GlobalEquivalentDomains.Select(d => d.Domains));
}
await _settingsRepository.UpsertAsync(new SettingsData
{
Id = _authService.UserId,
EquivalentDomains = JsonConvert.SerializeObject(eqDomains)
});
}
private void SyncStarted()
{
if(Application.Current == null)