Skip to content

Commit

Permalink
Refactor handler disconnect code
Browse files Browse the repository at this point in the history
  • Loading branch information
Thomas Galliker committed Sep 10, 2024
1 parent d7b8072 commit 3a7d1c9
Showing 1 changed file with 14 additions and 5 deletions.
19 changes: 14 additions & 5 deletions Plugin.SegmentedControl.Maui/Utils/HandlerCleanUpHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,22 @@ async void OnPageUnloaded(object sender, EventArgs e)
}

// If the target page is no longer used anywhere,
// we can can safely unsubscribe from Unloaded event and call DisconnectHandler.
// we can safely unsubscribe from Unloaded event and call DisconnectHandler.
targetPage.Unloaded -= OnPageUnloaded;

var elementHandler = view.Handler as IElementHandler;
Debug.WriteLine($"HandlerCleanUpHelper.OnPageUnloaded: Page \"{targetPage.GetType().Name}\" is no longer present on the navigation stack " +
$"--> {(elementHandler != null ? $"{elementHandler.GetType().Name}." : "")}DisconnectHandler()");
elementHandler?.DisconnectHandler();
if (view.Handler is not IElementHandler elementHandler)
{
Debug.WriteLine(
$"HandlerCleanUpHelper.OnPageUnloaded: Page \"{targetPage.GetType().Name}\" is no longer present on the navigation stack " +
$"--> {view.GetType().Name}.Handler is null");
}
else
{
Debug.WriteLine(
$"HandlerCleanUpHelper.OnPageUnloaded: Page \"{targetPage.GetType().Name}\" is no longer present on the navigation stack " +
$"--> {elementHandler.GetType().Name}.DisconnectHandler()");
elementHandler.DisconnectHandler();
}
}

Debug.WriteLine($"HandlerCleanUpHelper.AddCleanUpEvent for Page \"{targetPage.GetType().Name}\"");
Expand Down

0 comments on commit 3a7d1c9

Please sign in to comment.