mirror of
https://github.com/bitwarden/mobile
synced 2025-12-22 03:03:46 +00:00
implement ASHelpers from messages
This commit is contained in:
@@ -428,7 +428,7 @@ namespace Bit.App.Pages
|
|||||||
await _deviceActionService.HideLoadingAsync();
|
await _deviceActionService.HideLoadingAsync();
|
||||||
_platformUtilsService.ShowToast("success", null,
|
_platformUtilsService.ShowToast("success", null,
|
||||||
EditMode ? AppResources.ItemUpdated : AppResources.NewItemCreated);
|
EditMode ? AppResources.ItemUpdated : AppResources.NewItemCreated);
|
||||||
_messagingService.Send(EditMode ? "editedCipher" : "addedCipher");
|
_messagingService.Send(EditMode ? "editedCipher" : "addedCipher", Cipher.Id);
|
||||||
|
|
||||||
if((Page as AddEditPage).FromAutofillFramework)
|
if((Page as AddEditPage).FromAutofillFramework)
|
||||||
{
|
{
|
||||||
@@ -469,7 +469,7 @@ namespace Bit.App.Pages
|
|||||||
await _cipherService.DeleteWithServerAsync(Cipher.Id);
|
await _cipherService.DeleteWithServerAsync(Cipher.Id);
|
||||||
await _deviceActionService.HideLoadingAsync();
|
await _deviceActionService.HideLoadingAsync();
|
||||||
_platformUtilsService.ShowToast("success", null, AppResources.ItemDeleted);
|
_platformUtilsService.ShowToast("success", null, AppResources.ItemDeleted);
|
||||||
_messagingService.Send("deletedCipher");
|
_messagingService.Send("deletedCipher", Cipher);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch(ApiException e)
|
catch(ApiException e)
|
||||||
|
|||||||
@@ -275,7 +275,7 @@ namespace Bit.App.Pages
|
|||||||
await _cipherService.DeleteWithServerAsync(Cipher.Id);
|
await _cipherService.DeleteWithServerAsync(Cipher.Id);
|
||||||
await _deviceActionService.HideLoadingAsync();
|
await _deviceActionService.HideLoadingAsync();
|
||||||
_platformUtilsService.ShowToast("success", null, AppResources.ItemDeleted);
|
_platformUtilsService.ShowToast("success", null, AppResources.ItemDeleted);
|
||||||
_messagingService.Send("deletedCipher");
|
_messagingService.Send("deletedCipher", Cipher);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch(ApiException e)
|
catch(ApiException e)
|
||||||
|
|||||||
@@ -175,7 +175,7 @@ namespace Bit.iOS.Core.Controllers
|
|||||||
await loadingAlert.DismissViewControllerAsync(true);
|
await loadingAlert.DismissViewControllerAsync(true);
|
||||||
if(await ASHelpers.IdentitiesCanIncremental())
|
if(await ASHelpers.IdentitiesCanIncremental())
|
||||||
{
|
{
|
||||||
var identity = await ASHelpers.GetCipherIdentityAsync(cipherDomain.Id, _cipherService);
|
var identity = await ASHelpers.GetCipherIdentityAsync(cipherDomain.Id);
|
||||||
if(identity != null)
|
if(identity != null)
|
||||||
{
|
{
|
||||||
await ASCredentialIdentityStore.SharedStore.SaveCredentialIdentitiesAsync(
|
await ASCredentialIdentityStore.SharedStore.SaveCredentialIdentitiesAsync(
|
||||||
@@ -184,7 +184,7 @@ namespace Bit.iOS.Core.Controllers
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
await ASHelpers.ReplaceAllIdentities(_cipherService);
|
await ASHelpers.ReplaceAllIdentities();
|
||||||
}
|
}
|
||||||
Success();
|
Success();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,13 +4,15 @@ using System.Threading.Tasks;
|
|||||||
using AuthenticationServices;
|
using AuthenticationServices;
|
||||||
using Bit.Core.Abstractions;
|
using Bit.Core.Abstractions;
|
||||||
using Bit.Core.Models.View;
|
using Bit.Core.Models.View;
|
||||||
|
using Bit.Core.Utilities;
|
||||||
|
|
||||||
namespace Bit.iOS.Core.Utilities
|
namespace Bit.iOS.Core.Utilities
|
||||||
{
|
{
|
||||||
public static class ASHelpers
|
public static class ASHelpers
|
||||||
{
|
{
|
||||||
public static async Task ReplaceAllIdentities(ICipherService cipherService)
|
public static async Task ReplaceAllIdentities()
|
||||||
{
|
{
|
||||||
|
var cipherService = ServiceContainer.Resolve<ICipherService>("cipherService");
|
||||||
if(await AutofillEnabled())
|
if(await AutofillEnabled())
|
||||||
{
|
{
|
||||||
var identities = new List<ASPasswordCredentialIdentity>();
|
var identities = new List<ASPasswordCredentialIdentity>();
|
||||||
@@ -42,8 +44,9 @@ namespace Bit.iOS.Core.Utilities
|
|||||||
return state != null && state.Enabled;
|
return state != null && state.Enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async Task<ASPasswordCredentialIdentity> GetCipherIdentityAsync(string cipherId, ICipherService cipherService)
|
public static async Task<ASPasswordCredentialIdentity> GetCipherIdentityAsync(string cipherId)
|
||||||
{
|
{
|
||||||
|
var cipherService = ServiceContainer.Resolve<ICipherService>("cipherService");
|
||||||
var cipher = await cipherService.GetAsync(cipherId);
|
var cipher = await cipherService.GetAsync(cipherId);
|
||||||
if(cipher == null)
|
if(cipher == null)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using AuthenticationServices;
|
||||||
using Bit.App.Abstractions;
|
using Bit.App.Abstractions;
|
||||||
using Bit.App.Resources;
|
using Bit.App.Resources;
|
||||||
using Bit.App.Services;
|
using Bit.App.Services;
|
||||||
@@ -51,7 +52,7 @@ namespace Bit.iOS
|
|||||||
AppearanceAdjustments();
|
AppearanceAdjustments();
|
||||||
ZXing.Net.Mobile.Forms.iOS.Platform.Init();
|
ZXing.Net.Mobile.Forms.iOS.Platform.Init();
|
||||||
|
|
||||||
_broadcasterService.Subscribe(nameof(AppDelegate), (message) =>
|
_broadcasterService.Subscribe(nameof(AppDelegate), async (message) =>
|
||||||
{
|
{
|
||||||
if(message.Command == "scheduleLockTimer")
|
if(message.Command == "scheduleLockTimer")
|
||||||
{
|
{
|
||||||
@@ -87,23 +88,59 @@ namespace Bit.iOS
|
|||||||
if(message.Data is Dictionary<string, object> data && data.ContainsKey("successfully"))
|
if(message.Data is Dictionary<string, object> data && data.ContainsKey("successfully"))
|
||||||
{
|
{
|
||||||
var success = data["successfully"] as bool?;
|
var success = data["successfully"] as bool?;
|
||||||
if(success.GetValueOrDefault())
|
if(success.GetValueOrDefault() && _deviceActionService.SystemMajorVersion() >= 12)
|
||||||
{
|
{
|
||||||
|
await ASHelpers.ReplaceAllIdentities();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(message.Command == "addedCipher" || message.Command == "editedCipher")
|
else if(message.Command == "addedCipher" || message.Command == "editedCipher")
|
||||||
{
|
{
|
||||||
|
if(_deviceActionService.SystemMajorVersion() >= 12)
|
||||||
|
{
|
||||||
|
if(await ASHelpers.IdentitiesCanIncremental())
|
||||||
|
{
|
||||||
|
var cipherId = message.Data as string;
|
||||||
|
if(message.Command == "addedCipher" && !string.IsNullOrWhiteSpace(cipherId))
|
||||||
|
{
|
||||||
|
var identity = await ASHelpers.GetCipherIdentityAsync(cipherId);
|
||||||
|
if(identity == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
await ASCredentialIdentityStore.SharedStore?.SaveCredentialIdentitiesAsync(
|
||||||
|
new ASPasswordCredentialIdentity[] { identity });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
await ASHelpers.ReplaceAllIdentities();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if(message.Command == "deletedCipher")
|
else if(message.Command == "deletedCipher")
|
||||||
{
|
{
|
||||||
|
if(_deviceActionService.SystemMajorVersion() >= 12)
|
||||||
|
{
|
||||||
|
if(await ASHelpers.IdentitiesCanIncremental())
|
||||||
|
{
|
||||||
|
var identity = ASHelpers.ToCredentialIdentity(
|
||||||
|
message.Data as Bit.Core.Models.View.CipherView);
|
||||||
|
if(identity == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
await ASCredentialIdentityStore.SharedStore?.RemoveCredentialIdentitiesAsync(
|
||||||
|
new ASPasswordCredentialIdentity[] { identity });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
await ASHelpers.ReplaceAllIdentities();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if(message.Command == "loggedOut")
|
else if(message.Command == "loggedOut")
|
||||||
{
|
{
|
||||||
|
if(_deviceActionService.SystemMajorVersion() >= 12)
|
||||||
|
{
|
||||||
|
await ASCredentialIdentityStore.SharedStore?.RemoveAllCredentialIdentitiesAsync();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user