private async Task <IMvxViewModel> NavigateRoute(string path) { KeyValuePair <Regex, Type> entry; if (!TryGetRoute(path, out entry)) { return(null); } var regex = entry.Key; var match = regex.Match(path); var paramDict = BuildParamDictionary(regex, match); var viewModelType = entry.Value; MvxViewModelRequest request = null; IMvxViewModel viewModel; if (viewModelType.GetInterfaces().Contains(typeof(IMvxNavigationFacade))) { var facade = (IMvxNavigationFacade)Mvx.IocConstruct(viewModelType); try { var facadeRequest = await facade.BuildViewModelRequest(path, paramDict); viewModel = (IMvxViewModel)Mvx.IocConstruct(facadeRequest.ViewModelType); if (facadeRequest == null) { Mvx.TaggedWarning("MvxNavigationService", "Facade did not return a valid MvxViewModelRequest."); return(null); } } catch (Exception ex) { Mvx.TaggedError("MvxNavigationService", "Exception thrown while processing URL: {0} with RoutingFacade: {1}, {2}", path, viewModelType, ex); return(null); } } else { viewModel = (IMvxViewModel)Mvx.IocConstruct(viewModelType); } request = new MvxViewModelInstanceRequest(viewModel) { ParameterValues = new MvxBundle(paramDict).SafeGetData() }; _viewDispatcher.ShowViewModel(request); return(viewModel); }
private async Task SignOutUser() { _dispatcher.RequestMainThreadAction(() => { _dispatcher.ShowViewModel(new MvxViewModelRequest(typeof(LoginViewModel), null, null, MvxRequestedBy.UserAction)); }); Mvx.Resolve <IAccountService>().SignOut(); await Mvx.Resolve <IOrderWorkflowService>().PrepareForNewOrder(); }
public void Alert(string message, string title) { var paramiters = new Dictionary <string, string> { { nameof(message), message } }; _ViewDispatcher.ShowViewModel(new MvxViewModelRequest(typeof(AlertViewModel), new MvxBundle(paramiters), null, null)); }
public async Task RouteAsync(string url, MvxRequestedBy requestedBy) { KeyValuePair <Regex, Type> entry; if (!TryGetRoute(url, out entry)) { return; } var regex = entry.Key; var match = regex.Match(url); var paramDict = BuildParamDictionary(regex, match); var viewModelType = entry.Value; MvxViewModelRequest request = null; if (viewModelType.GetInterfaces().Contains(typeof(IMvxRoutingFacade))) { var facade = (IMvxRoutingFacade)Mvx.IocConstruct(viewModelType); try { request = await facade.BuildViewModelRequest(url, paramDict, requestedBy); } catch (Exception ex) { Mvx.TaggedError("MvxRoutingService", "Exception thrown while processing URL: {0} with RoutingFacade: {1}, {2}", url, viewModelType, ex); } if (request == null) { Mvx.TaggedWarning("MvxRoutingService", "Facade did not return a valid MvxViewModelRequest."); return; } } else { request = new MvxViewModelRequest( viewModelType, new MvxBundle(paramDict), null, requestedBy); } _viewDispatcher.ShowViewModel(request); }
protected void NavigateToRequestIfPresent(Intent intent) { // If MvxLaunchData is present, we then know we should navigate to that intent string requestText = intent.GetStringExtra("Request"); if (requestText == null) { return; } IMvxViewDispatcher viewDispatcher = Mvx.IoCProvider.Resolve <IMvxViewDispatcher>(); IMvxNavigationSerializer converter = Mvx.IoCProvider.Resolve <IMvxNavigationSerializer>(); MvxViewModelRequest request = converter.Serializer.DeserializeObject <MvxViewModelRequest>(requestText); viewDispatcher.ShowViewModel(request); }
public void ActivateUser(BitbucketAccount account, Client client) { Accounts.SetActiveAccount(account); Account = account; Client = client; //Set the default account Accounts.SetDefault(account); //Check the cache size CheckCacheSize(account.Cache); //Client.Cache = new GitHubCache(account); // Show the menu & show a page on the slideout _viewDispatcher.ShowViewModel(new MvxViewModelRequest { ViewModelType = typeof(MenuViewModel) }); }
public bool ShowViewModel(MvxViewModelRequest request) { return(_decorated.ShowViewModel(request)); }