1
0
mirror of https://github.com/bitwarden/mobile synced 2026-01-08 03:23:23 +00:00

tearing down event handlers on page disappears

This commit is contained in:
Kyle Spearrin
2017-02-17 00:16:09 -05:00
parent fb564fa817
commit 22f3bd1073
9 changed files with 154 additions and 90 deletions

View File

@@ -4,14 +4,13 @@ using Xamarin.Forms;
namespace Bit.App.Controls
{
public class DismissModalToolBarItem : ToolbarItem, IDisposable
public class DismissModalToolBarItem : ExtendedToolbarItem, IDisposable
{
private readonly ContentPage _page;
private readonly Action _cancelClickedAction;
public DismissModalToolBarItem(ContentPage page, string text = null, Action cancelClickedAction = null)
: base(cancelClickedAction)
{
_cancelClickedAction = cancelClickedAction;
_page = page;
// TODO: init and dispose events from pages
InitEvents();
@@ -19,20 +18,10 @@ namespace Bit.App.Controls
Priority = -1;
}
private async void ClickedItem(object sender, EventArgs e)
protected async override void ClickedItem(object sender, EventArgs e)
{
_cancelClickedAction?.Invoke();
base.ClickedItem(sender, e);
await _page.Navigation.PopModalAsync();
}
public void InitEvents()
{
Clicked += ClickedItem;
}
public void Dispose()
{
Clicked -= ClickedItem;
}
}
}