diff --git a/src/App/Pages/Generator/GeneratorPage.xaml.cs b/src/App/Pages/Generator/GeneratorPage.xaml.cs index 5d8e88fbd..9124cb58a 100644 --- a/src/App/Pages/Generator/GeneratorPage.xaml.cs +++ b/src/App/Pages/Generator/GeneratorPage.xaml.cs @@ -9,9 +9,11 @@ namespace Bit.App.Pages private GeneratorPageViewModel _vm; private readonly bool _fromTabPage; private readonly Action _selectAction; + private readonly TabsPage _tabsPage; - public GeneratorPage(bool fromTabPage, Action selectAction = null) + public GeneratorPage(bool fromTabPage, Action selectAction = null, TabsPage tabsPage = null) { + _tabsPage = tabsPage; InitializeComponent(); _vm = BindingContext as GeneratorPageViewModel; _vm.Page = this; @@ -37,6 +39,16 @@ namespace Bit.App.Pages } } + protected override bool OnBackButtonPressed() + { + if(Device.RuntimePlatform == Device.Android && _tabsPage != null) + { + _tabsPage.ResetToVaultPage(); + return true; + } + return base.OnBackButtonPressed(); + } + private async void Regenerate_Clicked(object sender, EventArgs e) { await _vm.RegenerateAsync(); diff --git a/src/App/Pages/Settings/SettingsPage/SettingsPage.xaml.cs b/src/App/Pages/Settings/SettingsPage/SettingsPage.xaml.cs index 792f142d4..27e40cb6d 100644 --- a/src/App/Pages/Settings/SettingsPage/SettingsPage.xaml.cs +++ b/src/App/Pages/Settings/SettingsPage/SettingsPage.xaml.cs @@ -8,11 +8,12 @@ namespace Bit.App.Pages public partial class SettingsPage : BaseContentPage { private readonly IDeviceActionService _deviceActionService; - + private readonly TabsPage _tabsPage; private SettingsPageViewModel _vm; - public SettingsPage() + public SettingsPage(TabsPage tabsPage) { + _tabsPage = tabsPage; InitializeComponent(); _deviceActionService = ServiceContainer.Resolve("deviceActionService"); _vm = BindingContext as SettingsPageViewModel; @@ -25,6 +26,16 @@ namespace Bit.App.Pages await _vm.InitAsync(); } + protected override bool OnBackButtonPressed() + { + if(Device.RuntimePlatform == Device.Android && _tabsPage != null) + { + _tabsPage.ResetToVaultPage(); + return true; + } + return base.OnBackButtonPressed(); + } + private async void RowSelected(object sender, SelectedItemChangedEventArgs e) { ((ListView)sender).SelectedItem = null; diff --git a/src/App/Pages/TabsPage.cs b/src/App/Pages/TabsPage.cs index 575ee8a55..8bff95449 100644 --- a/src/App/Pages/TabsPage.cs +++ b/src/App/Pages/TabsPage.cs @@ -6,23 +6,25 @@ namespace Bit.App.Pages { public class TabsPage : TabbedPage { + private NavigationPage _groupingsPage; + public TabsPage() { - var groupingsPage = new NavigationPage(new GroupingsPage(true)) + _groupingsPage = new NavigationPage(new GroupingsPage(true)) { Title = AppResources.MyVault, Icon = "lock.png" }; - Children.Add(groupingsPage); + Children.Add(_groupingsPage); - var generatorPage = new NavigationPage(new GeneratorPage(true, null)) + var generatorPage = new NavigationPage(new GeneratorPage(true, null, this)) { Title = AppResources.Generator, Icon = "refresh.png" }; Children.Add(generatorPage); - var settingsPage = new NavigationPage(new SettingsPage()) + var settingsPage = new NavigationPage(new SettingsPage(this)) { Title = AppResources.Settings, Icon = "cog.png" @@ -44,6 +46,11 @@ namespace Bit.App.Pages } } + public void ResetToVaultPage() + { + CurrentPage = _groupingsPage; + } + protected async override void OnCurrentPageChanged() { if(CurrentPage is NavigationPage navPage)