Exemplo n.º 1
0
        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;
            });
        }
Exemplo n.º 2
0
        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;
        }
Exemplo n.º 3
0
        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();
        }