示例#1
0
 public IObservable <TD.Message> SendText(TD.Chat chat, TD.InputMessageContent.InputMessageText messageText)
 {
     return(Observable.FromAsync(ct => _agent.ExecuteAsync(new TD.SendMessage
     {
         ChatId = chat.Id,
         InputMessageContent = messageText
     })));
 }
示例#2
0
        public ChatContext(
            Topic topic,
            ChatInteractor chatInteractor,
            MessageSender messageSender
            )
        {
            _topic          = topic;
            _chatInteractor = chatInteractor;
            _messageSender  = messageSender;

            _prependSubscription = _chatInteractor
                                   .Prepends()
                                   .Buffer(TimeSpan.FromSeconds(1), 16)
                                   .Where(list => list.Count > 0)
                                   .ObserveOn(AvaloniaScheduler.Instance)
                                   .Subscribe(ObservePrepends);

            _appendSubscription = _chatInteractor
                                  .Appends()
                                  .Buffer(TimeSpan.FromSeconds(1), 16)
                                  .Where(list => list.Count > 0)
                                  .ObserveOn(AvaloniaScheduler.Instance)
                                  .Subscribe(ObserveAppends);

            _actionSubscription = _chatInteractor
                                  .Actions()
                                  .ObserveOn(AvaloniaScheduler.Instance)
                                  .Subscribe(ObserveActions);

            SendCommand = ReactiveCommand.Create(() =>
            {
                var messageText = new TD.InputMessageContent.InputMessageText
                {
                    Text = new TD.FormattedText
                    {
                        Text = _editorText
                    },
                    ClearDraft = true
                };

                _messageSender
                .SendText(topic.Chat, messageText)
                .Subscribe(ObserveSendResult, ObserveSendError, ObserveSendComplete);
            });

            Entities = new ReactiveList <ChatEntity>();

            _chatInteractor
            .LoadRecent()
            .ObserveOn(AvaloniaScheduler.Instance)
            .Subscribe(ObserveLoadRecent);
        }