From b2500557e79931ad6e957fd45b0501dfd3dc8153 Mon Sep 17 00:00:00 2001 From: Federico Maccaroni Date: Thu, 16 Jun 2022 18:09:50 -0300 Subject: [PATCH] SG-396 Fix tappable area after hiding account switching (#1956) --- .../AccountSwitchingOverlayView.xaml.cs | 4 ++++ .../Utilities/AccountSwitchingOverlayHelper.cs | 17 +++++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/App/Controls/AccountSwitchingOverlay/AccountSwitchingOverlayView.xaml.cs b/src/App/Controls/AccountSwitchingOverlay/AccountSwitchingOverlayView.xaml.cs index 89a0777d3..bed4fda56 100644 --- a/src/App/Controls/AccountSwitchingOverlay/AccountSwitchingOverlayView.xaml.cs +++ b/src/App/Controls/AccountSwitchingOverlay/AccountSwitchingOverlayView.xaml.cs @@ -65,6 +65,8 @@ namespace Bit.App.Controls public bool LongPressAccountEnabled { get; set; } = true; + public Action AfterHide { get; set; } + public async Task ToggleVisibilityAsync() { if (IsVisible) @@ -137,6 +139,8 @@ namespace Bit.App.Controls // remove overlay IsVisible = false; + + AfterHide?.Invoke(); }); } diff --git a/src/iOS.Core/Utilities/AccountSwitchingOverlayHelper.cs b/src/iOS.Core/Utilities/AccountSwitchingOverlayHelper.cs index 527d98ef2..8812285bb 100644 --- a/src/iOS.Core/Utilities/AccountSwitchingOverlayHelper.cs +++ b/src/iOS.Core/Utilities/AccountSwitchingOverlayHelper.cs @@ -32,7 +32,14 @@ namespace Bit.iOS.Core.Utilities { var overlay = new AccountSwitchingOverlayView() { - LongPressAccountEnabled = false + LongPressAccountEnabled = false, + AfterHide = () => + { + if (containerView != null) + { + containerView.Hidden = true; + } + } }; var vm = new AccountSwitchingOverlayViewModel(_stateService, _messagingService, _logger) @@ -40,6 +47,7 @@ namespace Bit.iOS.Core.Utilities FromIOSExtension = true }; overlay.BindingContext = vm; + overlay.IsVisible = false; var renderer = Platform.CreateRenderer(overlay.Content); renderer.SetElementSize(new Size(containerView.Frame.Size.Width, containerView.Frame.Size.Height)); @@ -63,8 +71,13 @@ namespace Bit.iOS.Core.Utilities public void OnToolbarItemActivated(AccountSwitchingOverlayView accountSwitchingOverlayView, UIView containerView) { var overlayVisible = accountSwitchingOverlayView.IsVisible; + if (!overlayVisible) + { + // So that the animation doesn't break we only care about showing it + // and the hiding if done through AccountSwitchingOverlayView -> AfterHide + containerView.Hidden = false; + } accountSwitchingOverlayView.ToggleVisibililtyCommand.Execute(null); - containerView.Hidden = false; containerView.UserInteractionEnabled = !overlayVisible; containerView.Subviews[0].UserInteractionEnabled = !overlayVisible; }