private async Task TryCloseAsync(OpenedViewModelInfo openedViewModelInfo)
 {
     if (!await openedViewModelInfo.ViewModel.CloseAsync())
     {
         _toastPresenter.ShowAsync($"Cannot close {openedViewModelInfo.ViewModel.GetType().Name}", ToastDuration.Short);
     }
 }
        private async Task TryOpenClearBackStackAsync(OpenedViewModelInfo openedViewModelInfo)
        {
            var navigationCompletedTask = openedViewModelInfo.ViewModel.ShowAsync(NavigationConstants.ClearBackStack.ToValue(true)).GetNavigationCompletedTask();

            if (!await navigationCompletedTask)
            {
                _toastPresenter.ShowAsync($"Cannot reopen clear back stack {openedViewModelInfo.ViewModel.GetType().Name}", ToastDuration.Short);
            }
        }
        private async Task TryOpenAsync(OpenedViewModelInfo openedViewModelInfo)
        {
            var navigationCompletedTask = openedViewModelInfo.ViewModel.ShowAsync().GetNavigationCompletedTask();

            if (!await navigationCompletedTask)
            {
                _toastPresenter.ShowAsync($"Cannot reopen {openedViewModelInfo.ViewModel.GetType().Name}", ToastDuration.Short);
            }
        }
 private async Task TryImmediateCloseAsync(OpenedViewModelInfo openedViewModelInfo)
 {
     if (!await openedViewModelInfo.ViewModel.CloseAsync(new DataContext {
         { NavigationConstants.ImmediateClose, true }
     }))
     {
         _toastPresenter.ShowAsync($"Cannot close {openedViewModelInfo.ViewModel.GetType().Name}", ToastDuration.Short);
     }
 }
        public IList <MenuItem> GetMenuItems(OpenedViewModelInfo info)
        {
            if (info.ViewModel == null)
            {
                return(null);
            }
            var items = new List <MenuItem>();
            Func <IViewModel, object, bool> canClose;

            if (!info.ViewModel.Settings.Metadata.TryGetData(ViewModelConstants.CanCloseHandler, out canClose) || canClose(info.ViewModel, null))
            {
                items.Add(new MenuItem("Try Close", TryCloseCommand, info));
                items.Add(new MenuItem("Try Immediate Close", TryImmediateCloseCommand, info));
            }
            items.Add(new MenuItem("Try Reopen", TryOpenCommand, info));
            if (info.NavigationType == NavigationType.Page)
            {
                items.Add(new MenuItem("Try Reopen Clear Back Stack", TryOpenClearBackStackCommand, info));
            }
            return(items);
        }
 public MenuItem(string name, ICommand command, OpenedViewModelInfo commandParameter)
 {
     Name             = name;
     Command          = command;
     CommandParameter = commandParameter;
 }