mirror of
https://github.com/bitwarden/mobile.git
synced 2024-11-25 12:05:59 +01:00
Push notification and sync fixes
This commit is contained in:
parent
8653a76e26
commit
7a48128e43
@ -1,5 +1,6 @@
|
||||
using Bit.App.Enums;
|
||||
using System;
|
||||
using Newtonsoft.Json.Linq;
|
||||
|
||||
namespace Bit.App.Models.Api
|
||||
{
|
||||
@ -9,7 +10,7 @@ namespace Bit.App.Models.Api
|
||||
public string FolderId { get; set; }
|
||||
public CipherType Type { get; set; }
|
||||
public bool Favorite { get; set; }
|
||||
public dynamic Data { get; set; }
|
||||
public JObject Data { get; set; }
|
||||
public DateTime RevisionDate { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -32,11 +32,7 @@ namespace Bit.App.Models.Data
|
||||
throw new ArgumentException(nameof(cipher.Type));
|
||||
}
|
||||
|
||||
var data = cipher.Data as FolderDataModel;
|
||||
if(data == null)
|
||||
{
|
||||
throw new ArgumentException(nameof(cipher.Data));
|
||||
}
|
||||
var data = cipher.Data.ToObject<SiteDataModel>();
|
||||
|
||||
Id = cipher.Id;
|
||||
UserId = userId;
|
||||
|
@ -2,6 +2,7 @@
|
||||
using SQLite;
|
||||
using Bit.App.Abstractions;
|
||||
using Bit.App.Models.Api;
|
||||
using Newtonsoft.Json.Linq;
|
||||
|
||||
namespace Bit.App.Models.Data
|
||||
{
|
||||
@ -44,11 +45,7 @@ namespace Bit.App.Models.Data
|
||||
throw new ArgumentException(nameof(cipher.Type));
|
||||
}
|
||||
|
||||
var data = cipher.Data as SiteDataModel;
|
||||
if(data == null)
|
||||
{
|
||||
throw new ArgumentException(nameof(cipher.Data));
|
||||
}
|
||||
var data = cipher.Data.ToObject<SiteDataModel>();
|
||||
|
||||
Id = cipher.Id;
|
||||
UserId = userId;
|
||||
|
@ -15,7 +15,7 @@ namespace Bit.App.Models.Page
|
||||
Id = site.Id;
|
||||
FolderId = folderId;
|
||||
Name = site.Name?.Decrypt();
|
||||
Username = site.Username?.Decrypt();
|
||||
Username = site.Username?.Decrypt() ?? " ";
|
||||
Password = site.Password?.Decrypt();
|
||||
Uri = site.Uri?.Decrypt();
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
using Bit.App.Enums;
|
||||
using System;
|
||||
using Bit.App.Enums;
|
||||
|
||||
namespace Bit.App.Models
|
||||
{
|
||||
@ -7,13 +8,19 @@ namespace Bit.App.Models
|
||||
public PushType Type { get; set; }
|
||||
}
|
||||
|
||||
public class SyncPushNotification : PushNotification
|
||||
public abstract class SyncPushNotification : PushNotification
|
||||
{
|
||||
public string UserId { get; set; }
|
||||
}
|
||||
|
||||
public class SyncCipherPushNotification : SyncPushNotification
|
||||
{
|
||||
public string CipherId { get; set; }
|
||||
public string Id { get; set; }
|
||||
public DateTime RevisionDate { get; set; }
|
||||
}
|
||||
|
||||
public class SyncCiphersPushNotification : SyncPushNotification
|
||||
{
|
||||
public DateTime Date { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ using Bit.App.Controls;
|
||||
using Acr.UserDialogs;
|
||||
using Plugin.Settings.Abstractions;
|
||||
using Plugin.Fingerprint.Abstractions;
|
||||
using PushNotification.Plugin.Abstractions;
|
||||
|
||||
namespace Bit.App.Pages
|
||||
{
|
||||
@ -16,6 +17,7 @@ namespace Bit.App.Pages
|
||||
private readonly IUserDialogs _userDialogs;
|
||||
private readonly ISettings _settings;
|
||||
private readonly IFingerprint _fingerprint;
|
||||
private readonly IPushNotification _pushNotification;
|
||||
|
||||
// TODO: Model binding context?
|
||||
|
||||
@ -25,6 +27,7 @@ namespace Bit.App.Pages
|
||||
_userDialogs = Resolver.Resolve<IUserDialogs>();
|
||||
_settings = Resolver.Resolve<ISettings>();
|
||||
_fingerprint = Resolver.Resolve<IFingerprint>();
|
||||
_pushNotification = Resolver.Resolve<IPushNotification>();
|
||||
|
||||
Init();
|
||||
}
|
||||
@ -174,6 +177,7 @@ namespace Bit.App.Pages
|
||||
}
|
||||
|
||||
_authService.LogOut();
|
||||
_pushNotification.Unregister();
|
||||
Application.Current.MainPage = new HomePage();
|
||||
}
|
||||
|
||||
|
@ -39,17 +39,18 @@ namespace Bit.App.Services
|
||||
case Enums.PushType.SyncCipherUpdate:
|
||||
case Enums.PushType.SyncCipherCreate:
|
||||
var createUpdateMessage = values.ToObject<SyncCipherPushNotification>();
|
||||
_syncService.SyncAsync(createUpdateMessage.CipherId);
|
||||
_syncService.SyncAsync(createUpdateMessage.Id);
|
||||
break;
|
||||
case Enums.PushType.SyncFolderDelete:
|
||||
var folderDeleteMessage = values.ToObject<SyncCipherPushNotification>();
|
||||
_syncService.SyncDeleteFolderAsync(folderDeleteMessage.CipherId);
|
||||
_syncService.SyncDeleteFolderAsync(folderDeleteMessage.Id);
|
||||
break;
|
||||
case Enums.PushType.SyncSiteDelete:
|
||||
var siteDeleteMessage = values.ToObject<SyncCipherPushNotification>();
|
||||
_syncService.SyncDeleteFolderAsync(siteDeleteMessage.CipherId);
|
||||
_syncService.SyncDeleteSiteAsync(siteDeleteMessage.Id);
|
||||
break;
|
||||
case Enums.PushType.SyncCiphers:
|
||||
var cipherMessage = values.ToObject<SyncCiphersPushNotification>();
|
||||
_syncService.FullSyncAsync();
|
||||
break;
|
||||
default:
|
||||
|
@ -125,7 +125,7 @@ namespace Bit.App.Services
|
||||
var folderTask = SyncFoldersAsync(ciphers.Result.Data.Where(c => c.Type == Enums.CipherType.Folder), true);
|
||||
await Task.WhenAll(siteTask, folderTask);
|
||||
|
||||
if(folderTask.Exception == null || siteTask.Exception == null)
|
||||
if(folderTask.Exception != null || siteTask.Exception != null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -164,7 +164,7 @@ namespace Bit.App.Services
|
||||
|
||||
await Task.WhenAll(siteTask, folderTask);
|
||||
|
||||
if(folderTask.Exception == null || siteTask.Exception == null)
|
||||
if(folderTask.Exception != null || siteTask.Exception != null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user