public MainWindowViewModel( INavigationManager navigationManager, IMailKitApiManager mailKitApiManager, ISelectedMessageManager selectedMessageManager, IDeleteMessageManager deleteMessageManager) : base("MainWindowViewModel") { Pages = new List <BaseViewModel> { new AuthorizationViewModel(navigationManager, mailKitApiManager), new MainPageViewModel(navigationManager, mailKitApiManager, selectedMessageManager, deleteMessageManager), new ErrorAuthViewModel(navigationManager), new NewMessageViewModel(navigationManager, mailKitApiManager), new ExtendedMessageViewModel(UniqueId.Invalid, navigationManager, mailKitApiManager), new CustomAuthorizationViewModel(navigationManager, mailKitApiManager) }; navigationManager.CurrentPage() .Select(type => Pages.First(x => x.GetType() == type)) .Subscribe(viewModel => { if (viewModel.Name == "ExtendedMessageViewModel") { Pages.RemoveAt(Pages.Count - 1); Pages.Add(new ExtendedMessageViewModel(selectedMessageManager.SelectedMessage, navigationManager, mailKitApiManager)); CurrentPage = Pages.Last(); return; } CurrentPage = viewModel; }); }
public MessageViewModel( IMessageSummary mimeMessage, INavigationManager navigationManager, ISelectedMessageManager selectedMessageManager, IDeleteMessageManager deleteMessageManager) : base("MessageViewModel") { _doubleClick = ReactiveCommand.Create(() => { selectedMessageManager.SelectNewMessage(Id); navigationManager.Navigate(typeof(ExtendedMessageViewModel)); }); _deleteMessage = ReactiveCommand.Create(() => { deleteMessageManager.Delete(Id); }); Snippet = mimeMessage.NormalizedSubject; From = mimeMessage.Envelope.From.ToString(); Date = mimeMessage.Envelope.Date.ToString(); Id = mimeMessage.UniqueId; }
public MainPageViewModel( INavigationManager navigationManager, IMailKitApiManager mailKitApiManager, ISelectedMessageManager selectedMessageManager, IDeleteMessageManager deleteMessageManager) : base("MainPageViewModel") { _navigationManager = navigationManager; _mailKitApiManager = mailKitApiManager; _selectedMessageManager = selectedMessageManager; _deleteMessageManager = deleteMessageManager; _writeMessage = ReactiveCommand.Create(() => {}); _writeMessage.Select(unit => typeof(NewMessageViewModel)) .Subscribe(navigationManager.Navigate); navigationManager.CurrentPage() .Subscribe(async vm => await LoadMessages(vm)); _deleteMessageManager.MessageDeletedObservable.Subscribe(id => { var message = Messages.Items.FirstOrDefault(model => model.Id == id); if (message == null) { return; } Messages.Edit(list => list.Remove(message)); }); Messages.Connect() .ObserveOn(RxApp.MainThreadScheduler) .Bind(out _messageCollection) .Subscribe(); }