Moved lock logic to loading view controller.

This commit is contained in:
Kyle Spearrin 2016-07-21 19:02:04 -04:00
parent 047f5b100f
commit 7f5d371bf3
6 changed files with 74 additions and 55 deletions

View file

@ -66,7 +66,24 @@ namespace Bit.iOS.Extension
public override void ViewDidAppear(bool animated) public override void ViewDidAppear(bool animated)
{ {
base.ViewDidAppear(animated); base.ViewDidAppear(animated);
PerformSegue("siteListSegue", this);
var lockService = Resolver.Resolve<ILockService>();
var lockType = lockService.GetLockType(false);
switch(lockType)
{
case App.Enums.LockType.Fingerprint:
PerformSegue("lockFingerprintSegue", this);
break;
case App.Enums.LockType.PIN:
PerformSegue("lockPinSegue", this);
break;
case App.Enums.LockType.Password:
PerformSegue("lockPasswordSegue", this);
break;
default:
PerformSegue("siteListSegue", this);
break;
}
} }
public override void PrepareForSegue(UIStoryboardSegue segue, NSObject sender) public override void PrepareForSegue(UIStoryboardSegue segue, NSObject sender)
@ -74,14 +91,46 @@ namespace Bit.iOS.Extension
var navController = segue.DestinationViewController as UINavigationController; var navController = segue.DestinationViewController as UINavigationController;
if(navController != null) if(navController != null)
{ {
var actionController = navController.TopViewController as SiteListViewController; var listSiteController = navController.TopViewController as SiteListViewController;
if(actionController != 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(listSiteController != null)
{ {
actionController.Context = _context; listSiteController.Context = _context;
}
else if(addSiteController != null)
{
addSiteController.Context = _context;
}
else if(fingerprintViewController != null)
{
fingerprintViewController.Context = _context;
fingerprintViewController.LoadingViewController = this;
}
else if(pinViewController != null)
{
pinViewController.Context = _context;
pinViewController.LoadingViewController = this;
}
else if(passwordViewController != null)
{
passwordViewController.Context = _context;
passwordViewController.LoadingViewController = this;
} }
} }
} }
public void DismissLockAndContinue()
{
DismissViewController(true, () =>
{
PerformSegue("siteListSegue", this);
});
}
private void SetIoc() private void SetIoc()
{ {
var container = new UnityContainer(); var container = new UnityContainer();

View file

@ -19,6 +19,7 @@ namespace Bit.iOS.Extension
{ } { }
public Context Context { get; set; } public Context Context { get; set; }
public LoadingViewController LoadingViewController { get; set; }
public override void ViewWillAppear(bool animated) public override void ViewWillAppear(bool animated)
{ {
@ -73,7 +74,7 @@ namespace Bit.iOS.Extension
var result = await _fingerprint.AuthenticateAsync("Use your fingerprint to verify."); var result = await _fingerprint.AuthenticateAsync("Use your fingerprint to verify.");
if(result.Authenticated) if(result.Authenticated)
{ {
DismissModalViewController(true); LoadingViewController.DismissLockAndContinue();
} }
} }
} }

View file

@ -24,6 +24,7 @@ namespace Bit.iOS.Extension
{ } { }
public Context Context { get; set; } public Context Context { get; set; }
public LoadingViewController LoadingViewController { get; set; }
public FormEntryTableViewCell MasterPasswordCell { get; set; } = new FormEntryTableViewCell( public FormEntryTableViewCell MasterPasswordCell { get; set; } = new FormEntryTableViewCell(
AppResources.MasterPassword, useLabelAsPlaceholder: true); AppResources.MasterPassword, useLabelAsPlaceholder: true);
@ -85,7 +86,7 @@ namespace Bit.iOS.Extension
if(key.SequenceEqual(_cryptoService.Key)) if(key.SequenceEqual(_cryptoService.Key))
{ {
MasterPasswordCell.TextField.ResignFirstResponder(); MasterPasswordCell.TextField.ResignFirstResponder();
DismissModalViewController(true); LoadingViewController.DismissLockAndContinue();
} }
else else
{ {

View file

@ -20,6 +20,7 @@ namespace Bit.iOS.Extension
{ } { }
public Context Context { get; set; } public Context Context { get; set; }
public LoadingViewController LoadingViewController { get; set; }
public override void ViewWillAppear(bool animated) public override void ViewWillAppear(bool animated)
{ {
@ -58,7 +59,7 @@ namespace Bit.iOS.Extension
if(PinTextField.Text == _authService.PIN) if(PinTextField.Text == _authService.PIN)
{ {
PinTextField.ResignFirstResponder(); PinTextField.ResignFirstResponder();
DismissModalViewController(true); LoadingViewController.DismissLockAndContinue();
} }
else else
{ {

View file

@ -29,6 +29,10 @@
</view> </view>
<connections> <connections>
<segue destination="oCZ-GQ-aOK" kind="show" identifier="siteListSegue" id="1679"/> <segue destination="oCZ-GQ-aOK" kind="show" identifier="siteListSegue" id="1679"/>
<segue id="8446" destination="6512" kind="presentation" identifier="lockFingerprintSegue" animates="NO"/>
<segue id="8924" destination="6815" kind="presentation" identifier="lockPinSegue" animates="NO"/>
<segue id="9874" destination="6855" kind="presentation" identifier="lockPasswordSegue" animates="NO"/>
<segue id="10498" destination="1845" kind="presentation" identifier="newSiteSegue" modalPresentationStyle="" modalTransitionStyle=""/>
</connections> </connections>
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="45" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="45" userLabel="First Responder" sceneMemberID="firstResponder"/>
@ -90,7 +94,7 @@
</navigationController> </navigationController>
<placeholder placeholderIdentifier="IBFirstResponder" id="1849" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="1849" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="1900" y="562"/> <point key="canvasLocation" x="1932" y="-270"/>
</scene> </scene>
<scene sceneID="2086"> <scene sceneID="2086">
<objects> <objects>
@ -128,7 +132,7 @@
</tableViewController> </tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="2093" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="2093" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="2644" y="570"/> <point key="canvasLocation" x="2632" y="-276"/>
</scene> </scene>
<scene sceneID="2303"> <scene sceneID="2303">
<objects> <objects>
@ -173,9 +177,6 @@
<outlet property="AddBarButton" destination="3736" id="name-outlet-3736"/> <outlet property="AddBarButton" destination="3736" id="name-outlet-3736"/>
<outlet property="CancelBarButton" destination="3735" id="name-outlet-3735"/> <outlet property="CancelBarButton" destination="3735" id="name-outlet-3735"/>
<outlet property="NavItem" destination="3734" id="name-outlet-3734"/> <outlet property="NavItem" destination="3734" id="name-outlet-3734"/>
<segue id="6763" destination="6512" kind="presentation" identifier="lockFingerprintSegue" animates="NO" modalPresentationStyle="" modalTransitionStyle=""/>
<segue id="7049" destination="6815" kind="presentation" identifier="lockPinSegue" animates="NO"/>
<segue id="7291" destination="6855" kind="presentation" identifier="lockPasswordSegue" animates="NO"/>
</connections> </connections>
<toolbarItems/> <toolbarItems/>
<simulatedToolbarMetrics key="simulatedBottomBarMetrics"/> <simulatedToolbarMetrics key="simulatedBottomBarMetrics"/>
@ -215,7 +216,7 @@
</navigationController> </navigationController>
<placeholder placeholderIdentifier="IBFirstResponder" id="4578" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="4578" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="3357" y="556"/> <point key="canvasLocation" x="3369" y="-276"/>
</scene> </scene>
<scene sceneID="4579"> <scene sceneID="4579">
<objects> <objects>
@ -276,7 +277,7 @@
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="4582" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="4582" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="4045" y="558"/> <point key="canvasLocation" x="4045" y="-272"/>
</scene> </scene>
<scene sceneID="4911"> <scene sceneID="4911">
<objects> <objects>
@ -294,7 +295,7 @@
</tableViewController> </tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="4918" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="4918" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="4676" y="618"/> <point key="canvasLocation" x="4708" y="-194"/>
</scene> </scene>
<scene sceneID="6511"> <scene sceneID="6511">
<objects> <objects>
@ -309,7 +310,7 @@
</navigationController> </navigationController>
<placeholder placeholderIdentifier="IBFirstResponder" id="6516" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="6516" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="1906" y="1256"/> <point key="canvasLocation" x="296" y="1394"/>
</scene> </scene>
<scene sceneID="6517"> <scene sceneID="6517">
<objects> <objects>
@ -352,7 +353,7 @@
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="6520" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="6520" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="2655" y="1260"/> <point key="canvasLocation" x="983" y="1390"/>
</scene> </scene>
<scene sceneID="6801"> <scene sceneID="6801">
<objects> <objects>
@ -407,7 +408,7 @@
</viewController> </viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="6813" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="6813" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="2653" y="1933"/> <point key="canvasLocation" x="975" y="2083"/>
</scene> </scene>
<scene sceneID="6814"> <scene sceneID="6814">
<objects> <objects>
@ -422,7 +423,7 @@
</navigationController> </navigationController>
<placeholder placeholderIdentifier="IBFirstResponder" id="6818" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="6818" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="1886" y="1931"/> <point key="canvasLocation" x="306" y="2083"/>
</scene> </scene>
<scene sceneID="6854"> <scene sceneID="6854">
<objects> <objects>
@ -437,7 +438,7 @@
</navigationController> </navigationController>
<placeholder placeholderIdentifier="IBFirstResponder" id="6858" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="6858" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="1878" y="2669"/> <point key="canvasLocation" x="306" y="2759"/>
</scene> </scene>
<scene sceneID="7412"> <scene sceneID="7412">
<objects> <objects>
@ -471,7 +472,7 @@
</tableViewController> </tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="7419" userLabel="First Responder" sceneMemberID="firstResponder"/> <placeholder placeholderIdentifier="IBFirstResponder" id="7419" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects> </objects>
<point key="canvasLocation" x="2532" y="2675"/> <point key="canvasLocation" x="977" y="2775"/>
</scene> </scene>
</scenes> </scenes>
<resources> <resources>

View file

@ -3,7 +3,6 @@ using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
using System.Linq; using System.Linq;
using Bit.App.Abstractions; using Bit.App.Abstractions;
using Bit.App.Models;
using Bit.iOS.Core; using Bit.iOS.Core;
using Bit.iOS.Extension.Models; using Bit.iOS.Extension.Models;
using Foundation; using Foundation;
@ -32,23 +31,6 @@ namespace Bit.iOS.Extension
{ {
base.ViewDidLoad(); base.ViewDidLoad();
var lockService = Resolver.Resolve<ILockService>();
var lockType = lockService.GetLockType(false);
switch(lockType)
{
case App.Enums.LockType.Fingerprint:
PerformSegue("lockFingerprintSegue", this);
break;
case App.Enums.LockType.PIN:
PerformSegue("lockPinSegue", this);
break;
case App.Enums.LockType.Password:
PerformSegue("lockPasswordSegue", this);
break;
default:
break;
}
IEnumerable<SiteViewModel> filteredSiteModels = new List<SiteViewModel>(); IEnumerable<SiteViewModel> filteredSiteModels = new List<SiteViewModel>();
if(Context.DomainName != null) if(Context.DomainName != null)
{ {
@ -88,27 +70,11 @@ namespace Bit.iOS.Extension
if(navController != null) if(navController != null)
{ {
var addSiteController = navController.TopViewController as SiteAddViewController; 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) if(addSiteController != null)
{ {
addSiteController.Context = Context; addSiteController.Context = Context;
addSiteController.Parent = this; addSiteController.Parent = this;
} }
else if(fingerprintViewController != null)
{
fingerprintViewController.Context = Context;
}
else if(pinViewController != null)
{
pinViewController.Context = Context;
}
else if(passwordViewController != null)
{
passwordViewController.Context = Context;
}
} }
} }