diff --git a/src/iOS.Extension/LockFingerprintViewController.cs b/src/iOS.Extension/LockFingerprintViewController.cs index d34b14c58..81435a83b 100644 --- a/src/iOS.Extension/LockFingerprintViewController.cs +++ b/src/iOS.Extension/LockFingerprintViewController.cs @@ -5,12 +5,15 @@ 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) { } @@ -27,14 +30,30 @@ namespace Bit.iOS.Extension 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(); @@ -48,5 +67,14 @@ namespace Bit.iOS.Extension Context.ExtContext.CompleteRequest(returningItems, null); } + + public async Task CheckFingerprintAsync() + { + var result = await _fingerprint.AuthenticateAsync("Use your fingerprint to verify."); + if(result.Authenticated) + { + DismissModalViewController(true); + } + } } } diff --git a/src/iOS.Extension/MainInterface.storyboard b/src/iOS.Extension/MainInterface.storyboard index 1cfe6fe53..e404599e4 100644 --- a/src/iOS.Extension/MainInterface.storyboard +++ b/src/iOS.Extension/MainInterface.storyboard @@ -174,8 +174,8 @@ - - + + diff --git a/src/iOS.Extension/SiteListViewController.cs b/src/iOS.Extension/SiteListViewController.cs index 2457d9e0d..c12a888f6 100644 --- a/src/iOS.Extension/SiteListViewController.cs +++ b/src/iOS.Extension/SiteListViewController.cs @@ -32,8 +32,19 @@ namespace Bit.iOS.Extension { base.ViewDidLoad(); - - + // TODO: lock logic + if(true) + { + PerformSegue("lockFingerprintSegue", this); + } + else if(true) + { + PerformSegue("lockPinSegue", this); + } + else + { + PerformSegue("lockPasswordSegue", this); + } IEnumerable filteredSiteModels = new List(); if(Context.DomainName != null) @@ -74,11 +85,27 @@ namespace Bit.iOS.Extension if(navController != null) { var addSiteController = navController.TopViewController as SiteAddViewController; + var fingerprintViewController = navController.TopViewController as LockFingerprintViewController; + var pinViewController = navController.TopViewController as LockPinViewController; + var passwordViewController = navController.TopViewController as LockPasswordViewController; + if(addSiteController != null) { addSiteController.Context = Context; addSiteController.Parent = this; } + else if(fingerprintViewController != null) + { + fingerprintViewController.Context = Context; + } + else if(pinViewController != null) + { + pinViewController.Context = Context; + } + else if(passwordViewController != null) + { + passwordViewController.Context = Context; + } } } @@ -120,17 +147,17 @@ namespace Bit.iOS.Extension return cell; } - public override void WillDisplay( UITableView tableView, UITableViewCell cell, NSIndexPath indexPath ) + public override void WillDisplay(UITableView tableView, UITableViewCell cell, NSIndexPath indexPath) { if(cell == null) { return; } - var item = _tableItems.ElementAt( indexPath.Row ); + var item = _tableItems.ElementAt(indexPath.Row); cell.TextLabel.Text = item.Name; cell.DetailTextLabel.Text = item.Username; - cell.DetailTextLabel.TextColor = cell.DetailTextLabel.TintColor = new UIColor( red: 0.47f, green: 0.47f, blue: 0.47f, alpha: 1.0f ); + cell.DetailTextLabel.TextColor = cell.DetailTextLabel.TintColor = new UIColor(red: 0.47f, green: 0.47f, blue: 0.47f, alpha: 1.0f); } public override void RowSelected(UITableView tableView, NSIndexPath indexPath)