using System; using Bit.iOS.Extension.Models; using UIKit; using XLabs.Ioc; using Plugin.Settings.Abstractions; using Foundation; using MobileCoreServices; using Plugin.Fingerprint.Abstractions; using System.Threading.Tasks; namespace Bit.iOS.Extension { public partial class LockFingerprintViewController : UIViewController { private ISettings _settings; private IFingerprint _fingerprint; public LockFingerprintViewController(IntPtr handle) : base(handle) { } public Context Context { get; set; } public override void ViewWillAppear(bool animated) { UINavigationBar.Appearance.ShadowImage = new UIImage(); UINavigationBar.Appearance.SetBackgroundImage(new UIImage(), UIBarMetrics.Default); base.ViewWillAppear(animated); } public override void ViewDidLoad() { _settings = Resolver.Resolve(); _fingerprint = Resolver.Resolve(); View.BackgroundColor = new UIColor(red: 0.94f, green: 0.94f, blue: 0.96f, alpha: 1.0f); var descriptor = UIFontDescriptor.PreferredBody; UseButton.Font = UIFont.FromDescriptor(descriptor, descriptor.PointSize); UseButton.BackgroundColor = new UIColor(red: 0.24f, green: 0.55f, blue: 0.74f, alpha: 1.0f); UseButton.TintColor = UIColor.White; UseButton.TouchUpInside += UseButton_TouchUpInside; base.ViewDidLoad(); } private void UseButton_TouchUpInside(object sender, EventArgs e) { var task = CheckFingerprintAsync(); } public override void ViewDidAppear(bool animated) { base.ViewDidAppear(animated); var task = CheckFingerprintAsync(); } partial void CancelButton_Activated(UIBarButtonItem sender) { CompleteRequest(); } private void CompleteRequest() { var resultsProvider = new NSItemProvider(null, UTType.PropertyList); var resultsItem = new NSExtensionItem { Attachments = new NSItemProvider[] { resultsProvider } }; var returningItems = new NSExtensionItem[] { resultsItem }; Context.ExtContext.CompleteRequest(returningItems, null); } public async Task CheckFingerprintAsync() { var result = await _fingerprint.AuthenticateAsync("Use your fingerprint to verify."); if(result.Authenticated) { DismissModalViewController(true); } } } }