From fe5cdb0004dc0e72c136f8d2a7bba5e3a15aacb3 Mon Sep 17 00:00:00 2001 From: kspearrin Date: Mon, 22 Jul 2019 21:35:05 -0400 Subject: [PATCH] * CredentialProviderViewController.cs: * LoadingViewController.cs: reset after using event service --- .../CredentialProviderViewController.cs | 14 +++++++++----- src/iOS.Extension/LoadingViewController.cs | 16 +++++++++------- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/iOS.Autofill/CredentialProviderViewController.cs b/src/iOS.Autofill/CredentialProviderViewController.cs index 0ba8d0cd3..c474b938f 100644 --- a/src/iOS.Autofill/CredentialProviderViewController.cs +++ b/src/iOS.Autofill/CredentialProviderViewController.cs @@ -105,16 +105,16 @@ namespace Bit.iOS.Autofill public void CompleteRequest(string id = null, string username = null, string password = null, string totp = null) { - ServiceContainer.Reset(); - if((_context?.Configuring ?? true) && string.IsNullOrWhiteSpace(password)) { + ServiceContainer.Reset(); ExtensionContext?.CompleteExtensionConfigurationRequest(); return; } if(_context == null || string.IsNullOrWhiteSpace(username) || string.IsNullOrWhiteSpace(password)) { + ServiceContainer.Reset(); var err = new NSError(new NSString("ASExtensionErrorDomain"), Convert.ToInt32(ASExtensionErrorCode.UserCanceled), null); NSRunLoop.Main.BeginInvokeOnMainThread(() => ExtensionContext?.CancelRequest(err)); @@ -126,10 +126,14 @@ namespace Bit.iOS.Autofill UIPasteboard.General.String = totp; } - var eventService = ServiceContainer.Resolve("eventService"); - var task = eventService.CollectAsync(Bit.Core.Enums.EventType.Cipher_ClientAutofilled, id); var cred = new ASPasswordCredential(username, password); - NSRunLoop.Main.BeginInvokeOnMainThread(() => ExtensionContext?.CompleteRequest(cred, null)); + NSRunLoop.Main.BeginInvokeOnMainThread(async () => + { + var eventService = ServiceContainer.Resolve("eventService"); + await eventService.CollectAsync(Bit.Core.Enums.EventType.Cipher_ClientAutofilled, id); + ServiceContainer.Reset(); + ExtensionContext?.CompleteRequest(cred, null); + }); } public override void PrepareForSegue(UIStoryboardSegue segue, NSObject sender) diff --git a/src/iOS.Extension/LoadingViewController.cs b/src/iOS.Extension/LoadingViewController.cs index 0f356dbfa..f8b943110 100644 --- a/src/iOS.Extension/LoadingViewController.cs +++ b/src/iOS.Extension/LoadingViewController.cs @@ -177,18 +177,20 @@ namespace Bit.iOS.Extension public void CompleteRequest(string id, NSDictionary itemData) { - ServiceContainer.Reset(); - Debug.WriteLine("BW LOG, itemData: " + itemData); var resultsProvider = new NSItemProvider(itemData, UTType.PropertyList); var resultsItem = new NSExtensionItem { Attachments = new NSItemProvider[] { resultsProvider } }; var returningItems = new NSExtensionItem[] { resultsItem }; - if(!string.IsNullOrWhiteSpace(id) && itemData != null) + NSRunLoop.Main.BeginInvokeOnMainThread(async () => { - var eventService = ServiceContainer.Resolve("eventService"); - var task = eventService.CollectAsync(Bit.Core.Enums.EventType.Cipher_ClientAutofilled, id); - } - NSRunLoop.Main.BeginInvokeOnMainThread(() => ExtensionContext?.CompleteRequest(returningItems, null)); + if (!string.IsNullOrWhiteSpace(id) && itemData != null) + { + var eventService = ServiceContainer.Resolve("eventService"); + await eventService.CollectAsync(Bit.Core.Enums.EventType.Cipher_ClientAutofilled, id); + } + ServiceContainer.Reset(); + ExtensionContext?.CompleteRequest(returningItems, null); + }); } private bool ProcessItemProvider(NSItemProvider itemProvider, string type, Action dictAction,