2021-11-07 19:42:59 +01:00
using System.Linq ;
using TINK.View.Map ;
using TINK.ViewModel.Map ;
using Xamarin.Forms ;
namespace TINK
{
2022-09-06 16:08:19 +02:00
public static class BackdoorMethodHelpers
{
public static void DoTapPage ( string stationId )
{
Serilog . Log . Information ( $"Request via backdoor to tap station {stationId}." ) ;
var currentPage = GetCurrentPage ( ) ;
var mapPageViewModel = ( currentPage as MapPage ) ? . BindingContext as MapPageViewModel ;
if ( mapPageViewModel = = null )
{
Serilog . Log . Error ( $"Request via backdoor to tap station {stationId} aborted because current page is not of expected type {typeof(MapPage).Name}. Type detected is {currentPage.GetType().Name}." ) ;
return ;
}
2021-11-07 19:42:59 +01:00
2022-09-06 16:08:19 +02:00
Serilog . Log . Information ( $"Invoking member to tap." ) ;
mapPageViewModel ? . OnStationClicked ( stationId ) ;
}
2021-11-07 19:42:59 +01:00
2022-09-06 16:08:19 +02:00
/// <summary> Gets the current page assumed that app is master detail page.</summary>
/// <returns></returns>
static Page GetCurrentPage ( )
{
2021-11-07 19:42:59 +01:00
#if USEFLYOUT
return ( Application . Current . MainPage as FlyoutPage ) ? . Detail . Navigation . NavigationStack . LastOrDefault ( ) ;
#else
2022-09-06 16:08:19 +02:00
return Shell . Current . CurrentPage ;
2021-11-07 19:42:59 +01:00
#endif
2022-09-06 16:08:19 +02:00
}
2021-11-07 19:42:59 +01:00
2022-09-06 16:08:19 +02:00
}
2021-11-07 19:42:59 +01:00
}