diff --git a/src/App/Pages/Accounts/LockPage.xaml b/src/App/Pages/Accounts/LockPage.xaml
index 2c9c5dcab..5bb281f1f 100644
--- a/src/App/Pages/Accounts/LockPage.xaml
+++ b/src/App/Pages/Accounts/LockPage.xaml
@@ -16,11 +16,19 @@
+
+
-
@@ -112,7 +120,7 @@
IsVisible="{Binding BiometricIntegrityValid, Converter={StaticResource inverseBool}}" />
-
+
diff --git a/src/App/Pages/Accounts/LockPage.xaml.cs b/src/App/Pages/Accounts/LockPage.xaml.cs
index 25107c65b..428772647 100644
--- a/src/App/Pages/Accounts/LockPage.xaml.cs
+++ b/src/App/Pages/Accounts/LockPage.xaml.cs
@@ -1,4 +1,5 @@
using Bit.App.Models;
+using Bit.App.Resources;
using Bit.Core.Abstractions;
using Bit.Core.Utilities;
using System;
@@ -29,6 +30,15 @@ namespace Bit.App.Pages
_vm.UnlockedAction = () => Device.BeginInvokeOnMainThread(async () => await UnlockedAsync());
MasterPasswordEntry = _masterPassword;
PinEntry = _pin;
+
+ if (Device.RuntimePlatform == Device.iOS)
+ {
+ ToolbarItems.Add(_moreItem);
+ }
+ else
+ {
+ ToolbarItems.Add(_logOut);
+ }
}
public Entry MasterPasswordEntry { get; set; }
@@ -97,6 +107,22 @@ namespace Bit.App.Pages
}
}
+ private async void More_Clicked(object sender, System.EventArgs e)
+ {
+ if (!DoOnce())
+ {
+ return;
+ }
+
+ var selection = await DisplayActionSheet(AppResources.Options,
+ AppResources.Cancel, null, AppResources.LogOut);
+
+ if (selection == AppResources.LogOut)
+ {
+ await _vm.LogOutAsync();
+ }
+ }
+
private async Task UnlockedAsync()
{
if (AppHelpers.SetAlternateMainPage(_appOptions))
diff --git a/src/App/Pages/Accounts/LoginPage.xaml b/src/App/Pages/Accounts/LoginPage.xaml
index 3c8677d1a..1363785ce 100644
--- a/src/App/Pages/Accounts/LoginPage.xaml
+++ b/src/App/Pages/Accounts/LoginPage.xaml
@@ -16,12 +16,20 @@
+
+
-
@@ -73,8 +81,8 @@
AutomationProperties.Name="{u:I18n ToggleVisibility}" />
-
-
+
+
diff --git a/src/App/Pages/Accounts/LoginPage.xaml.cs b/src/App/Pages/Accounts/LoginPage.xaml.cs
index bef8f47d7..8d887c7da 100644
--- a/src/App/Pages/Accounts/LoginPage.xaml.cs
+++ b/src/App/Pages/Accounts/LoginPage.xaml.cs
@@ -1,4 +1,5 @@
using Bit.App.Models;
+using Bit.App.Resources;
using Bit.Core.Abstractions;
using Bit.Core.Utilities;
using System;
@@ -40,6 +41,15 @@ namespace Bit.App.Pages
_email.ReturnType = ReturnType.Next;
_email.ReturnCommand = new Command(() => _masterPassword.Focus());
+
+ if (Device.RuntimePlatform == Device.iOS)
+ {
+ ToolbarItems.Add(_moreItem);
+ }
+ else
+ {
+ ToolbarItems.Add(_getPasswordHint);
+ }
}
public Entry MasterPasswordEntry { get; set; }
@@ -82,6 +92,22 @@ namespace Bit.App.Pages
}
}
+ private async void More_Clicked(object sender, System.EventArgs e)
+ {
+ if (!DoOnce())
+ {
+ return;
+ }
+
+ var selection = await DisplayActionSheet(AppResources.Options,
+ AppResources.Cancel, null, AppResources.GetPasswordHint);
+
+ if (selection == AppResources.GetPasswordHint)
+ {
+ await Navigation.PushModalAsync(new NavigationPage(new HintPage()));
+ }
+ }
+
private async Task StartTwoFactorAsync()
{
var page = new TwoFactorPage(false, _appOptions);
diff --git a/src/App/Pages/Accounts/LoginPageViewModel.cs b/src/App/Pages/Accounts/LoginPageViewModel.cs
index b7a82919d..5b0c5b5ba 100644
--- a/src/App/Pages/Accounts/LoginPageViewModel.cs
+++ b/src/App/Pages/Accounts/LoginPageViewModel.cs
@@ -25,7 +25,6 @@ namespace Bit.App.Pages
private bool _showPassword;
private string _email;
private string _masterPassword;
- private bool _hideHintButton;
public LoginPageViewModel()
{
@@ -70,13 +69,7 @@ namespace Bit.App.Pages
public Action StartTwoFactorAction { get; set; }
public Action LogInSuccessAction { get; set; }
public Action CloseAction { get; set; }
-
- public bool HideHintButton
- {
- get => _hideHintButton;
- set => SetProperty(ref _hideHintButton, value);
- }
-
+
public async Task InitAsync()
{
if (string.IsNullOrWhiteSpace(Email))
diff --git a/src/iOS.Autofill/CredentialProviderViewController.cs b/src/iOS.Autofill/CredentialProviderViewController.cs
index 020d6f502..713e93c56 100644
--- a/src/iOS.Autofill/CredentialProviderViewController.cs
+++ b/src/iOS.Autofill/CredentialProviderViewController.cs
@@ -372,7 +372,6 @@ namespace Bit.iOS.Autofill
vm.StartTwoFactorAction = () => DismissViewController(false, () => LaunchTwoFactorFlow(false));
vm.LogInSuccessAction = () => DismissLockAndContinue();
vm.CloseAction = () => DismissViewController(false, () => LaunchHomePage());
- vm.HideHintButton = true;
}
var navigationPage = new NavigationPage(loginPage);
diff --git a/src/iOS.Extension/LoadingViewController.cs b/src/iOS.Extension/LoadingViewController.cs
index b9ee3dbed..cb67c632f 100644
--- a/src/iOS.Extension/LoadingViewController.cs
+++ b/src/iOS.Extension/LoadingViewController.cs
@@ -498,7 +498,6 @@ namespace Bit.iOS.Extension
vm.StartTwoFactorAction = () => DismissViewController(false, () => LaunchTwoFactorFlow(false));
vm.LogInSuccessAction = () => DismissLockAndContinue();
vm.CloseAction = () => CompleteRequest(null, null);
- vm.HideHintButton = true;
}
var navigationPage = new NavigationPage(loginPage);