mirror of
https://github.com/bitwarden/android.git
synced 2024-12-24 01:48:25 +03:00
full sync and cipher modification messages
This commit is contained in:
parent
2732fc93f9
commit
b0c6c09cea
3 changed files with 21 additions and 10 deletions
|
@ -16,9 +16,9 @@ namespace Bit.App.Abstractions
|
|||
Task<IEnumerable<Cipher>> GetAllByCollectionAsync(string collectionId);
|
||||
Task<Tuple<IEnumerable<Cipher>, IEnumerable<Cipher>, IEnumerable<Cipher>>> GetAllAsync(string uriString);
|
||||
Task<ApiResult<CipherResponse>> SaveAsync(Cipher cipher);
|
||||
Task UpsertDataAsync(CipherData cipher);
|
||||
Task UpsertDataAsync(CipherData cipher, bool sendMessage);
|
||||
Task<ApiResult> DeleteAsync(string id);
|
||||
Task DeleteDataAsync(string id);
|
||||
Task DeleteDataAsync(string id, bool sendMessage);
|
||||
Task<byte[]> DownloadAndDecryptAttachmentAsync(string url, string orgId = null);
|
||||
Task<ApiResult<CipherResponse>> EncryptAndSaveAttachmentAsync(Cipher cipher, byte[] data, string fileName);
|
||||
Task UpsertAttachmentDataAsync(IEnumerable<AttachmentData> attachments);
|
||||
|
|
|
@ -9,6 +9,7 @@ using Bit.App.Models.Data;
|
|||
using System.Net.Http;
|
||||
using Bit.App.Utilities;
|
||||
using System.Text.RegularExpressions;
|
||||
using Xamarin.Forms;
|
||||
|
||||
namespace Bit.App.Services
|
||||
{
|
||||
|
@ -254,7 +255,7 @@ namespace Bit.App.Services
|
|||
if(response.Succeeded)
|
||||
{
|
||||
var data = new CipherData(response.Result, _authService.UserId);
|
||||
await UpsertDataAsync(data);
|
||||
await UpsertDataAsync(data, true);
|
||||
cipher.Id = data.Id;
|
||||
}
|
||||
else if(response.StatusCode == System.Net.HttpStatusCode.Forbidden
|
||||
|
@ -266,11 +267,15 @@ namespace Bit.App.Services
|
|||
return response;
|
||||
}
|
||||
|
||||
public async Task UpsertDataAsync(CipherData cipher)
|
||||
public async Task UpsertDataAsync(CipherData cipher, bool sendMessage)
|
||||
{
|
||||
await _cipherRepository.UpsertAsync(cipher);
|
||||
CachedCiphers = null;
|
||||
_appSettingsService.ClearCiphersCache = true;
|
||||
if(sendMessage)
|
||||
{
|
||||
MessagingCenter.Send(Application.Current, "UpsertedCipher", cipher.Id);
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<ApiResult> DeleteAsync(string id)
|
||||
|
@ -278,7 +283,7 @@ namespace Bit.App.Services
|
|||
var response = await _cipherApiRepository.DeleteAsync(id);
|
||||
if(response.Succeeded)
|
||||
{
|
||||
await DeleteDataAsync(id);
|
||||
await DeleteDataAsync(id, true);
|
||||
}
|
||||
else if(response.StatusCode == System.Net.HttpStatusCode.Forbidden
|
||||
|| response.StatusCode == System.Net.HttpStatusCode.Unauthorized)
|
||||
|
@ -289,11 +294,15 @@ namespace Bit.App.Services
|
|||
return response;
|
||||
}
|
||||
|
||||
public async Task DeleteDataAsync(string id)
|
||||
public async Task DeleteDataAsync(string id, bool sendMessage)
|
||||
{
|
||||
await _cipherRepository.DeleteAsync(id);
|
||||
CachedCiphers = null;
|
||||
_appSettingsService.ClearCiphersCache = true;
|
||||
if(sendMessage)
|
||||
{
|
||||
MessagingCenter.Send(Application.Current, "DeletedCipher", id);
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<byte[]> DownloadAndDecryptAttachmentAsync(string url, string orgId = null)
|
||||
|
|
|
@ -84,7 +84,7 @@ namespace Bit.App.Services
|
|||
try
|
||||
{
|
||||
var cipherData = new CipherData(cipher.Result, _authService.UserId);
|
||||
await _cipherService.UpsertDataAsync(cipherData).ConfigureAwait(false);
|
||||
await _cipherService.UpsertDataAsync(cipherData, true).ConfigureAwait(false);
|
||||
|
||||
var localAttachments = (await _attachmentRepository.GetAllByCipherIdAsync(cipherData.Id)
|
||||
.ConfigureAwait(false));
|
||||
|
@ -181,7 +181,7 @@ namespace Bit.App.Services
|
|||
|
||||
try
|
||||
{
|
||||
await _cipherService.DeleteDataAsync(id).ConfigureAwait(false);
|
||||
await _cipherService.DeleteDataAsync(id, true).ConfigureAwait(false);
|
||||
SyncCompleted(true);
|
||||
return true;
|
||||
}
|
||||
|
@ -287,11 +287,13 @@ namespace Bit.App.Services
|
|||
domainsTask.Exception != null || profileTask.Exception != null)
|
||||
{
|
||||
SyncCompleted(false);
|
||||
MessagingCenter.Send(Application.Current, "FullSyncCompleted", false);
|
||||
return false;
|
||||
}
|
||||
|
||||
_settings.AddOrUpdateValue(Constants.LastSync, now);
|
||||
SyncCompleted(true);
|
||||
MessagingCenter.Send(Application.Current, "FullSyncCompleted", true);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -442,7 +444,7 @@ namespace Bit.App.Services
|
|||
localCiphers[serverCipher.Value.Id] : null;
|
||||
|
||||
var data = new CipherData(serverCipher.Value, _authService.UserId);
|
||||
await _cipherService.UpsertDataAsync(data).ConfigureAwait(false);
|
||||
await _cipherService.UpsertDataAsync(data, false).ConfigureAwait(false);
|
||||
|
||||
if(serverCipher.Value.Attachments != null)
|
||||
{
|
||||
|
@ -470,7 +472,7 @@ namespace Bit.App.Services
|
|||
{
|
||||
try
|
||||
{
|
||||
await _cipherService.DeleteDataAsync(cipher.Value.Id).ConfigureAwait(false);
|
||||
await _cipherService.DeleteDataAsync(cipher.Value.Id, false).ConfigureAwait(false);
|
||||
}
|
||||
catch(SQLite.SQLiteException) { }
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue